Welcome to mirror list, hosted at ThFree Co, Russian Federation.

github.com/mono/corert.git - Unnamed repository; edit this file 'description' to name the repository.
summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authordotnet-bot <dotnet-bot@microsoft.com>2017-02-10 01:31:39 +0300
committerdotnet-bot <dotnet-bot@microsoft.com>2017-02-10 01:31:39 +0300
commit40df666d37f3784a63b48e0c0e6e93fc5f92018d (patch)
treef716c84b5d64bfed63dfc60be40449534e06a941 /src/Native/Runtime/TypeManager.h
parentbb782f4ce4f1a5311b0b3424a8476043a41839d7 (diff)
ProjectX: GC Description for Thread Local Statics
This change enables the GC description emission for thread local statics in CoreRT. It also hooks up the runtime to scan TLS GC fields. To handle mixed native and managed TLS variables, a pair of _tls_start and _tls_end place holders, which represent the whole TLS area, are defined in the startup code and are referenced in CoreRT when emitting the TLS directory (named _tls_used). A TODO work is left to handle multiple object files where each object file comes with a _tls_index and _tls_used. [tfs-changeset: 1647370]
Diffstat (limited to 'src/Native/Runtime/TypeManager.h')
-rw-r--r--src/Native/Runtime/TypeManager.h4
1 files changed, 4 insertions, 0 deletions
diff --git a/src/Native/Runtime/TypeManager.h b/src/Native/Runtime/TypeManager.h
index 9a860dc62..ef29af9c3 100644
--- a/src/Native/Runtime/TypeManager.h
+++ b/src/Native/Runtime/TypeManager.h
@@ -15,6 +15,9 @@ class TypeManager
StaticGcDesc* m_pStaticsGCInfo;
StaticGcDesc* m_pThreadStaticsGCInfo;
UInt8* m_pStaticsGCDataSection;
+ UInt8* m_pThreadStaticsDataSection;
+ UInt32* m_pTlsIndex; // Pointer to TLS index if this module uses thread statics
+ UInt32 m_managedTlsStartOffset; // Start offset for managed TLS data
TypeManager(ReadyToRunHeader * pHeader);
@@ -38,4 +41,5 @@ private:
};
void EnumStaticGCRefsBlock(void * pfnCallback, void * pvCallbackData, StaticGcDesc* pStaticGcInfo);
+ void EnumThreadStaticGCRefsBlock(void * pfnCallback, void * pvCallbackData, StaticGcDesc* pStaticGcInfo, UInt8* pbThreadStaticData);
};