diff options
author | dotnet-bot <dotnet-bot@microsoft.com> | 2017-02-10 01:31:39 +0300 |
---|---|---|
committer | dotnet-bot <dotnet-bot@microsoft.com> | 2017-02-10 01:31:39 +0300 |
commit | 40df666d37f3784a63b48e0c0e6e93fc5f92018d (patch) | |
tree | f716c84b5d64bfed63dfc60be40449534e06a941 /src/Native/Runtime/TypeManager.h | |
parent | bb782f4ce4f1a5311b0b3424a8476043a41839d7 (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.h | 4 |
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); }; |