neil henning
af6f770b16
Make weak semantics of shared pointers work in AutoRTFM (and add tests).
...
[CL 31513038 by neil henning in ue5-main branch]
2024-02-15 03:32:34 -05:00
neil henning
0f7a05117a
Start to test every AutoRTFM use in UE core with a unit test to aid in preventing regressions.
...
[CL 31331328 by neil henning in ue5-main branch]
2024-02-09 04:36:47 -05:00
neil henning
ddd140987c
Make the AutoRTFM compiler support static local initializers.
...
[CL 31168469 by neil henning in ue5-main branch]
2024-02-05 05:35:01 -05:00
neil henning
870bc295d4
Document the entire AutoRTFM user-facing API and deprecate a bunch of functions that most users should not use (move these to the ForTheRuntime namespace to hopefully make it clear what shouldn't be called by those of us not working on the runtime!).
...
#rb michael.nicolella
[CL 30655391 by neil henning in ue5-main branch]
2024-01-17 05:59:25 -05:00
neil henning
52d4f4c4a5
Rename OpenCommit -> OnCommit and OpenAbort -> OnAbort to make it more obvious to users when the code executes.
...
#rb Brandon.Schaefer
[CL 30500167 by neil henning in ue5-main branch]
2024-01-09 05:11:46 -05:00
brandon schaefer
3a200d0b65
Move the global GAutoRTFMRuntimeEnabled to only be exposed to functions
...
Move GAutoRTFMRuntimeEnabled to be an enum with 3 states:
Disabled
Enabled
ForcedDisabled
ForcedDisabled will prevent this from ever being allowed to be turned on
#rb neil.henning
[FYI] Michael.Nicolella
[CL 30155356 by brandon schaefer in ue5-main branch]
2023-12-06 10:21:01 -05:00
neil henning
1e1123b24b
Add some UObject tests to AutoRTFMTests.
...
#rb Robert.Manuszewski
[CL 29805974 by neil henning in ue5-main branch]
2023-11-17 09:02:34 -05:00
brandon schaefer
692c32fdee
Disable AutoRTFM runtime by default
...
Enable Tests to default AutoRTFM on
#rb Brandon.Schaefer
[FYI] Michael.Nicolella, Neil.Henning
[CL 29724121 by brandon schaefer in ue5-main branch]
2023-11-14 15:52:36 -05:00
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