diff options
author | David Wrighton <davidwr@microsoft.com> | 2017-04-07 05:11:13 +0300 |
---|---|---|
committer | David Wrighton <davidwr@microsoft.com> | 2017-04-07 05:11:13 +0300 |
commit | e98f582698d1bd10eb481d938c101a8750336251 (patch) | |
tree | ae651738086a1d2c3f9326dff1a5d14828b5fe6c /src/Native/Runtime/TypeManager.cpp | |
parent | 1dfefaca9a537d52339f6c674453dabd64d45221 (diff) |
Fix a number of issues in compiling with ProjectN abi
- When referencing a method outside of the current module, the ReflectionInvokeMapNode should reference via a method name and signature in the native layout, not a metadata token
- When referencing a field outside of the current module, the ReflectionFieldMapNode should reference via method name not token
- When emitting a reference to a indirection cell in the ExternalReferencesTableNode use the calculate delta instead of throwing away the calculation
- When producing GCStatic descs for canonical types for the purpose of the template type loader, they should not be grouped into a single GC Static Desc region, but instead should be held in separate standalone regions
- Update the PrecomputedMetadataManager to take advantage of the new ReflectionInvokeMapNode functionality
- Disable new functionality for field mapping, as that requires cross module static import which isn't yet completely implemented
- Disable the use of the dynamic invoke tables. The dependency analysis interactions are still not quite right in this scenario
- When producing Thread Static GC descs, use a section relative reloc to the TypeThreadStaticsSymbol, not the start of the tls section
- Remove all plumbing around the start of tls section and the ReadyToRun header
- The need for the data was incorrect, and the data is not useful
[tfs-changeset: 1653533]
Diffstat (limited to 'src/Native/Runtime/TypeManager.cpp')
-rw-r--r-- | src/Native/Runtime/TypeManager.cpp | 4 |
1 files changed, 1 insertions, 3 deletions
diff --git a/src/Native/Runtime/TypeManager.cpp b/src/Native/Runtime/TypeManager.cpp index 5ad6efb9e..b09de7fba 100644 --- a/src/Native/Runtime/TypeManager.cpp +++ b/src/Native/Runtime/TypeManager.cpp @@ -50,8 +50,6 @@ TypeManager::TypeManager(HANDLE osModule, ReadyToRunHeader * pHeader) m_pThreadStaticsDataSection = (UInt8*)GetModuleSection(ReadyToRunSectionType::ThreadStaticRegion, &length); m_pThreadStaticsGCInfo = (StaticGcDesc*)GetModuleSection(ReadyToRunSectionType::ThreadStaticGCDescRegion, &length); m_pTlsIndex = (UInt32*)GetModuleSection(ReadyToRunSectionType::ThreadStaticIndex, &length); - UInt32 *pManagedTlsStartOffset = (UInt32*)GetModuleSection(ReadyToRunSectionType::ThreadStaticStartOffset, &length); - m_managedTlsStartOffset = pManagedTlsStartOffset ? *pManagedTlsStartOffset : 0; } void * TypeManager::GetModuleSection(ReadyToRunSectionType sectionId, int * length) @@ -157,7 +155,7 @@ void TypeManager::EnumStaticGCRefs(void * pfnCallback, void * pvCallbackData) // value in the module header. // 2) The offset into the TLS block at which managed data begins. EnumThreadStaticGCRefsBlock(pfnCallback, pvCallbackData, m_pThreadStaticsGCInfo, - dac_cast<UInt8*>(pThread->GetThreadLocalStorage(*m_pTlsIndex, m_managedTlsStartOffset))); + dac_cast<UInt8*>(pThread->GetThreadLocalStorage(*m_pTlsIndex, 0))); } END_FOREACH_THREAD } |