- default construct now creates a box marked as invalid
- added ENABLE_UNINITIALIZED_BOX_DIAGNOSTIC to force Min and Max values to NaN and to perform disagnostic checks at runtime.
- updated some constructors to be constexpr
- added FBox(ENoInit) constructor that creates a box without any initialization
- added DiagnosticCheck to detect cases where a default initialized is used with values for Min and Max still set to NaN (ENABLE_UNINITIALIZED_BOX_DIAGNOSTIC = 1) or to detect introduce NaN during computation (ENABLE_NAN_DIAGNOSTIC = 1)
Goals with this change since the implementation is currently not consistent regarding the IsValid flag:
1- Initialize IsValid flag to 0 in default constructor so 'operator+=' can be reliable when used on a default initialized FBox. DiagnosticCheck can then be used when box is marked as valid.
2- Since it is already possible for user to construct a FBox, set Min and Max (without marking it as Valid) then pass it around or perform other operations calls to DiagnosticCheck are added when a box is constructed (mainly to catch cases when a NaN initialized box is used to create another box: ExpandBy, ShiftBy, MoveTo, etc.). Otherwhise DiagnosticCheck is used in methods where Min or Max are used without consideration of the IsValid flag (GetCenter, GetExtent, GetSize, etc.)
#rb maxime.mercier
#rb matt.peters
[CL 26904115 by yoan stamant in ue5-main branch]
- Allow for projects to have ConfigRedirects.ini files - it was not oringally allowed but a licensee found that it can be needed for User saved ini files that can't be updated, so the redirects is useful for a licensee to specify
- Fixed a copy/paste error in a log about ConfigRedirects
#jira UE-188860,UE-165743
[CL 26902954 by josh adams in ue5-main branch]
Factor some of the arithmetic operators out of TGuardedInt into AddAndCheckForOverflow et al functions in FPlatformMath so they can use the __builtin_*_overflow functions on clang that compile to much more efficient code than the portable C code does in most cases.
#rb Fabian.Giesen, Johan.Torp
[CL 26880341 by andrew scheidecker in ue5-main branch]
- add a new shader platform (SP_METAL_SIM) to support iOS Simulator specific compilation requirements
- update iOS sim #define WITH_SIMULATOR to WITH_IOS_SIMULATOR
#jira UE-168571
#rb carl.lloyd
[CL 26850475 by adam kinge in ue5-main branch]
* it's user's decision and responsibility to manage cancellation token lifetime, to check cancellation token, return early, to do any required cleanup, or to do nothing at all
* no way to cancel a task to skip its execution completely
* waiting for a canceled task is blocking until its prerequisites are completed and the task is executed and completed, basically same as for not canceled tasks except a canceled one can quit execution early
* canceling a task doesn't affect its subsequents (unless they use the same cancellation token instance)
#rb danny.couture, justin.marcus, per.larsson
[CL 26844767 by andriy tylychko in ue5-main branch]
Change GUID SessionId in FApp to base it on the SessionObjectId to make it easier to correlate session ids in zenserver
#rb stefan.boberg zousar.shaker
[CL 26841373 by dan engelbrecht in ue5-main branch]
- Enabled cpu scope tracing of object names (blueprints, functions) by default when app is not running as a commandlet (still requires "cpu" trace channel and -statnamedevents to be enabled). Enabling AssetLoadTime trace channel will enable tracing of object names also in commandlets (ex. cooking).
- Improved performance when tracing "statnamedevents" cpu scopes (by using a new optimized code path that uses an FName stat id together with a TCHAR* descriptive name).
#rb Matt.Peters
[CL 26815377 by ionut matasaru in ue5-main branch]
Testing libpas's perf as a malloc already revealed some useful data about how the allocator performs on Windows (like that reserving and committing memory in separate syscalls is surprisingly expensive). Even if we don't use libpas as a UE malloc, running it in that mode is likely to reveal opportunities for improvement in those parts of libpas that the Verse GC uses.
The biggest change to libpas is introducing the global physical page cache, which is a heap of memory that starts out committed but gets tracked by the large sharing pool - so it will get decommitted after 300ms of nonuse. This means that if you're growing the heap, we allocate committed memory (single syscall to reserve and commit), but we still have a path to decommitting alignment slop. This made a 5-10% difference in VerseTestVMCmd's running time.
Resubmitting after making Core only depend on libpas on Windows (since for now, I only expose libpas as a malloc on Windows).
#rb andriy.tylychko
#rb andrew.scheidecker
#rb danny.couture
[CL 26811655 by phil pizlo in ue5-main branch]
[FYI] phil.pizlo
Original CL Desc
-----------------------------------------------------------------
Move libpas out of restricted and make it available as a malloc on Windows.
Testing libpas's perf as a malloc already revealed some useful data about how the allocator performs on Windows (like that reserving and committing memory in separate syscalls is surprisingly expensive). Even if we don't use libpas as a UE malloc, running it in that mode is likely to reveal opportunities for improvement in those parts of libpas that the Verse GC uses.
The biggest change to libpas is introducing the global physical page cache, which is a heap of memory that starts out committed but gets tracked by the large sharing pool - so it will get decommitted after 300ms of nonuse. This means that if you're growing the heap, we allocate committed memory (single syscall to reserve and commit), but we still have a path to decommitting alignment slop. This made a 5-10% difference in VerseTestVMCmd's running time.
#rb andriy.tylychko
#rb andrew.scheidecker
#rb danny.couture
[CL 26795519 by phil pizlo in ue5-main branch]
Testing libpas's perf as a malloc already revealed some useful data about how the allocator performs on Windows (like that reserving and committing memory in separate syscalls is surprisingly expensive). Even if we don't use libpas as a UE malloc, running it in that mode is likely to reveal opportunities for improvement in those parts of libpas that the Verse GC uses.
The biggest change to libpas is introducing the global physical page cache, which is a heap of memory that starts out committed but gets tracked by the large sharing pool - so it will get decommitted after 300ms of nonuse. This means that if you're growing the heap, we allocate committed memory (single syscall to reserve and commit), but we still have a path to decommitting alignment slop. This made a 5-10% difference in VerseTestVMCmd's running time.
#rb andriy.tylychko
#rb andrew.scheidecker
#rb danny.couture
[CL 26795044 by phil pizlo in ue5-main branch]
Prevent infinite recursion by keeping a set of visited process ids (UE-186400).
Don't kill the whole tree when KillTree is false (fallout from 19196914).
Close previously leaking snapshot and child process handles.
#jira UE-186400
#rb martin.ridgers
[CL 26769240 by pj kack in ue5-main branch]