Files
UnrealEngineUWP/Engine/Source/Runtime/CoreUObject/Private/UObject
thomas sarkanen 45b9547da9 Anim blueprints now dont participate in unneeded dependency compilation
This is because dependent BPs at least need a re-link to pick up layout changes in their property access 'bytecode'.

The also requires some re-arranging of where sparse class data gets created, linked and patched.
 - Previously sparse class data was patched in the linker at the point of re-creation, but this meant that stale TRASHCLASS sparse class data was could still be in the struct hierarchy when we are BATCH compiling (when batch compiling, each compilation phase is performed in turn for all compiling/dependent BPs). This change removes the sparse class data when the class is sanitized prior to full compilation and stashes it for later patching. This ensures that sparse class data doesnt get linked into stale structs that can then get GCed later, invalidating property links.
- Sparse class data is now linked when its containing ABPGC is linked. It also ensures that the hierarchy of sparse class data mirrors that of the ABPGC. The 'mirror hierarchy' is currently only an invariant of anim blueprints.

Part of this change alters the behavior of UClass::SetSparseClassDataStruct when passed a NULL value. This will now ensure that subclasses are left in a valid state when this occurs. Previously if sparse class data was nulled-out, subclasses would be left pointing at a potentially stale struct in the case where the struct was being regenerated.

Added an override point for subsystems to participate in Link() and made sure property access offsets are patched there, to catch cases where dependent BPs get either a bytecode-only or link-only compile

#jira UE-136035 - Unexpected results from Property Access after changing Lyra animbp
#jira UE-130965 - Multiple crashes involving anim BP sparse class data, inheritance & GC
#rb Phillip.Kavan,Matt.Peters
#preflight 61af321f470c73a8c4933ff5

#ROBOMERGE-AUTHOR: thomas.sarkanen
#ROBOMERGE-SOURCE: CL 18393342 in //UE5/Release-5.0/... via CL 18393349
#ROBOMERGE-BOT: STARSHIP (Release-Engine-Staging -> Release-Engine-Test) (v896-18170469)

[CL 18393353 by thomas sarkanen in ue5-release-engine-test branch]
2021-12-07 05:32:13 -05:00
..
2021-08-10 06:50:03 -04:00
2021-11-25 11:48:06 -05:00
2021-08-10 06:50:03 -04:00
2021-11-22 13:02:48 -05:00
2021-11-22 13:02:48 -05:00
2021-11-18 16:49:05 -05:00