@@ -635,9 +635,8 @@ BYTE FASTCALL encodeHeaderNext(const InfoHdr& header, InfoHdr* state, BYTE &code
635635 goto DO_RETURN;
636636 }
637637
638- if (state->returnKind != header.returnKind )
638+ if (GCInfoEncodesReturnKind () && ( state->returnKind != header.returnKind ) )
639639 {
640- _ASSERTE (GCInfoEncodesReturnKind ());
641640 state->returnKind = header.returnKind ;
642641 codeSet = 2 ; // Two byte encoding
643642 encoding = header.returnKind ;
@@ -685,9 +684,8 @@ BYTE FASTCALL encodeHeaderNext(const InfoHdr& header, InfoHdr* state, BYTE &code
685684 }
686685 }
687686
688- if (state->revPInvokeOffset != header.revPInvokeOffset )
687+ if (GCInfoEncodesRevPInvokeFrame () && ( state->revPInvokeOffset != header.revPInvokeOffset ) )
689688 {
690- _ASSERTE (GCInfoEncodesRevPInvokeFrame ());
691689 assert (state->revPInvokeOffset == INVALID_REV_PINVOKE_OFFSET || state->revPInvokeOffset == HAS_REV_PINVOKE_FRAME_OFFSET);
692690
693691 if (state->revPInvokeOffset == INVALID_REV_PINVOKE_OFFSET)
@@ -1298,13 +1296,17 @@ size_t GCInfo::gcInfoBlockHdrSave(
12981296 header->genericsContext = compiler->lvaReportParamTypeArg ();
12991297 header->genericsContextIsMethodDesc =
13001298 header->genericsContext && (compiler->info .compMethodInfo ->options & (CORINFO_GENERICS_CTXT_FROM_METHODDESC));
1301- header->gsCookieOffset = INVALID_GS_COOKIE_OFFSET;
13021299
1303- ReturnKind returnKind = getReturnKind ();
1304- _ASSERTE (IsValidReturnKind (returnKind) && " Return Kind must be valid" );
1305- _ASSERTE (!IsStructReturnKind (returnKind) && " Struct Return Kinds Unexpected for JIT32" );
1306- header->returnKind = returnKind;
1300+ if (GCInfoEncodesReturnKind ())
1301+ {
1302+ ReturnKind returnKind = getReturnKind ();
1303+ _ASSERTE (IsValidReturnKind (returnKind) && " Return Kind must be valid" );
1304+ _ASSERTE (!IsStructReturnKind (returnKind) && " Struct Return Kinds Unexpected for JIT32" );
1305+ _ASSERTE ((returnKind < SET_RET_KIND_MAX) && " ReturnKind has no legal encoding" );
1306+ header->returnKind = returnKind;
1307+ }
13071308
1309+ header->gsCookieOffset = INVALID_GS_COOKIE_OFFSET;
13081310 if (compiler->getNeedsGSSecurityCookie ())
13091311 {
13101312 assert (compiler->lvaGSSecurityCookie != BAD_VAR_NUM);
@@ -1329,6 +1331,7 @@ size_t GCInfo::gcInfoBlockHdrSave(
13291331 // synchronized methods can't have more than 1 epilog
13301332 assert (header->epilogCount <= 1 );
13311333 }
1334+
13321335 header->revPInvokeOffset = INVALID_REV_PINVOKE_OFFSET;
13331336
13341337 assert ((compiler->compArgSize & 0x3 ) == 0 );
0 commit comments