Explorar o código

FFI: Limit snapshot optimization for cdata comparisons.

Mike Pall %!s(int64=14) %!d(string=hai) anos
pai
achega
d9b518874d
Modificáronse 1 ficheiros con 2 adicións e 1 borrados
  1. 2 1
      src/lj_crecord.c

+ 2 - 1
src/lj_crecord.c

@@ -1003,7 +1003,8 @@ void LJ_FASTCALL recff_cdata_arith(jit_State *J, RecordFFData *rd)
 	(tr = crec_arith_ptr(J, sp, s, (MMS)rd->data))) {
       J->base[0] = tr;
       /* Fixup cdata comparisons, too. Avoids some cdata escapes. */
-      if (J->postproc == LJ_POST_FIXGUARD && frame_iscont(J->L->base-1)) {
+      if (J->postproc == LJ_POST_FIXGUARD && frame_iscont(J->L->base-1) &&
+	  !irt_isguard(J->guardemit)) {
 	const BCIns *pc = frame_contpc(J->L->base-1) - 1;
 	if (bc_op(*pc) <= BC_ISNEP) {
 	  setframe_pc(&J2G(J)->tmptv, pc);