Commit Graph

25 Commits

Author SHA1 Message Date
neil henning
2d871e9540 Add a cascading abort to AutoRTFM to abort an entire nest of transactions.
[FYI] michael.nicolella

[CL 27705122 by neil henning in ue5-main branch]
2023-09-08 04:08:50 -04:00
neil henning
1fce643050 Detect when we try to run a new transaction nest from within an open-commit or open-abort, and abort if so.
[CL 27437726 by neil henning in ue5-main branch]
2023-08-29 03:43:55 -04:00
neil henning
4ee0dfd67b Add a [[clang::noautortfm]] attribute to allow marking of functions that should not be cloned for AutoRTFM.
[CL 26149499 by neil henning in ue5-main branch]
2023-06-21 10:42:37 -04:00
neil henning
b189676d68 Fix that in AutoRTFM we need open aborts inside a nested transaction to be appended to the parent in reverse order.
[CL 26015685 by neil henning in ue5-main branch]
2023-06-15 11:20:21 -04:00
neil henning
54e1348d9c Fix for AutoRTFM cloning functions it shouldn't when using unity builds.
[CL 25891296 by neil henning in ue5-main branch]
2023-06-09 09:44:26 -04:00
neil henning
08fc7777a6 Remove DeferUntilCommit / DeferUntilAbort from the AutoRTFM API (use OpenCommit / OpenAbort instead).
#preflight 646c6afd1b241f0748614b9d

[CL 25579609 by neil henning in ue5-main branch]
2023-05-23 07:48:03 -04:00
neil henning
76d1859b4e Use the new AutoRTFM instrumentation path which lets us cut down on the number of modules we need to compile with transactional support.
#preflight 64677cc6434f5536a35d2889

[CL 25548137 by neil henning in ue5-main branch]
2023-05-19 13:50:23 -04:00
neil henning
87ba132d21 [autortfm] Use UE_LOG with a new LogAutoRTFM category for all our logging.
#preflight 645bb3818f4d53ff229fb9f4

[CL 25423338 by neil henning in ue5-main branch]
2023-05-11 05:22:24 -04:00
brandon schaefer
547593db87 Move to adding a TargetRules bool for using AutoRTFM Compiler
#rb Neil.Henning
[FYI] Michael.Nicolella
#preflight 6421fdc6973e609670b97622

[CL 24824162 by brandon schaefer in ue5-main branch]
2023-03-28 15:14:44 -04:00
neil henning
9352673963 Make the AutoRTFM LLVM compiler pass not elide transactional calls to AutoRTFM::Open, and only elide the non-transactional ones.
#preflight 64230d4d973e609670137dd9

[CL 24824080 by neil henning in ue5-main branch]
2023-03-28 15:07:48 -04:00
neil henning
2e2588c428 Add tests for a bunch of cstring functions in AutoRTFM.
#preflight 64229fe65e52099fe3b402d1

[CL 24816140 by neil henning in ue5-main branch]
2023-03-28 05:57:35 -04:00
brandon schaefer
8344a94621 Fix compiler errors with -nopch, to include Catch you need to use Catch2Includes to prevent catch headers for including windows to before our overrides
#rb none
[FYI] Neil.Henning
#preflight none

[CL 24790379 by brandon schaefer in ue5-main branch]
2023-03-24 19:09:38 -04:00
brandon schaefer
b27291844a Fix nodiscard warnings for clang
#rb Jason.Weiler, Michael.Nicolella
#preflight 641dedab973e609670ea12ed

[CL 24789573 by brandon schaefer in ue5-main branch]
2023-03-24 18:18:15 -04:00
neil henning
92b421ce5a Add a test with a dumb little VM showing how the AutoRTFM calls will work.
#preflight 641d94bc974dfaa53ce0ed85

[CL 24780579 by neil henning in ue5-main branch]
2023-03-24 12:04:10 -04:00
michael nicolella
2fe7eda1f0 autortfm:
- remove explicit operator new/delete instrumentation. these operators can be instrumented directly by the application by overriding them, otherwise calling one from transactional code will abort when trying to find the instrumented version
- add auto rtfm instrumentation to the FMemory allocator
- remove 'will_deallocate' since it does nothing and required the runtime to be able to get the alloced size which isn't easy to do from the runtime
- Transact now executes the work item when it's compiled away, assuming that we will wrap this around existing code that we still want to execute when non-instrumented

#preflight 641cc32b973e60967084811d

[CL 24773875 by michael nicolella in ue5-main branch]
2023-03-23 23:28:18 -04:00
jason weiler
7a7d71868f First go at the AutoRTFM Open API for the VM. This is definitely crunchy.
Adds StartTransaction, RecordOpenWrite, WriteMemory, and some others.
Replaces Abort with AbortTransaction

#preflight 641b559da6092dfb8dc39cf3

[CL 24756491 by jason weiler in ue5-main branch]
2023-03-22 19:46:30 -04:00
neil henning
597523122e Harden the AutoRTFMification LLVM pass against a few obvious compiler bugs. The removed files were all dead as they've been moved to the public area in a previous CL.
#preflight 6419dab132723d4a20a7cbb4

[CL 24739037 by neil henning in ue5-main branch]
2023-03-21 16:37:54 -04:00
brandon schaefer
f830c75c8f Re-enable disabling unity and remove including LaunchEngineLoop.cpp many times
#rb none
#preflight none

[CL 24725790 by brandon schaefer in ue5-main branch]
2023-03-20 18:39:52 -04:00
brandon schaefer
fc2d361cf0 Re-enable unity to fix linker errors
#rb none
#preflight none

[CL 24725698 by brandon schaefer in ue5-main branch]
2023-03-20 18:36:06 -04:00
brandon schaefer
688e678773 Disable Unity by default for AutoRTFMTests
#rb none
[FYI] Neil.Henning
#preflight none

[CL 24723935 by brandon schaefer in ue5-main branch]
2023-03-20 17:16:49 -04:00
brandon schaefer
3e8cf406a6 Add a header to ensure we include our MinWindows and Windows type headers *before* catch_amalgamated.hpp includes its Windows.h stuff
Fix GraphBenchmark shadow warnings

#rb Neil.Henning, Jason.Weiler
#preflight none

[CL 24723829 by brandon schaefer in ue5-main branch]
2023-03-20 17:13:55 -04:00
brandon schaefer
0bcdb88774 Fix missing semi-colon
#preflight none

[CL 24702034 by brandon schaefer in ue5-main branch]
2023-03-18 01:40:34 -04:00
brandon schaefer
e339abb40b Dont enable ClangRTFM when doing GPF
#rb none
#preflight none

[CL 24702031 by brandon schaefer in ue5-main branch]
2023-03-18 01:40:04 -04:00
brandon schaefer
078d449282 Fix include warnings issue
[FYI] Neil.Henning
#preflight none

[CL 24702026 by brandon schaefer in ue5-main branch]
2023-03-18 01:39:43 -04:00
brandon schaefer
3b859ae861 Setup initial UE/UBT standalone program AutoRTFMTests
#rb Neil.Henning
#preflight none

[CL 24701555 by brandon schaefer in ue5-main branch]
2023-03-17 23:06:47 -04:00