diff options
Diffstat (limited to 'src/vm/i386/stublinkerx86.cpp')
-rw-r--r-- | src/vm/i386/stublinkerx86.cpp | 11 |
1 files changed, 11 insertions, 0 deletions
diff --git a/src/vm/i386/stublinkerx86.cpp b/src/vm/i386/stublinkerx86.cpp index e07b6e1c37..14b9701a29 100644 --- a/src/vm/i386/stublinkerx86.cpp +++ b/src/vm/i386/stublinkerx86.cpp @@ -5925,6 +5925,17 @@ static void AppendGCLayout(ULONGARRAY &gcLayout, size_t baseOffset, BOOL fIsType _ASSERTE(pMT); _ASSERTE(pMT->IsValueType()); + if (pMT->IsByRefLike()) + { + FindByRefPointerOffsetsInByRefLikeObject( + pMT, + baseOffset, + [&](size_t pointerOffset) + { + *gcLayout.AppendThrowing() = (ULONG)(pointerOffset | 1); // "| 1" to mark it as an interior pointer + }); + } + // walk the GC descriptors, reporting the correct offsets if (pMT->ContainsPointers()) { |