Optimize C++ compilation time

This commit is contained in:
Wojtek Figat
2021-04-30 16:27:57 +02:00
parent 05ba9b8d45
commit 0e75dba142
222 changed files with 1095 additions and 1506 deletions

View File

@@ -417,6 +417,11 @@ BinaryModule::BinaryModule()
GetModules().Add(this);
}
void* BinaryModule::FindMethod(const ScriptingTypeHandle& typeHandle, const ScriptingTypeMethodSignature& signature)
{
return FindMethod(typeHandle, signature.Name, signature.Params.Count());
}
void BinaryModule::Destroy(bool isReloading)
{
// Unregister

View File

@@ -7,6 +7,7 @@
#include "Engine/Core/Types/String.h"
#include "Engine/Core/Types/Variant.h"
#include "Engine/Core/Collections/Dictionary.h"
#include "Engine/Core/Collections/Array.h"
#include "Engine/Serialization/ISerializable.h"
#include "ManagedCLR/MAssemblyOptions.h"
@@ -131,10 +132,7 @@ public:
/// <param name="typeHandle">The type to find method inside it.</param>
/// <param name="signature">The method signature.</param>
/// <returns>The method or null if failed to get it.</returns>
virtual void* FindMethod(const ScriptingTypeHandle& typeHandle, const ScriptingTypeMethodSignature& signature)
{
return FindMethod(typeHandle, signature.Name, signature.Params.Count());
}
virtual void* FindMethod(const ScriptingTypeHandle& typeHandle, const ScriptingTypeMethodSignature& signature);
/// <summary>
/// Invokes a given scripting method.

View File

@@ -5,11 +5,11 @@
#include "Engine/Debug/DebugLog.h"
#include "Engine/Core/Log.h"
#include "ScriptingType.h"
#include <ThirdParty/mono-2.0/mono/metadata/loader.h>
extern "C" FLAXENGINE_API void mono_add_internal_call(const char* name, const void* method);
#define ADD_INTERNAL_CALL(fullName, method) mono_add_internal_call(fullName, (const void*)method)
#if BUILD_RELEASE
#if BUILD_RELEASE && 0
// Using invalid handle will crash engine in Release build
#define INTERNAL_CALL_CHECK(obj)

View File

@@ -8,6 +8,7 @@
#include "MDomain.h"
#include "MUtils.h"
#include "Engine/Core/Log.h"
#include "Engine/Core/Types/TimeSpan.h"
#include "Engine/Platform/FileSystem.h"
#include "Engine/Debug/Exceptions/InvalidOperationException.h"
#include "Engine/Debug/Exceptions/FileNotFoundException.h"
@@ -16,6 +17,7 @@
#include "Engine/Scripting/Scripting.h"
#include "Engine/Platform/StringUtils.h"
#include "Engine/Platform/File.h"
#include "Engine/Threading/Threading.h"
#include <ThirdParty/mono-2.0/mono/metadata/mono-debug.h>
#include <ThirdParty/mono-2.0/mono/metadata/assembly.h>
#include <ThirdParty/mono-2.0/mono/metadata/tokentype.h>

View File

@@ -6,6 +6,7 @@
#include "MAssemblyOptions.h"
#include "Engine/Core/Delegate.h"
#include "Engine/Core/Types/String.h"
#include "Engine/Core/Collections/Array.h"
#include "Engine/Core/Collections/Dictionary.h"
#include "Engine/Platform/CriticalSection.h"

View File

@@ -10,6 +10,7 @@
#include "Engine/Core/Types/String.h"
#include "Engine/Core/Types/DateTime.h"
#include "Engine/Engine/CommandLine.h"
#include "Engine/Engine/Globals.h"
#include "Engine/Debug/Exceptions/Exceptions.h"
#include "Engine/Threading/Threading.h"
#include "Engine/Platform/Thread.h"

View File

@@ -6,6 +6,7 @@
#include "Engine/Core/Types/StringView.h"
#include "Engine/Core/Types/DataContainer.h"
#include "Engine/Core/Types/Variant.h"
#include "Engine/Core/Collections/Array.h"
#include "Engine/Scripting/ScriptingObject.h"
#include <ThirdParty/mono-2.0/mono/metadata/object.h>
#include <ThirdParty/mono-2.0/mono/metadata/appdomain.h>

View File

@@ -9,6 +9,7 @@
#include "Engine/Scripting/ManagedCLR/MUtils.h"
#include "Engine/Core/ObjectsRemovalService.h"
#include "Engine/Profiler/Profiler.h"
#include "Engine/Threading/Threading.h"
#include <ThirdParty/mono-2.0/mono/metadata/mono-gc.h>
namespace ProfilerInternal

View File

@@ -6,6 +6,7 @@
#include "ScriptingType.h"
#include "FlaxEngine.Gen.h"
#include "Engine/Threading/Threading.h"
#include "Engine/Threading/ThreadLocal.h"
#include "Engine/Threading/IRunnable.h"
#include "Engine/Platform/FileSystem.h"
#include "Engine/Platform/File.h"
@@ -21,10 +22,12 @@
#include "MException.h"
#include "Engine/Level/Level.h"
#include "Engine/Core/ObjectsRemovalService.h"
#include "Engine/Core/Types/TimeSpan.h"
#include "Engine/Profiler/ProfilerCPU.h"
#include "Engine/Content/Asset.h"
#include "Engine/Content/Content.h"
#include "Engine/Engine/EngineService.h"
#include "Engine/Engine/Globals.h"
#include "Engine/Graphics/RenderTask.h"
#include "Engine/Serialization/JsonTools.h"
#include <ThirdParty/mono-2.0/mono/metadata/mono-debug.h>
@@ -109,7 +112,7 @@ Action Scripting::ScriptsLoaded;
Action Scripting::ScriptsUnload;
Action Scripting::ScriptsReloading;
Action Scripting::ScriptsReloaded;
ThreadLocal<Scripting::IdsMappingTable*, 32> Scripting::ObjectsLookupIdMapping;
ThreadLocal<Scripting::IdsMappingTable*, 32, true> Scripting::ObjectsLookupIdMapping;
ScriptingService ScriptingServiceInstance;
bool initFlaxEngine();
@@ -224,12 +227,6 @@ MDomain* Scripting::GetRootDomain()
return _monoRootDomain;
}
MonoDomain* Scripting::GetMonoScriptsDomain()
{
ASSERT(_monoScriptsDomain != nullptr);
return _monoScriptsDomain->GetNative();
}
MDomain* Scripting::GetScriptsDomain()
{
return _monoScriptsDomain;

View File

@@ -2,11 +2,12 @@
#pragma once
#include "Engine/Core/Collections/Dictionary.h"
#include "Engine/Threading/ThreadLocal.h"
#include "ScriptingObject.h"
#include "Engine/Core/Types/BaseTypes.h"
#include "Engine/Scripting/ScriptingType.h"
#include "Types.h"
class BinaryModule;
template<typename T, int32 MaxThreads, bool ClearMemory>
class ThreadLocal;
/// <summary>
/// Embedded managed scripting runtime service.
@@ -26,41 +27,33 @@ public:
/// <summary>
/// Action fired on scripting engine loaded (always main thread).
/// </summary>
static Action ScriptsLoaded;
static Delegate<> ScriptsLoaded;
/// <summary>
/// Action fired on scripting engine unloading start (always main thread).
/// </summary>
static Action ScriptsUnload;
static Delegate<> ScriptsUnload;
/// <summary>
/// Action fired on scripting engine reload start (always main thread).
/// </summary>
static Action ScriptsReloading;
static Delegate<> ScriptsReloading;
/// <summary>
/// Action fired on scripting engine reload start (always main thread).
/// </summary>
static Action ScriptsReloaded;
static Delegate<> ScriptsReloaded;
public:
/// <summary>
/// Gets mono root domain
/// </summary>
/// <returns>The Mono root domain.</returns>
static MDomain* GetRootDomain();
/// <summary>
/// Gets mono scripts domain
/// </summary>
/// <returns>The Mono domain.</returns>
static MonoDomain* GetMonoScriptsDomain();
/// <summary>
/// Gets scripts domain
/// </summary>
/// <returns>The domain.</returns>
static MDomain* GetScriptsDomain();
public:
@@ -123,7 +116,7 @@ public:
/// <summary>
/// The objects lookup identifier mapping used to override the object ids on FindObject call (used by the object references deserialization).
/// </summary>
static ThreadLocal<IdsMappingTable*, 32> ObjectsLookupIdMapping;
static ThreadLocal<IdsMappingTable*, 32, true> ObjectsLookupIdMapping;
/// <summary>
/// Finds the object by the given identifier. Searches registered scene objects and optionally assets. Logs warning if fails.

View File

@@ -6,6 +6,7 @@ class Scripting;
struct ScriptingType;
class BinaryModule;
class ScriptingObject;
class MDomain;
class MException;
class MAssembly;
class MClass;