Commit Graph

2422 Commits

Author SHA1 Message Date
scott nelson
9996a79361 Fix OverridenPropertyNodeID Path collision when re-instantiate is triggered
#jira UE-218007
#rb Maxime.Mercier

[CL 34532236 by scott nelson in ue5-main branch]
2024-06-20 12:09:20 -04:00
andrew rodham
c191be9bbb Added TBaseStructure specialization for FFrameRate
[CL 34526989 by andrew rodham in ue5-main branch]
2024-06-20 09:36:03 -04:00
devin doucette
a00452a140 Make SerializeForLog overloads consistent in their declaration as friends
#rb Zousar.Shaker
#rnx

[CL 34511990 by devin doucette in ue5-main branch]
2024-06-19 16:02:40 -04:00
per larsson
129585ee43 Added option -CookSoftPackageReferences to save soft package references when cooking
#rb Matt.Peters, Paul.Chipchase
#rnx

[CL 34503130 by per larsson in ue5-main branch]
2024-06-19 12:16:51 -04:00
matt breindel
c43ad58cd1 Adding support for a new type of FCoreRedirect, Type_Asset which can be used in place of UObjectRedirector.
[REVIEW] [at]*ben.ziegler [at]francis.hurteau [at]kevin.macaulayvacher [at]matt.peters
#rb Francis.Hurteau, kevin.macaulayvacher, Matt.Peters

[CL 34470455 by matt breindel in ue5-main branch]
2024-06-18 13:52:50 -04:00
andrew phillips
478e8d378f Added static methods to SoftObjectPath add information at the callsite.
These should used instead of constrcutors.

#jira UE-204742
#rb Steve.Robb

[CL 34453699 by andrew phillips in ue5-main branch]
2024-06-18 06:23:33 -04:00
ben woodhouse
2ea61ce0c6 Switch to CSV_PROFILER_STATS instead of CSV_PROFILER for various profiling subsystems. This allows them to be compiled out when CSV_PROFILER_MINIMAL is defined.
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]
2024-06-14 18:16:47 -04:00
jordan hoffmann
7f04a77c76 - Changed "PropertiesSetBySerialization" to "SerializedProperties" and made the flag get set even for properties that were skipped during serialization. This way it's a better reflection of which properties were in the old class
- 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]
2024-06-14 17:29:03 -04:00
devin doucette
584ea89945 Increased FProperty::IndexInOwner from uint16 to int32 to support types with many properties
#rb Francis.Hurteau

[CL 34372792 by devin doucette in ue5-main branch]
2024-06-14 11:32:26 -04:00
neil henning
4d8c1748d2 Make VerseTestScriptCmd safe when using the retry-transaction testing modes of AutoRTFM.
#okforversepublic

[CL 34343679 by neil henning in ue5-main branch]
2024-06-13 12:31:08 -04:00
kevin macaulayvacher
357c98fb83 - UObject::Rename will always remove a mismatching linker unless explicitly told not to via a new rename flag REN_AllowPackageLinkerMismatch. This is meant to be distinct from the deprecated REN_ForceNoResetLoaders as the intent is inverted: There are few reasons to not want to reset loaders when there is a mismatch between package and linker, and when there is no mismatch, we do not want Rename to implicitly resetloaders (we no longer do as of 33136565). The only use case where mismatched linkers is desired is when objects are _temporarily_ renamed to belong to a staging package and desire to have the object continue loading when the object is moved back to the matching linker package (commonly done during blueprint reinstancing). In such a case, the new flag acknowledging the intentional mismatch is meant to be used.
- 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]
2024-06-12 08:47:36 -04:00
bob tellez
367513fbf9 Unshelved from Robert.Millar:
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]
2024-06-12 01:23:47 -04:00
alex kahn
19f70376d6 [Backout] - CL34172564 - recommitting to see if the issue persists
[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]
2024-06-06 17:47:28 -04:00
grant medine
b577b60203 [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 34172805 by grant medine in ue5-main branch]
2024-06-06 16:23:34 -04:00
neil henning
0aec5aa6ed Fix the UObject transactional annotation bug with the fix coming from Robert Manuszewski.
[FYI] robert.manuszewski
#rb Brandon.Schaefer
#rnx

[CL 34169736 by neil henning in ue5-main branch]
2024-06-06 15:23:52 -04:00
matt peters
1a04a479f2 IncrementalCook: Add UE::Cook::IDeterminismHelper to write diagnostics for cook indeterminism and false positive iterative skips.
[RN] Minor, Cooking
#rb Zousar.Shaker

[CL 34153566 by matt peters in ue5-main branch]
2024-06-06 07:46:50 -04:00
matt peters
cf57cba0cd IncrementalCook: Add ObjectRedirectors recorded by the RedirectCollector to the RedirectionSummary per package that is maintained by CoreRedirects. SoftObjectPaths are swapped (without ever being resolved) during SavePackage to point to the redirected locations, so if package A has a softobjectpath to B and B is redirected to C, the softobjectpath text in A's cooked output needs to modified to C, and we therefore need to recook A.
#rnx
#rb Zousar.Shaker

[CL 34152869 by matt peters in ue5-main branch]
2024-06-06 07:05:15 -04:00
maxime mercier
5bc0dbbd7f Take 2 at disabling the overridable manager in non editor builds
#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]
2024-06-05 12:38:21 -04:00
tim smith
d0c49e4189 Remove improper ensures in Verse GC integration.
Allow UE GC to also be triggered by Verse needing a GC.

#rb Robert.Manuszewski

[CL 34121610 by tim smith in ue5-main branch]
2024-06-05 08:56:22 -04:00
jamie dale
de21d463aa Deprecated calling AddSaveOverride on the context given to UObject::PreSave
You should override UObject::CollectSaveOverrides and call AddSaveOverride on its context instead

[FYI] Matt.Peters

[CL 34107015 by jamie dale in ue5-main branch]
2024-06-04 17:07:24 -04:00
matt breindel
76ade144ad Making FCoreRedirects thread safe and removing some of the changes in CL 33988617 that were meant to account for FCoreRedirects not being thread safe. Performance appears to be no worse than prior to CL 33988617. Total time for the locks appears to be <100ms over the entire editor startup.
#jira UE-216174
[REVIEW] [at]*matt.peters [at]francis.hurteau [at]devin.doucette
#rb Matt.Peters

[CL 34102810 by matt breindel in ue5-main branch]
2024-06-04 14:59:45 -04:00
jamie dale
2335b81d94 Pass the save overrides through to FExportsValidationContext
#rb Francis.Hurteau
#rnx

[CL 34096553 by jamie dale in ue5-main branch]
2024-06-04 12:19:10 -04:00
brandon schaefer
ab436c1f45 Fix UObject getting marked as garbage during a transaction hitting atomic code
Move this to after the transaction

#rb neil.henning

[CL 34073573 by brandon schaefer in ue5-main branch]
2024-06-03 15:09:06 -04:00
jamie dale
17892d8a34 Split the logic to collect save overrides out of PreSave so that it can be queried by anything that needs to understand save overrides without invoking the other side effects of PreSave
#rb Matt.Peters

[CL 34073107 by jamie dale in ue5-main branch]
2024-06-03 14:55:36 -04:00
phillip kavan
3493525977 Create a property bag placeholder type during subobject reinstancing if the previous subobject's type is a class compiler artifact w/ no reinstanced target.
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]
2024-05-31 17:40:53 -04:00