summaryrefslogtreecommitdiff
path: root/src/lj_asm.c
diff options
context:
space:
mode:
Diffstat (limited to 'src/lj_asm.c')
-rw-r--r--src/lj_asm.c6
1 files changed, 1 insertions, 5 deletions
diff --git a/src/lj_asm.c b/src/lj_asm.c
index 8e7c98ee..a69f4461 100644
--- a/src/lj_asm.c
+++ b/src/lj_asm.c
@@ -2558,7 +2558,6 @@ static void asm_cnew(ASMState *as, IRIns *ir)
2558 lj_ctype_size(cts, typeid) : (CTSize)IR(ir->op2)->i; 2558 lj_ctype_size(cts, typeid) : (CTSize)IR(ir->op2)->i;
2559 const CCallInfo *ci = &lj_ir_callinfo[IRCALL_lj_mem_newgco]; 2559 const CCallInfo *ci = &lj_ir_callinfo[IRCALL_lj_mem_newgco];
2560 IRRef args[2]; 2560 IRRef args[2];
2561 int gcfin = 0;
2562 lua_assert(sz != CTSIZE_INVALID); 2561 lua_assert(sz != CTSIZE_INVALID);
2563 2562
2564 args[0] = ASMREF_L; /* lua_State *L */ 2563 args[0] = ASMREF_L; /* lua_State *L */
@@ -2605,15 +2604,12 @@ static void asm_cnew(ASMState *as, IRIns *ir)
2605 } while (1); 2604 } while (1);
2606#endif 2605#endif
2607 lua_assert(sz == 4 || (sz == 8 && (LJ_64 || LJ_HASFFI))); 2606 lua_assert(sz == 4 || (sz == 8 && (LJ_64 || LJ_HASFFI)));
2608 } else {
2609 if (lj_ctype_meta(cts, typeid, MM_gc) != NULL)
2610 gcfin = LJ_GC_CDATA_FIN;
2611 } 2607 }
2612 2608
2613 /* Combine initialization of marked, gct and typeid. */ 2609 /* Combine initialization of marked, gct and typeid. */
2614 emit_movtomro(as, RID_ECX, RID_RET, offsetof(GCcdata, marked)); 2610 emit_movtomro(as, RID_ECX, RID_RET, offsetof(GCcdata, marked));
2615 emit_gri(as, XG_ARITHi(XOg_OR), RID_ECX, 2611 emit_gri(as, XG_ARITHi(XOg_OR), RID_ECX,
2616 (int32_t)((~LJ_TCDATA<<8)+(typeid<<16)+gcfin)); 2612 (int32_t)((~LJ_TCDATA<<8)+(typeid<<16)));
2617 emit_gri(as, XG_ARITHi(XOg_AND), RID_ECX, LJ_GC_WHITES); 2613 emit_gri(as, XG_ARITHi(XOg_AND), RID_ECX, LJ_GC_WHITES);
2618 emit_opgl(as, XO_MOVZXb, RID_ECX, gc.currentwhite); 2614 emit_opgl(as, XO_MOVZXb, RID_ECX, gc.currentwhite);
2619 2615