Classes derived from VObject should be allocated using VObject::AllocateFastCell to ensure the right layout.
This does not address the chicken-and-egg situation with VClass described in SOL-6150, but it is a step in that direction.
#rb Markus.Breyer
[CL 32439925 by russell johnston in ue5-main branch]
Notes:
- For placeholder-typed objects, TObjectPtr<UObject> is considered to be type safe since placeholder types are based on UObject.
- This means we can avoid having to check for and indirectly resolve placeholders via the ptr's internal object handle in these cases.
#jira UE-209831
#rb Francis.Hurteau, Zousar.Shaker
[CL 32434610 by phillip kavan in ue5-main branch]
The goal here is that if a UObject is constructed during a transaction, and then decides to abort, we leave the UObject in an intact-enough state that the GC can come along later to destruct and deallocate the object.
To that end, we move StaticConstructObject_Internal back to instrumented, but execute the UObject malloc and UObjectBase constructor uninstrumented. Then later when the derived constructor runs over the same memory, we run the constructor instrumented, except when it gets down to the UObject constructor level, we run that uninstrumented.
If we abort, the UObject memory will not be freed by the AutoRTFM runtime, the destructor will not be called, but the memory will be rolled back to what the UObject and base constructors initialize it as, so it should be a bare bones object ready for destruction and deallocation.
- added a new attribute to the compiler (autortm_always_open) so we can annotate functions themselves (like constructors) to ensure the entire function isn't instrumented (including code we can't normally wrap, like when the constructor writes the vtable pointer)
#rb Brandon.Schaefer, neil.henning
[CL 32426570 by michael nicolella in ue5-main branch]
- Move PreGarbageCollect broadcast outside of the GC lock because it's too easy for user code to cause deadlocks by calling into other part of the engine.
- Introduce a new event when GC has started and the GC lock is held
- Use the new event for zenloader as it provides thread-safety guarantees with async loading thread
#rb Robert.Manuszewski
[CL 32362280 by danny couture in ue5-main branch]
- add PushOnAbortHandler/PopOnAbortHandler duo so you can register a handler that can later be unregistered. Useful for push/pop semantics where we don't need to do anything OnAbort after the pop
- deploy usage to FHashTableLock
#rb neil.henning
[CL 32333200 by michael nicolella in ue5-main branch]
Since all properties are loose, they require an IDO to be serialized back out at save time.
#rb Francis.Hurteau, jordan.hoffmann
[CL 32319056 by phillip kavan in ue5-main branch]
[FYI] danny.couture
Original CL Desc
-----------------------------------------------------------------
[GarbageCollect]
- Move PreCollect broadcast outside of the lock because it's too easy for user code to cause deadlocks by calling into other part of the engine.
#jira UE-209921
#rb Robert.Manuszewski, Matt.Breindel
[CL 32314039 by keaton stewart in ue5-main branch]
Making UObject::SaveConfig fall back to the default behavior if a set property has one or fewer elements to match the load behavior
[REVIEW] [at]josh.adams
#tests saving and loading 0, 1, and 2 entry struct set properties
[CL 32310744 by spencer melnick in ue5-main branch]