diff options
author | Egor Chesakov <Egor.Chesakov@microsoft.com> | 2018-06-04 10:08:22 -0700 |
---|---|---|
committer | GitHub <noreply@github.com> | 2018-06-04 10:08:22 -0700 |
commit | de586767f51432e5d89f6fcffee07c488fdeeb7b (patch) | |
tree | bb6306408eb17be4e7b9e799f15829d750c108d5 /src/vm/methodtablebuilder.cpp | |
parent | da0a05431913dd5e3d65c5d3c74d7f12cf3f9ebb (diff) | |
download | coreclr-de586767f51432e5d89f6fcffee07c488fdeeb7b.tar.gz coreclr-de586767f51432e5d89f6fcffee07c488fdeeb7b.tar.bz2 coreclr-de586767f51432e5d89f6fcffee07c488fdeeb7b.zip |
Work in VM towards cross-bitness crossgen (#18245)
* Replace sizeof expressions with target-specific constants:
* sizeof(ObjHeader) -> OBJHEADER_SIZE
* sizeof(Object) -> OBJECT_SIZE
* ObjSizeOf(Object) -> OBJECT_BASESIZE
* sizeof(ArrayBase) -> ARRAYBASE_SIZE
* ObjSizeOf(ArrayBase) -> ARRAYBASE_BASESIZE
* Remove ObjSizeOf macro
* Use OBJECT_SIZE in ArrayBase::GetBoundsOffset
* Cast ppObj to CORCOMPILE_GCREFMAP_TOKENS* before dereferencing in FakePromote
* LOG2_PTRSIZE should depend on _TARGET_64BIT_
Diffstat (limited to 'src/vm/methodtablebuilder.cpp')
-rw-r--r-- | src/vm/methodtablebuilder.cpp | 20 |
1 files changed, 10 insertions, 10 deletions
diff --git a/src/vm/methodtablebuilder.cpp b/src/vm/methodtablebuilder.cpp index 8b507bf633..0c1302eda1 100644 --- a/src/vm/methodtablebuilder.cpp +++ b/src/vm/methodtablebuilder.cpp @@ -8358,7 +8358,7 @@ MethodTableBuilder::HandleExplicitLayout( if (CorTypeInfo::IsObjRef(pFD->GetFieldType())) { // Check that the ref offset is pointer aligned - if ((pFD->GetOffset_NoLogging() & ((ULONG)sizeof(OBJECTREF) - 1)) != 0) + if ((pFD->GetOffset_NoLogging() & ((ULONG)TARGET_POINTER_SIZE - 1)) != 0) { badOffset = pFD->GetOffset_NoLogging(); fieldTrust.SetTrust(ExplicitFieldTrust::kNone); @@ -8596,7 +8596,7 @@ MethodTableBuilder::HandleExplicitLayout( { CONSISTENCY_CHECK(pSeries <= map->GetHighestSeries()); - memset((void*)&vcLayout[pSeries->GetSeriesOffset()-sizeof(Object)], oref, pSeries->GetSeriesSize() + pMT->GetBaseSize()); + memset((void*)&vcLayout[pSeries->GetSeriesOffset() - OBJECT_SIZE], oref, pSeries->GetSeriesSize() + pMT->GetBaseSize()); pSeries++; } @@ -8678,8 +8678,8 @@ void MethodTableBuilder::FindPointerSeriesExplicit(UINT instanceSliceSize, // ref-non-ref-non, and since only ref series are recorded and non-ref series // are skipped, the max number of series is total instance size / 2 / sizeof(ref). // But watch out for the case where we have e.g. an instanceSlizeSize of 4. - DWORD sz = (instanceSliceSize + (2 * sizeof(OBJECTREF)) - 1); - bmtGCSeries->pSeries = new bmtGCSeriesInfo::Series[sz/2/sizeof(OBJECTREF)]; + DWORD sz = (instanceSliceSize + (2 * TARGET_POINTER_SIZE) - 1); + bmtGCSeries->pSeries = new bmtGCSeriesInfo::Series[sz/2/ TARGET_POINTER_SIZE]; BYTE *loc = pFieldLayout; BYTE *layoutEnd = pFieldLayout + instanceSliceSize; @@ -8732,7 +8732,7 @@ MethodTableBuilder::HandleGCForExplicitLayout() CGCDesc::Init( (PVOID) pMT, 1); pSeries = ((CGCDesc*)pMT)->GetLowestSeries(); pSeries->SetSeriesSize( (size_t) (0) - (size_t) pMT->GetBaseSize()); - pSeries->SetSeriesOffset(sizeof(Object)); + pSeries->SetSeriesOffset(OBJECT_SIZE); } else #endif // FEATURE_COLLECTIBLE_TYPES @@ -8758,7 +8758,7 @@ MethodTableBuilder::HandleGCForExplicitLayout() BAD_FORMAT_NOTHROW_ASSERT(pSeries <= CGCDesc::GetCGCDescFromMT(pMT)->GetHighestSeries()); pSeries->SetSeriesSize( (size_t) bmtGCSeries->pSeries[i].len - (size_t) pMT->GetBaseSize() ); - pSeries->SetSeriesOffset(bmtGCSeries->pSeries[i].offset + sizeof(Object) + dwInstanceSliceOffset); + pSeries->SetSeriesOffset(bmtGCSeries->pSeries[i].offset + OBJECT_SIZE + dwInstanceSliceOffset); pSeries++; } } @@ -10308,7 +10308,7 @@ MethodTableBuilder::SetupMethodTable2( // when the instance is in its "boxed" state. if (!IsInterface()) { - DWORD baseSize = Max<DWORD>(bmtFP->NumInstanceFieldBytes + ObjSizeOf(Object), MIN_OBJECT_SIZE); + DWORD baseSize = Max<DWORD>(bmtFP->NumInstanceFieldBytes + OBJECT_BASESIZE, MIN_OBJECT_SIZE); baseSize = (baseSize + ALLOC_ALIGN_CONSTANT) & ~ALLOC_ALIGN_CONSTANT; // m_BaseSize must be aligned pMT->SetBaseSize(baseSize); @@ -11308,7 +11308,7 @@ VOID MethodTableBuilder::HandleGCForValueClasses(MethodTable ** pByValueClassCac CGCDesc::Init( (PVOID) pMT, 1); pSeries = ((CGCDesc*)pMT)->GetLowestSeries(); pSeries->SetSeriesSize( (size_t) (0) - (size_t) pMT->GetBaseSize()); - pSeries->SetSeriesOffset(sizeof(Object)); + pSeries->SetSeriesOffset(OBJECT_SIZE); } else #endif // FEATURE_COLLECTIBLE_TYPES @@ -11336,8 +11336,8 @@ VOID MethodTableBuilder::HandleGCForValueClasses(MethodTable ** pByValueClassCac if (bmtFP->NumInstanceGCPointerFields) { // See gcdesc.h for an explanation of why we adjust by subtracting BaseSize - pSeries->SetSeriesSize( (size_t) (bmtFP->NumInstanceGCPointerFields * sizeof(OBJECTREF)) - (size_t) pMT->GetBaseSize()); - pSeries->SetSeriesOffset(bmtFP->GCPointerFieldStart+sizeof(Object)); + pSeries->SetSeriesSize( (size_t) (bmtFP->NumInstanceGCPointerFields * TARGET_POINTER_SIZE) - (size_t) pMT->GetBaseSize()); + pSeries->SetSeriesOffset(bmtFP->GCPointerFieldStart + OBJECT_SIZE); pSeries++; } |