diff options
author | Swaroop Sridhar <swaroops@microsoft.com> | 2016-08-24 18:53:42 -0700 |
---|---|---|
committer | Swaroop Sridhar <swaroops@microsoft.com> | 2016-08-24 19:41:43 -0700 |
commit | a12ba4633d0fea6792fcb73ed363f49e336f3f62 (patch) | |
tree | 945cfd971c7723663441a14b5198871e6cd68917 /src/gcinfo | |
parent | 9426f7ed702e5b8cbc4ffb0ad89a2ad7a448c56c (diff) | |
download | coreclr-a12ba4633d0fea6792fcb73ed363f49e336f3f62.tar.gz coreclr-a12ba4633d0fea6792fcb73ed363f49e336f3f62.tar.bz2 coreclr-a12ba4633d0fea6792fcb73ed363f49e336f3f62.zip |
GcInfo: Don't use slim header for struct-returns
This checkin has two changes:
1) Add a check to ensure that methods with struct-returns are
use the fat header which encodes ReturnKind in 4 bits.
2) Fix a bug in GetReturnKind().
Diffstat (limited to 'src/gcinfo')
-rw-r--r-- | src/gcinfo/gcinfoencoder.cpp | 3 |
1 files changed, 2 insertions, 1 deletions
diff --git a/src/gcinfo/gcinfoencoder.cpp b/src/gcinfo/gcinfoencoder.cpp index 3e587ea5ef..67852220ed 100644 --- a/src/gcinfo/gcinfoencoder.cpp +++ b/src/gcinfo/gcinfoencoder.cpp @@ -1019,7 +1019,8 @@ void GcInfoEncoder::Build() BOOL slimHeader = (!m_IsVarArg && !hasSecurityObject && !hasGSCookie && (m_PSPSymStackSlot == NO_PSP_SYM) && !hasContextParamType && !m_WantsReportOnlyLeaf && (m_InterruptibleRanges.Count() == 0) && !hasReversePInvokeFrame && ((m_StackBaseRegister == NO_STACK_BASE_REGISTER) || (NORMALIZE_STACK_BASE_REGISTER(m_StackBaseRegister) == 0))) && - (m_SizeOfEditAndContinuePreservedArea == NO_SIZE_OF_EDIT_AND_CONTINUE_PRESERVED_AREA); + (m_SizeOfEditAndContinuePreservedArea == NO_SIZE_OF_EDIT_AND_CONTINUE_PRESERVED_AREA) && + !IsStructReturnKind(m_ReturnKind); // All new code is generated for the latest GCINFO_VERSION. // So, always encode RetunrKind and encode ReversePInvokeFrameSlot where applicable. |