Add explicit IR_GCSTEP instruction.
This commit is contained in:
@@ -2379,7 +2379,7 @@ static void asm_gc_check(ASMState *as)
|
||||
asm_gencall(as, ci, args);
|
||||
tmp = ra_releasetmp(as, ASMREF_TMP1);
|
||||
emit_loada(as, tmp, J2G(as->J));
|
||||
emit_loadi(as, ra_releasetmp(as, ASMREF_TMP2), (int32_t)as->gcsteps);
|
||||
emit_loadi(as, ra_releasetmp(as, ASMREF_TMP2), as->gcsteps);
|
||||
/* Jump around GC step if GC total < GC threshold. */
|
||||
emit_sjcc(as, CC_B, l_end);
|
||||
emit_opgl(as, XO_ARITH(XOg_CMP), tmp, gc.threshold);
|
||||
@@ -2556,6 +2556,7 @@ static void asm_ir(ASMState *as, IRIns *ir)
|
||||
ra_alloc1(as, ir->op1, irt_isfp(ir->t) ? RSET_FPR : RSET_GPR); break;
|
||||
case IR_PHI: asm_phi(as, ir); break;
|
||||
case IR_HIOP: asm_hiop(as, ir); break;
|
||||
case IR_GCSTEP: asm_gcstep(as, ir); break;
|
||||
|
||||
/* Guarded assertions. */
|
||||
case IR_LT: case IR_GE: case IR_LE: case IR_GT:
|
||||
|
||||
Reference in New Issue
Block a user