Commit Graph

125 Commits

Author SHA1 Message Date
stefan boberg
285a908f86 Copying //UE4/Dev-Core to Dev-Main (//UE4/Dev-Main)
#rb none

#ROBOMERGE-OWNER: ben.marsh
#ROBOMERGE-AUTHOR: stefan.boberg
#ROBOMERGE-SOURCE: CL 6815521 in //UE4/Main/...
#ROBOMERGE-BOT: BUILD (Main -> Dev-Build) (v365-6733468)

[CL 6821265 by stefan boberg in Dev-Build branch]
2019-06-03 19:09:16 -04:00
Stefan Boberg
8607ecb30d Copying //UE4/Dev-Core to Dev-Main (//UE4/Dev-Main)
#rb none

[CL 6815521 by Stefan Boberg in Main branch]
2019-06-03 15:32:00 -04:00
Ben Marsh
0cc6e3dca6 Copying //UE4/Dev-Build to Dev-Main (//UE4/Dev-Main)
#rb none
#rnx

[CL 6631504 by Ben Marsh in Main branch]
2019-05-24 11:51:54 -04:00
Ben Marsh
7170e4ccc1 Live Coding: Fix several issues related to using launch on / packaged builds with Live Coding.
* The original .uproject file is now compiled into monolithic executables when Live Coding is enabled. This allows invoking UBT with the original project file when the executable is staged to a different directory. This parameter can be overriden via the LiveCoding.SourceProject cvar.
* The original engine directory is also compiled into the executable. This allows finding the console executable path without having to enter it manually via the LiveCoding.ConsolePath cvar.
* If an exact match for a binary filename is not found, try to find a match by name only. Also required to support staged builds for 'Launch On', etc...
* Add a LiveCoding.Compile command to trigger a compile from the console.

#rb none
#jira UE-72677
#jira UE-72678
#jira UE-72683

[CL 6625676 by Ben Marsh in Dev-Build branch]
2019-05-23 20:41:59 -04:00
Ben Marsh
6ce07c75dd Live Coding: Enable live coding for modules during the first Tick() call, to prevent other modules loaded during initialization being added later.
#rb none
#jira UE-74945

[CL 6608137 by Ben Marsh in Dev-Build branch]
2019-05-22 13:29:57 -04:00
Ben Marsh
e60277ec4b LiveCoding: Add a target setting for using the debug version of the console application.
#rb none
#rnx

[CL 6605895 by Ben Marsh in Dev-Build branch]
2019-05-22 11:57:41 -04:00
Ben Marsh
e9f67d76f0 Live coding: Add multiple modules in one call at startup, rather than adding each module individuallly.
#rb none
#jira UE-74946

[CL 6605695 by Ben Marsh in Dev-Build branch]
2019-05-22 11:22:38 -04:00
Ben Marsh
d6fee0eb80 Merging latest version of Live++ (check timestamps on object files, support for adding multiple modules at once)
#rb none
#rnx

[CL 6605641 by Ben Marsh in Dev-Build branch]
2019-05-22 11:21:49 -04:00
Ben Marsh
fd2852f44f Update to latest version of Live Coding. Fixes issues with symbols not being stripped if they can throw an exception during construction.
#rb none

[CL 6602853 by Ben Marsh in Dev-Build branch]
2019-05-21 21:03:36 -04:00
marc audy
254e9d131e Fix non-unity
#rb
#rnx
[CODEREVIEW] Ben.Marsh
#jira

#ROBOMERGE-OWNER: ben.marsh
#ROBOMERGE-AUTHOR: marc.audy
#ROBOMERGE-SOURCE: CL 6007151 via CL 6007296 via CL 6007313
#ROBOMERGE-BOT: BUILD (Main -> Dev-Build)

[CL 6011683 by marc audy in Dev-Build branch]
2019-04-19 08:33:30 -04:00
marc audy
e732209b78 Fix non-unity
#rb
#rnx
[CODEREVIEW] Ben.Marsh
#jira

#ROBOMERGE-OWNER: robert.manuszewski
#ROBOMERGE-AUTHOR: marc.audy
#ROBOMERGE-SOURCE: CL 6007151 via CL 6007296 via CL 6007313
#ROBOMERGE-BOT: CORE (Main -> Dev-Core)

[CL 6010574 by marc audy in Dev-Core branch]
2019-04-19 06:34:23 -04:00
marc audy
1c062e4fb2 Fix non-unity
#rb
#rnx
[CODEREVIEW] Ben.Marsh
#jira


#ROBOMERGE-SOURCE: CL 6007151 via CL 6007296

[CL 6007313 by marc audy in Main branch]
2019-04-19 00:37:07 -04:00
ben marsh
744b6cd6a0 LiveCoding: Merging fixes to resolve issues with global symbols being reconstructed when loading patch DLLs. Was causing asserts when log channels were re-registered etc...
#jira
#rb none

#ROBOMERGE-OWNER: robert.manuszewski
#ROBOMERGE-AUTHOR: ben.marsh
#ROBOMERGE-SOURCE: CL 5993252 via CL 5993257 via CL 5995286 via CL 5995562
#ROBOMERGE-BOT: CORE (Main -> Dev-Core)

[CL 6001814 by ben marsh in Dev-Core branch]
2019-04-18 21:38:02 -04:00
ben marsh
2e0ac43aeb LiveCoding: Prevent Live Coding starting automatically when in unattended mode.
#rb none
#jira UE-72524

#ROBOMERGE-OWNER: ben.marsh
#ROBOMERGE-AUTHOR: ben.marsh
#ROBOMERGE-SOURCE: CL 5988868 in //UE4/Release-4.22/... via CL 5988908
#ROBOMERGE-BOT: BUILD (Main -> Dev-Build)

[CL 5999860 by ben marsh in Dev-Build branch]
2019-04-18 21:27:17 -04:00
ben marsh
1ffdf73243 LiveCoding: Prevent Live Coding starting automatically when in unattended mode.
#rb none
#jira UE-72524

#ROBOMERGE-OWNER: robert.manuszewski
#ROBOMERGE-AUTHOR: ben.marsh
#ROBOMERGE-SOURCE: CL 5988868 in //UE4/Release-4.22/... via CL 5988908
#ROBOMERGE-BOT: CORE (Main -> Dev-Core)

[CL 5999856 by ben marsh in Dev-Core branch]
2019-04-18 21:27:16 -04:00
ben marsh
a289f6681e LiveCoding: Merging fixes to resolve issues with global symbols being reconstructed when loading patch DLLs. Was causing asserts when log channels were re-registered etc...
#jira
#rb none

#ROBOMERGE-OWNER: ben.marsh
#ROBOMERGE-AUTHOR: ben.marsh
#ROBOMERGE-SOURCE: CL 5993252 via CL 5993257 via CL 5995286

[CL 5995562 by ben marsh in Main branch]
2019-04-18 17:51:25 -04:00
ben marsh
075ce10523 LiveCoding: Prevent Live Coding starting automatically when in unattended mode.
#rb none
#jira UE-72524

#ROBOMERGE-SOURCE: CL 5988868 in //UE4/Release-4.22/...
#ROBOMERGE-BOT: RELEASE (Release-4.22 -> Main)

[CL 5988908 by ben marsh in Main branch]
2019-04-18 14:02:02 -04:00
Ben Marsh
1e38db4e2c Merging early Live++ 1.4.3 changes.
#rb none

[CL 5920648 by Ben Marsh in Dev-Build branch]
2019-04-16 13:01:07 -04:00
Ben Marsh
5651dbf4cd Integrating changes from Live++ 1.4.1.
#rb none

[CL 5919984 by Ben Marsh in Dev-Build branch]
2019-04-16 12:46:58 -04:00
Johan Torp
ccd9c2597d FName optimizations and improvements
Encoding improvements
* New hash table implementation
--- Move away from 16-bit hashes since we need more than 64k buckets to hold 2M entries efficiently
--- Change to CityHash64, which is faster and stronger
--- Remove hardcoded max limit
* NAME_INDEX changed from contigouos int to monotonically increasing int
--- Opens up for future deduplication schemes that are better than number suffix dedup.
--- Saves some memory since we don't need to maintain a contiguous array
--- Typed up to cause compile errors when used as integer directly
* Avoid touching data repeatedly, normal path only does single hash of data
* New constructor that allows supplying string length up front
* Avoid dynamic allocations in string conversions >= 128 characters
* Avoid extra copying when splitting numbers
* More efficient IsPureAnsi check
* Only do one global lazy initialization call instead of multiple
* Switch to faster RW locks
* Switch from single lock to sharded hash map with separate locks
* Memory optimizations that reduces per entry overhead: 4 bytes slots, 2 byte headers and don't store null terminator

Improved API & documentation
* Document that IsValid() rarely makes sense
* Hide global state such as GetNames()
* Reduce amount of implementation details visible in header
* NameTypes.h size down by ~1/3 while adding documentation, stronger type safety and new APIs

Future possibilities
* Memory savings: Removing public NAME_INDEX and global FName array allows using the 32-bit FNameEntryId for arbitrary deduplication schemes. This can save both actual stored strings memory by deduplication and half the size of FName instances from 8B to 4B in shipping / test configs by removing the number part.
* Implementation can be tweaked further, for instance could persist 32-bit slot index hash inside slot to increase encoding performance in development / debug at the cost of memory.

Perf & mem results for internal project:
* Editor startup wall time: 12% speedup, 22.0s -> 19.5s
--- Warm disk and asset registry cache
--- Some gains from nametable serialization improvements
--- Some of these gains might be from orthogonal asset discovery optimizations
* Win64 Test Client memory usage with ~400k names: 30.3Mb -> 22.2Mb

#rb steve.robb, pj.kack
#jira UE-59973

[CL 5774657 by Johan Torp in Dev-Core branch]
2019-04-08 11:29:35 -04:00
ben marsh
71c96d93e9 LiveCoding: Fix unnecessary newlines on log messages.
#jira

#ROBOMERGE-OWNER: robert.manuszewski
#ROBOMERGE-AUTHOR: ben.marsh
#ROBOMERGE-SOURCE: CL 5492012 via CL 5492936 via CL 5492937
#ROBOMERGE-BOT: CORE (Main -> Dev-Core)

[CL 5532607 by ben marsh in Dev-Core branch]
2019-03-25 06:00:16 -04:00
ben marsh
399b29d01c LiveCoding: Fix unnecessary newlines on log messages.
#jira

#ROBOMERGE-OWNER: ben.marsh
#ROBOMERGE-AUTHOR: ben.marsh
#ROBOMERGE-SOURCE: CL 5492012 via CL 5492936 via CL 5492937
#ROBOMERGE-BOT: BUILD (Main -> Dev-Build)

[CL 5510640 by ben marsh in Dev-Build branch]
2019-03-22 17:30:01 -04:00
ben marsh
12addcdfb3 LiveCoding: Fix unnecessary newlines on log messages.
#jira


#ROBOMERGE-SOURCE: CL 5492012 via CL 5492936

[CL 5492937 by ben marsh in Main branch]
2019-03-21 11:49:46 -04:00
ben marsh
6d5b9bd3f6 LiveCoding: Add support for lazy loading modules. This lets us enable live coding for the entire engine without a large startup penalty. Project modules are still preloaded by default.
#rb none
#jira

#ROBOMERGE-OWNER: ben.marsh
#ROBOMERGE-AUTHOR: ben.marsh
#ROBOMERGE-SOURCE: CL 5437980 in //UE4/Release-4.22/... via CL 5437990
#ROBOMERGE-BOT: BUILD (Main -> Dev-Build)

[CL 5457435 by ben marsh in Dev-Build branch]
2019-03-19 14:39:34 -04:00
ben marsh
998efc1a3b LiveCoding: Add support for lazy loading modules. This lets us enable live coding for the entire engine without a large startup penalty. Project modules are still preloaded by default.
#rb none
#jira

#ROBOMERGE-OWNER: robert.manuszewski
#ROBOMERGE-AUTHOR: ben.marsh
#ROBOMERGE-SOURCE: CL 5437980 in //UE4/Release-4.22/... via CL 5437990
#ROBOMERGE-BOT: CORE (Main -> Dev-Core)

[CL 5446914 by ben marsh in Dev-Core branch]
2019-03-19 06:37:23 -04:00