@@ -3640,8 +3640,9 @@ emitter::instrDesc* emitter::emitNewInstrCallInd(int argCnt,
3640
3640
instrDescCGCA* id;
3641
3641
3642
3642
id = emitAllocInstrCGCA (retSize);
3643
-
3644
- id->idSetIsLargeCall ();
3643
+ id->idSetIsLargeCns ();
3644
+ id->idSetIsCall ();
3645
+ assert (id->idIsLargeCall ());
3645
3646
3646
3647
VarSetOps::Assign (emitComp, id->idcGCvars , GCvars);
3647
3648
id->idcGcrefRegs = gcrefRegs;
@@ -3663,6 +3664,7 @@ emitter::instrDesc* emitter::emitNewInstrCallInd(int argCnt,
3663
3664
3664
3665
/* Make sure we didn't waste space unexpectedly */
3665
3666
assert (!id->idIsLargeCns ());
3667
+ id->idSetIsCall ();
3666
3668
3667
3669
#ifdef TARGET_XARCH
3668
3670
/* Store the displacement and make sure the value fit */
@@ -3720,7 +3722,9 @@ emitter::instrDesc* emitter::emitNewInstrCallDir(int argCnt,
3720
3722
3721
3723
// printf("Direct call with GC vars / big arg cnt / explicit scope\n");
3722
3724
3723
- id->idSetIsLargeCall ();
3725
+ id->idSetIsLargeCns ();
3726
+ id->idSetIsCall ();
3727
+ assert (id->idIsLargeCall ());
3724
3728
3725
3729
VarSetOps::Assign (emitComp, id->idcGCvars , GCvars);
3726
3730
id->idcGcrefRegs = gcrefRegs;
@@ -3742,6 +3746,7 @@ emitter::instrDesc* emitter::emitNewInstrCallDir(int argCnt,
3742
3746
3743
3747
/* Make sure we didn't waste space unexpectedly */
3744
3748
assert (!id->idIsLargeCns ());
3749
+ id->idSetIsCall ();
3745
3750
3746
3751
/* Save the live GC registers in the unused register fields */
3747
3752
assert ((gcrefRegs & RBM_CALLEE_TRASH) == 0 );
@@ -8763,6 +8768,16 @@ void emitter::emitUpdateLiveGCvars(VARSET_VALARG_TP vars, BYTE* addr)
8763
8768
emitThisGCrefVset = true ;
8764
8769
}
8765
8770
8771
+ /* ****************************************************************************
8772
+ *
8773
+ * Last emitted instruction is a call that is not a NoGC call.
8774
+ */
8775
+
8776
+ bool emitter::emitLastInsIsCallWithGC ()
8777
+ {
8778
+ return emitLastIns != nullptr && emitLastIns->idIsCall () && !emitLastIns->idIsNoGC ();
8779
+ }
8780
+
8766
8781
/* ****************************************************************************
8767
8782
*
8768
8783
* Record a call location for GC purposes (we know that this is a method that
0 commit comments