@@ -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,7 +684,7 @@ 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 {
690689 _ASSERTE (GCInfoEncodesRevPInvokeFrame ());
691690 assert (state->revPInvokeOffset == INVALID_REV_PINVOKE_OFFSET || state->revPInvokeOffset == HAS_REV_PINVOKE_FRAME_OFFSET);
@@ -1298,13 +1297,17 @@ size_t GCInfo::gcInfoBlockHdrSave(
12981297 header->genericsContext = compiler->lvaReportParamTypeArg ();
12991298 header->genericsContextIsMethodDesc =
13001299 header->genericsContext && (compiler->info .compMethodInfo ->options & (CORINFO_GENERICS_CTXT_FROM_METHODDESC));
1301- header->gsCookieOffset = INVALID_GS_COOKIE_OFFSET;
13021300
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;
1301+ if (GCInfoEncodesReturnKind ())
1302+ {
1303+ ReturnKind returnKind = getReturnKind ();
1304+ _ASSERTE (IsValidReturnKind (returnKind) && " Return Kind must be valid" );
1305+ _ASSERTE (!IsStructReturnKind (returnKind) && " Struct Return Kinds Unexpected for JIT32" );
1306+ _ASSERTE ((returnKind < SET_RET_KIND_MAX) && " ReturnKind has no legal encoding" );
1307+ header->returnKind = returnKind;
1308+ }
13071309
1310+ header->gsCookieOffset = INVALID_GS_COOKIE_OFFSET;
13081311 if (compiler->getNeedsGSSecurityCookie ())
13091312 {
13101313 assert (compiler->lvaGSSecurityCookie != BAD_VAR_NUM);
@@ -1329,6 +1332,7 @@ size_t GCInfo::gcInfoBlockHdrSave(
13291332 // synchronized methods can't have more than 1 epilog
13301333 assert (header->epilogCount <= 1 );
13311334 }
1335+
13321336 header->revPInvokeOffset = INVALID_REV_PINVOKE_OFFSET;
13331337
13341338 assert ((compiler->compArgSize & 0x3 ) == 0 );
0 commit comments