}
}
- //
- // m_cbActualArgSize gets the number of arg bytes for the NATIVE signature
- //
- m_cbActualArgSize =
- (pStubMD != NULL) ? pStubMD->AsDynamicMethodDesc()->GetNativeStackArgSize() : pMD->SizeOfArgStack();
#if defined(_TARGET_X86_)
MetaSig sig(pMD);
- ArgIterator argit(&sig);
int numRegistersUsed = 0;
//
m_cbStackArgSize += StackElemSize(cbSize);
}
}
+ m_cbActualArgSize = (pStubMD != NULL) ? pStubMD->AsDynamicMethodDesc()->GetNativeStackArgSize() : offs;
+
PInvokeStaticSigInfo sigInfo;
if (pMD != NULL)
new (&sigInfo) PInvokeStaticSigInfo(pMD);
else
new (&sigInfo) PInvokeStaticSigInfo(GetSignature(), GetModule());
+
if (sigInfo.GetCallConv() == pmCallConvCdecl)
{
// caller pop
// callee pop
m_cbRetPop = static_cast<UINT16>(m_cbActualArgSize);
}
+#else // _TARGET_X86_
+ //
+ // m_cbActualArgSize gets the number of arg bytes for the NATIVE signature
+ //
+ m_cbActualArgSize =
+ (pStubMD != NULL) ? pStubMD->AsDynamicMethodDesc()->GetNativeStackArgSize() : pMD->SizeOfArgStack();
+
#endif // _TARGET_X86_
#endif // _TARGET_X86_ && !FEATURE_STUBS_AS_IL
// On x86, NULL for no-marshal signatures
// On non-x86, the managed entrypoint for no-delegate no-marshal signatures
UINT32 m_cbActualArgSize; // caches m_pSig.SizeOfFrameArgumentArray()
+ // On x86/Linux we have to augment with numRegistersUsed * STACK_ELEM_SIZE
#if defined(_TARGET_X86_)
UINT16 m_cbRetPop; // stack bytes popped by callee (for UpdateRegDisplay)
#if defined(FEATURE_STUBS_AS_IL)