There is code here:
| #if defined(UNIX_AMD64_ABI) || defined(TARGET_ARM64) |
| elseif (strcmp(nameSpace, g_SystemNS) == 0) |
| { |
| EEClassLayoutInfo* pLayout = pClass->GetLayoutInfo(); |
| |
| // These types correspond to fundamental data types in the underlying ABIs: |
| // * Int128: __int128 |
| // * UInt128: unsigned __int128 |
| |
| if ((strcmp(name, g_Int128Name) == 0) || (strcmp(name, g_UInt128Name) == 0)) |
| { |
| pLayout->m_ManagedLargestAlignmentRequirementOfAllMembers = 16; // sizeof(__int128) |
| } |
| } |
| #endif// UNIX_AMD64_ABI || TARGET_ARM64 |
Which is intended to handle the special alignment requirement of the type on Unix x64/ARM64.
However, this code is currently dead because it is in an if block under bmtGenerics->HasInstantiation() (i. e. the if only handles generic types).
@tannergooding
There is code here:
runtime/src/coreclr/vm/methodtablebuilder.cpp
Lines 9909 to 9923 in cb57fbb
Which is intended to handle the special alignment requirement of the type on Unix x64/ARM64.
However, this code is currently dead because it is in an
ifblock underbmtGenerics->HasInstantiation()(i. e. theifonly handles generic types).@tannergooding