summaryrefslogtreecommitdiff
path: root/src/gcinfo
diff options
context:
space:
mode:
authorSwaroop Sridhar <swaroops@microsoft.com>2016-08-24 18:53:42 -0700
committerSwaroop Sridhar <swaroops@microsoft.com>2016-08-24 19:41:43 -0700
commita12ba4633d0fea6792fcb73ed363f49e336f3f62 (patch)
tree945cfd971c7723663441a14b5198871e6cd68917 /src/gcinfo
parent9426f7ed702e5b8cbc4ffb0ad89a2ad7a448c56c (diff)
downloadcoreclr-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.cpp3
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.