As part of this change we also promote dynamic resolution and IO/PackageQueueDepth stats to Minimal since they're important for high level performance reporting.
Also fix up a few places that were redundantly using #if CSV_PROFILER around CSV macros.
#rb mickael.gilabert
[CL 34386798 by ben woodhouse in ue5-main branch]
- removed GMarkPropertiesSetBySerialization and added bTrackSerializedProperties flag to FUObjectSerializeContext to avoid race conditinons
#jira UE-217800
#rb Devin.Doucette
[CL 34385324 by jordan hoffmann in ue5-main branch]
- Any code causing a linker mismatch needs to explicitly clear loading flags for their object to avoid asserting. This is to make the intention clear that rename will make loading correctly impossible when moving the object to a different linker unintentionally. So either clear the loading flags of the object (i.e. finish loading via load calls such as ConditionalPostLoad) or forcibly allow mismatching via the new flag.
- When marking an export as invalid in FLinkerLoad::InvalidateExport() we now also clear loading flags since it is wasteful to load invalid objects.
- Exports marked as invalid are no longer reset to be valid when the linker is reset for the object instance. This is to prevent reloading invalid objects when re-using a linker already resident in memory if a subsequent package load is requested.
- When UStruct upgrades UFields to FFields, the UStruct objects are marked as invalid to prevent reloading the objects unnecessarily
- Fixes an issue where since Rename can clear the linker for mismatched types, any calls to FLinkerLoad::InvalidateExport needs to be moved before the rename operation to be effective.
- CollectUnreachableObjects will no longer mark unreachable objects as invalid in the linkerloader. That code would mark objects as invalid until the linker is destroyed which incorrectly assumed would happen soon. If however a load for the same package occurs before the linker is destroyed, the in-memory linker would be re-used keeping the marked exports as invalid so those exports would not be loaded (even though they should have been).
#jira UE-212466 UE-214849
#rb Francis.Hurteau, Michael.Galetzka
[RN] UObject::Rename will always remove the renamed object's linker if the rename moves the object into a different package. As a result, any renames occuring while an object is loading will now assert instead of leading to hard to diagnose crashes long after the Rename call has completed. If renaming to a different package is intentional and the linker should not be cleared, the new flag REN_AllowPackageLinkerMismatch can be used to prevent clearing linkers on the object even though the linker is for a different package than the package has been renamed to be part of.
[CL 34304935 by kevin macaulayvacher in ue5-main branch]
Do not cache weak pointer in persistent object pointer if resolving to a being-loaded object on the async loading thread
[CL 34299447 by bob tellez in ue5-main branch]
[FYI] grant.medine
Original CL Desc
-----------------------------------------------------------------
[Backout] - CL34169473
[FYI] neil.henning
Original CL Desc
-----------------------------------------------------------------
Fix the UObject transactional annotation bug with the fix coming from Robert Manuszewski.
[FYI] robert.manuszewski
#rb Brandon.Schaefer
#rnx
[CL 34176886 by alex kahn in ue5-main branch]
[FYI] neil.henning
Original CL Desc
-----------------------------------------------------------------
Fix the UObject transactional annotation bug with the fix coming from Robert Manuszewski.
[FYI] robert.manuszewski
#rb Brandon.Schaefer
#rnx
[CL 34172805 by grant medine in ue5-main branch]
#rb Yoan.StAmant
#tests Tested on 30_20 branch, Ran overidable serialization Unittests, Ran overidable serialization Utests,.20 branch.20..20 on a working UEFN builds, Ran Overridable Serialization Unittests
[CL 34129223 by maxime mercier in ue5-main branch]
You should override UObject::CollectSaveOverrides and call AddSaveOverride on its context instead
[FYI] Matt.Peters
[CL 34107015 by jamie dale in ue5-main branch]
Notes:
- Currently this path is disabled by default. Requires IDO and placeholder type serialization features to be enabled for the subobject instance.
- When enabled, this ensures that edits are preserved across reinstancing, and that those edits will be serialized along with the outer instance as a tagged property set, so that there is no loss of user data.
#jira UE-207686
#rb Jordan.Hoffmann
[CL 34047440 by phillip kavan in ue5-main branch]