Commit Graph

57 Commits

Author SHA1 Message Date
Tim Smith
1259a5f0f0 Fix issue with UHT so it generates errors with duplicate file names again.
#rbx
#rb trivial
#preflight 614084bcbf8a6900011877af

[CL 17503291 by Tim Smith in ue5-main branch]
2021-09-14 08:03:43 -04:00
Tim Smith
94066f422d 1) Moved some string initialization to the parsing code so it can be run concurrently with all other parsing and not be applied to the post parsing time.
2) Improved the performance of the array dimension enum lookup code.
3) Moved type shutdown to be tracked in the app instead of at c++ exit time.
4) Changed to TSharedRef iteration to use references instead of by value to avoid the performance hit.

#rb none
#rnx

[CL 16936536 by Tim Smith in ue5-main branch]
2021-07-23 08:46:22 -04:00
Tim Smith
c21e577222 1) Make the creation of engine types not required for post parsing.
2) Don't create engine types unless a script plugin is found

#rb none
#rnx

[CL 16922516 by Tim Smith in ue5-main branch]
2021-07-22 08:54:18 -04:00
Tim Smith
df37b074b1 Removed all lookups from UObjects to UHT definition objects.
#rb none
#rnx
#preflight 60eee3a9caf0590001975c94

[CL 16850095 by Tim Smith in ue5-main branch]
2021-07-14 10:49:06 -04:00
Tim Smith
b6d62d54c5 Classes and ScriptStructs are now created post-parse
#rb self
#rnx

[CL 16472312 by Tim Smith in ue5-main branch]
2021-05-26 13:58:10 -04:00
Tim Smith
c824d9c0b3 Enumerations are constructed post parse
#rb self
#rnx

[CL 16470925 by Tim Smith in ue5-main branch]
2021-05-26 12:17:18 -04:00
Tim Smith
6dbd708a7b Removed the usage of FError::Throwf and the need for HeaderParser to set a logging context.
#rb self
#rnx
#preflight 60ae3f7f6905a60001243752

[CL 16468733 by Tim Smith in ue5-main branch]
2021-05-26 09:54:27 -04:00
Tim Smith
c9572b225e Remove FClasses
#rb self
#rnx
#preflight 60a9103c3df6e300012d8aec

[CL 16429489 by Tim Smith in ue5-main branch]
2021-05-22 10:50:10 -04:00
Tim Smith
377b8798c5 Added new PropertyTypes which in the long run will be where different property types are implemented.
Added new casting system betwen the different type definitions.  This allows some patterns that makes the code easier.
Moved some direct calls to engine API to FClasses.
More property data moved to the property definition.
Replacing a many more instances of referencing engine type directly with referencing UHT types.
Removed the FToken from the property data.  Saved 600MB of memory on some titles.

#rb jonathan.adamczewski
#rnx

[CL 16416114 by Tim Smith in ue5-main branch]
2021-05-21 07:29:12 -04:00
Tim Smith
b854f16fff Remove the singleton type cache and the package name cache.
#rb jonathan.adamczewski
#rnx
#preflight 609c286edc97da0001256a61

[CL 16305562 by Tim Smith in ue5-main branch]
2021-05-12 16:27:07 -04:00
Tim Smith
e7ea9ed28b 1) Create the Function type information that provides the UHT data for functions.
2) Remove the global hash storage system since it is moved into the Function type information.
3) Remove some unsed classes and methods.
4) Added the TEMPORARY auto creation of base engine types until they can be added to the no export file.

#rb marc.audy
#rnx
#preflight 60893ddb2377910001be8638

[CL 16142341 by Tim Smith in ue5-main branch]
2021-04-28 07:34:10 -04:00
Tim Smith
808f81dd6c Performance improvements and clean up in preperation for a Live Coding fix.
1) Refactored preparsing to scan for @UCLASS, @USTRUCT, and @ENUM and define then.  This means that no new entries into the type definition info system will be added after pre-parsing and thus remove the need for any type of locking during code generation.
2) Parsing and code generation is now being done in a strict order based on dependencies and no longer by project.  This removes the need of explicitly parsing depedencies first or waiting on hashes to be computed.  (Provided a 50%-80% improvement in code generation time)
3) Changed HeaderParser to be specific to one source file.  Removed the need to pass the source file around since it is always known at construction time.  Simplified some error handling logic.
4) Changed parallel for loops to using event graph to provide more concurrency.
5) Refactored the main program flow into concise steps.

Testing:

Verified that the headers generated exactly the same for:

1) First person C++ Project
2) UnrealEditor
3) QAGame
4) ShooterGame
5) FortniteGame

FYI: Marc had reviewed this as part of a larger change but some parts were extract.  These are the remaining changes.

#rb marc.audy
#rnx
#preflight 6078666a02850d00010e22c5

[CL 16023636 by Tim Smith in ue5-main branch]
2021-04-15 13:44:34 -04:00
Tim Smith
715fa44d96 Implement the expanded type definitions.
Functionallity will be used in a future CL.

#rb
#rnx
#preflight 60773f951fa9990001ee539b

[CL 16011376 by Tim Smith in ue5-main branch]
2021-04-14 16:07:25 -04:00
Marcus Wassmer
3b81cf8201 Merging using //UE5/Main_to_//UE5/Release-Engine-Staging @14384769
autoresolved files
#rb none

[CL 14384911 by Marcus Wassmer in ue5-main branch]
2020-09-24 00:43:27 -04:00
Marc Audy
7379fa99c5 Merging //UE5/Release-Engine-Staging to Main (//UE5/Main) @ 14229157
[CL 14233282 by Marc Audy in ue5-main branch]
2020-09-01 14:07:48 -04:00
Marc Audy
a7c9001a94 Merging //UE5/Release-Engine-Staging to Main (//UE5/Main) @ 14075166
#rb
#rnx

[CL 14075271 by Marc Audy in ue5-main branch]
2020-08-11 01:36:57 -04:00
Marc Audy
11f5b21210 Merging //UE5/Release-Engine-Staging @ 13752110 to Main (//UE5/Main)
#rnx

[CL 13753156 by Marc Audy in ue5-main branch]
2020-06-23 18:40:00 -04:00
Ben Marsh
99be00dcdb Merging latest from Private-Starship.
[CL 13192225 by Ben Marsh in ue5-main branch]
2020-05-05 18:50:52 -04:00
marc audy
66843dbb81 UHT Optimization: Parallelize the file loading and initial parsing of headers
#rb Michael.Noland
#jira
#rnx

#ROBOMERGE-SOURCE: CL 13191242 via CL 13191244 via CL 13191248
#ROBOMERGE-BOT: RELEASE (Release-Engine-Staging -> Main) (v688-13145358)

[CL 13191250 by marc audy in Main branch]
2020-05-05 18:20:38 -04:00
marc audy
615d7a84c7 UHT optimization: Encapsulate GUnrealSourceFilesMap, GTypeDefinitionInfoMap, and GPublicSourceFileSet to allow indexing in multiple ways
#rb Michael.Noland
#rnx
#jira

#ROBOMERGE-SOURCE: CL 13183805 via CL 13183813 via CL 13183823
#ROBOMERGE-BOT: RELEASE (Release-Engine-Staging -> Main) (v688-13145358)

[CL 13183833 by marc audy in Main branch]
2020-05-05 13:59:39 -04:00
Josh Adams
aa9705149b Copying Private-LoadTimes-4.24 stream to Main. Biggest changes are in Materials/Shader memory freezing.
#rb none

[CL 11282608 by Josh Adams in Main branch]
2020-02-06 13:13:41 -05:00
marc audy
80986e13a9 UHT Additional cleanup
* Remove FNameLookupCPP struct and interface name maps. Overhead of managing/locking maps provides no benefit to the very simple Printf that it is ultimately doing.
* Remove unused FNameLookupCPP source file
* Remove GClassStrippedHeaderTextMap and GClassHeaderNameWithNoPathMap as they are unused
* No longer add Enum hashes to global table as they are not read.
* CheckedMetadataSpecifiers now stored as a FName keyed TMap as the incoming values are names not strings, so no need to convert name to string
#jira
#rnx
#rb


#ROBOMERGE-OWNER: marc.audy
#ROBOMERGE-AUTHOR: marc.audy
#ROBOMERGE-SOURCE: CL 10879228 via CL 10879328 via CL 10879344
#ROBOMERGE-BOT: (v626-10872990)

[CL 10880488 by marc audy in Main branch]
2020-01-06 12:52:50 -05:00
marc audy
a7f3d43678 UHT optimizations part 6 - Generate files in parallel. Improves code generation phase by ~50%.
* Restructured code so that FNativeClassHeaderGenerator can now use ParallelFor for 3 phases: creating the .generated.h files, creating the .gen.cpp, and exporting the generated headers
* FNameLookupCPP, GPackageSingletons, GGeneratedCodeHashes, GetTypePackageName, FNativeClassHeaderGenerator::GetPackageSingletonName, FTypeSingletonCache, and FTypeSingleton::GetExternDecl now use RWScopeLocks to safely control access to globals/statics
#jira
#rnx
#rb


#ROBOMERGE-OWNER: marc.audy
#ROBOMERGE-AUTHOR: marc.audy
#ROBOMERGE-SOURCE: CL 10876463 via CL 10876464 via CL 10876465
#ROBOMERGE-BOT: (v624-10872983)

[CL 10876473 by marc audy in Main branch]
2020-01-04 15:28:16 -05:00
Ryan Durand
74c879d5f3 Updating copyrights for Engine Programs.
#rnx
#rb none
#jira none

#ROBOMERGE-OWNER: ryan.durand
#ROBOMERGE-AUTHOR: ryan.durand
#ROBOMERGE-SOURCE: CL 10869242 in //Fortnite/Release-12.00/... via CL 10869536
#ROBOMERGE-BOT: FORTNITE (Main -> Dev-EngineMerge) (v613-10869866)

[CL 10870960 by Ryan Durand in Main branch]
2019-12-26 23:06:02 -05:00
Robert Manuszewski
7b6f840f7f Copying //UE4/Dev-Core @ 10708550 to Dev-Main (//UE4/Dev-Main)
#rb none

[CL 10708666 by Robert Manuszewski in Main branch]
2019-12-13 11:07:03 -05:00