]> git.ipfire.org Git - thirdparty/LuaJIT.git/commitdiff
Explicitly indicate tailcall from fast function fallback.
authorMike Pall <mike>
Thu, 2 Sep 2010 15:16:56 +0000 (17:16 +0200)
committerMike Pall <mike>
Thu, 2 Sep 2010 15:16:56 +0000 (17:16 +0200)
src/buildvm_x64.h
src/buildvm_x64win.h
src/buildvm_x86.dasc
src/buildvm_x86.h
src/lib_base.c
src/lj_lib.h

index 91da5f6b1e3b15d310b3ea094c8b853ea4ff95eb..f2816d145d56e76676b2ccf54978265ef89dedcb 100644 (file)
@@ -12,7 +12,7 @@
 #define DASM_SECTION_CODE_OP   0
 #define DASM_SECTION_CODE_SUB  1
 #define DASM_MAXSECTION                2
-static const unsigned char build_actionlist[14099] = {
+static const unsigned char build_actionlist[14100] = {
   254,1,248,10,252,247,195,237,15,132,244,11,131,227,252,248,41,218,72,141,
   76,25,252,248,139,90,252,252,199,68,10,4,237,248,12,131,192,1,137,68,36,4,
   252,247,195,237,15,132,244,13,248,14,129,252,243,239,252,247,195,237,15,133,
@@ -345,12 +345,12 @@ static const unsigned char build_actionlist[14099] = {
   244,125,248,117,184,237,252,233,244,55,248,119,184,237,248,55,139,108,36,
   24,139,90,252,252,137,92,36,28,137,149,233,141,68,194,252,248,141,136,233,
   137,133,233,139,66,252,248,59,141,233,15,135,244,251,137,252,239,252,255,
-  144,233,139,149,233,133,192,15,133,244,69,248,1,255,139,133,233,41,208,193,
-  232,3,131,192,1,139,106,252,248,57,90,252,252,15,133,244,248,139,157,233,
-  139,11,15,182,252,233,15,182,205,131,195,4,65,252,255,36,252,238,248,2,137,
-  209,252,247,195,237,15,133,244,249,15,182,107,252,253,72,252,247,213,141,
-  20,252,234,252,233,244,27,248,3,137,221,131,229,252,248,41,252,234,252,233,
-  244,27,248,5,190,237,137,252,239,232,251,1,0,139,149,233,252,233,244,1,248,
+  144,233,139,149,233,133,192,15,143,244,69,248,1,255,139,141,233,41,209,193,
+  252,233,3,133,192,141,65,1,139,106,252,248,15,133,244,248,139,157,233,139,
+  11,15,182,252,233,15,182,205,131,195,4,65,252,255,36,252,238,248,2,137,209,
+  252,247,195,237,15,133,244,249,15,182,107,252,253,72,252,247,213,141,20,252,
+  234,252,233,244,27,248,3,137,221,131,229,252,248,41,252,234,252,233,244,27,
+  248,5,190,237,137,252,239,232,251,1,0,139,149,233,49,192,252,233,244,1,248,
   66,93,72,137,108,36,8,139,108,36,24,137,92,36,28,137,149,233,255,141,68,194,
   252,248,137,252,239,137,133,233,232,251,1,19,139,149,233,139,133,233,41,208,
   193,232,3,131,192,1,72,139,108,36,8,85,195,248,136,255,65,15,182,134,233,
@@ -1344,88 +1344,88 @@ static void build_subroutines(BuildCtx *ctx, int cmov, int sse)
   }
   dasm_put(Dst, 6799, 1+2, 1+1, Dt1(->base), 8*LUA_MINSTACK, Dt1(->top), Dt1(->maxstack), Dt8(->f), Dt1(->base));
   dasm_put(Dst, 6877, Dt1(->top), Dt7(->pc), FRAME_TYPE, LUA_MINSTACK, Dt1(->base), Dt1(->base));
-  dasm_put(Dst, 7003, Dt1(->top), Dt1(->base), Dt1(->top));
+  dasm_put(Dst, 7004, Dt1(->top), Dt1(->base), Dt1(->top));
 #if LJ_HASJIT
-  dasm_put(Dst, 7042, DISPATCH_GL(hookmask), HOOK_VMEVENT, HOOK_ACTIVE, LUA_MASKLINE|LUA_MASKCOUNT, DISPATCH_GL(hookcount));
+  dasm_put(Dst, 7043, DISPATCH_GL(hookmask), HOOK_VMEVENT, HOOK_ACTIVE, LUA_MASKLINE|LUA_MASKCOUNT, DISPATCH_GL(hookcount));
 #endif
-  dasm_put(Dst, 7075, DISPATCH_GL(hookmask), HOOK_ACTIVE, DISPATCH_GL(hookmask), HOOK_ACTIVE, LUA_MASKLINE|LUA_MASKCOUNT, DISPATCH_GL(hookcount), LUA_MASKLINE);
-  dasm_put(Dst, 7129, Dt1(->base), Dt1(->base), GG_DISP2STATIC);
+  dasm_put(Dst, 7076, DISPATCH_GL(hookmask), HOOK_ACTIVE, DISPATCH_GL(hookmask), HOOK_ACTIVE, LUA_MASKLINE|LUA_MASKCOUNT, DISPATCH_GL(hookcount), LUA_MASKLINE);
+  dasm_put(Dst, 7130, Dt1(->base), Dt1(->base), GG_DISP2STATIC);
 #if LJ_HASJIT
-  dasm_put(Dst, 7196, Dt7(->pc), PC2PROTO(framesize), Dt1(->base), Dt1(->top), GG_DISP2J, DISPATCH_J(L));
+  dasm_put(Dst, 7197, Dt7(->pc), PC2PROTO(framesize), Dt1(->base), Dt1(->top), GG_DISP2J, DISPATCH_J(L));
 #endif
-  dasm_put(Dst, 7243);
+  dasm_put(Dst, 7244);
 #if LJ_HASJIT
-  dasm_put(Dst, 7070);
+  dasm_put(Dst, 7071);
 #endif
-  dasm_put(Dst, 7250);
+  dasm_put(Dst, 7251);
 #if LJ_HASJIT
-  dasm_put(Dst, 7253);
+  dasm_put(Dst, 7254);
 #endif
-  dasm_put(Dst, 7263, Dt1(->base), Dt1(->top));
+  dasm_put(Dst, 7264, Dt1(->base), Dt1(->top));
 #if LJ_HASJIT
-  dasm_put(Dst, 7296);
+  dasm_put(Dst, 7297);
 #endif
-  dasm_put(Dst, 7301, Dt1(->base), Dt1(->top));
+  dasm_put(Dst, 7302, Dt1(->base), Dt1(->top));
 #if LJ_HASJIT
-  dasm_put(Dst, 7332, DISPATCH_GL(vmstate), DISPATCH_GL(vmstate), ~LJ_VMST_EXIT, DISPATCH_J(exitno), DISPATCH_J(parent), 16*8, DISPATCH_GL(jit_L), DISPATCH_GL(jit_base), DISPATCH_J(L), DISPATCH_GL(jit_L), Dt1(->base), GG_DISP2J, Dt1(->cframe), CFRAME_RAWMASK, CFRAME_OFS_L, Dt1(->base), CFRAME_OFS_PC);
+  dasm_put(Dst, 7333, DISPATCH_GL(vmstate), DISPATCH_GL(vmstate), ~LJ_VMST_EXIT, DISPATCH_J(exitno), DISPATCH_J(parent), 16*8, DISPATCH_GL(jit_L), DISPATCH_GL(jit_base), DISPATCH_J(L), DISPATCH_GL(jit_L), Dt1(->base), GG_DISP2J, Dt1(->cframe), CFRAME_RAWMASK, CFRAME_OFS_L, Dt1(->base), CFRAME_OFS_PC);
 #endif
-  dasm_put(Dst, 7571);
+  dasm_put(Dst, 7572);
 #if LJ_HASJIT
-  dasm_put(Dst, 7574, Dt7(->pc), PC2PROTO(k), DISPATCH_GL(jit_L), DISPATCH_GL(vmstate), ~LJ_VMST_INTERP, BC_FUNCF);
+  dasm_put(Dst, 7575, Dt7(->pc), PC2PROTO(k), DISPATCH_GL(jit_L), DISPATCH_GL(vmstate), ~LJ_VMST_INTERP, BC_FUNCF);
 #endif
-  dasm_put(Dst, 7674);
+  dasm_put(Dst, 7675);
   if (!sse) {
-  dasm_put(Dst, 7677);
+  dasm_put(Dst, 7678);
   }
-  dasm_put(Dst, 7722, (unsigned int)(U64x(7fffffff,ffffffff)), (unsigned int)((U64x(7fffffff,ffffffff))>>32), (unsigned int)(U64x(43300000,00000000)), (unsigned int)((U64x(43300000,00000000))>>32), (unsigned int)(U64x(3ff00000,00000000)), (unsigned int)((U64x(3ff00000,00000000))>>32));
+  dasm_put(Dst, 7723, (unsigned int)(U64x(7fffffff,ffffffff)), (unsigned int)((U64x(7fffffff,ffffffff))>>32), (unsigned int)(U64x(43300000,00000000)), (unsigned int)((U64x(43300000,00000000))>>32), (unsigned int)(U64x(3ff00000,00000000)), (unsigned int)((U64x(3ff00000,00000000))>>32));
   if (!sse) {
-  dasm_put(Dst, 7808);
+  dasm_put(Dst, 7809);
   }
-  dasm_put(Dst, 7853, (unsigned int)(U64x(7fffffff,ffffffff)), (unsigned int)((U64x(7fffffff,ffffffff))>>32), (unsigned int)(U64x(43300000,00000000)), (unsigned int)((U64x(43300000,00000000))>>32), (unsigned int)(U64x(bff00000,00000000)), (unsigned int)((U64x(bff00000,00000000))>>32));
+  dasm_put(Dst, 7854, (unsigned int)(U64x(7fffffff,ffffffff)), (unsigned int)((U64x(7fffffff,ffffffff))>>32), (unsigned int)(U64x(43300000,00000000)), (unsigned int)((U64x(43300000,00000000))>>32), (unsigned int)(U64x(bff00000,00000000)), (unsigned int)((U64x(bff00000,00000000))>>32));
   if (!sse) {
-  dasm_put(Dst, 7939);
+  dasm_put(Dst, 7940);
   }
-  dasm_put(Dst, 7978, (unsigned int)(U64x(7fffffff,ffffffff)), (unsigned int)((U64x(7fffffff,ffffffff))>>32), (unsigned int)(U64x(43300000,00000000)), (unsigned int)((U64x(43300000,00000000))>>32), (unsigned int)(U64x(3ff00000,00000000)), (unsigned int)((U64x(3ff00000,00000000))>>32));
+  dasm_put(Dst, 7979, (unsigned int)(U64x(7fffffff,ffffffff)), (unsigned int)((U64x(7fffffff,ffffffff))>>32), (unsigned int)(U64x(43300000,00000000)), (unsigned int)((U64x(43300000,00000000))>>32), (unsigned int)(U64x(3ff00000,00000000)), (unsigned int)((U64x(3ff00000,00000000))>>32));
   if (sse) {
-    dasm_put(Dst, 8067, (unsigned int)(U64x(7fffffff,ffffffff)), (unsigned int)((U64x(7fffffff,ffffffff))>>32), (unsigned int)(U64x(43300000,00000000)), (unsigned int)((U64x(43300000,00000000))>>32), (unsigned int)(U64x(3ff00000,00000000)), (unsigned int)((U64x(3ff00000,00000000))>>32));
+    dasm_put(Dst, 8068, (unsigned int)(U64x(7fffffff,ffffffff)), (unsigned int)((U64x(7fffffff,ffffffff))>>32), (unsigned int)(U64x(43300000,00000000)), (unsigned int)((U64x(43300000,00000000))>>32), (unsigned int)(U64x(3ff00000,00000000)), (unsigned int)((U64x(3ff00000,00000000))>>32));
   } else {
-    dasm_put(Dst, 8181);
+    dasm_put(Dst, 8182);
   }
-  dasm_put(Dst, 8228);
+  dasm_put(Dst, 8229);
   if (!sse) {
   } else {
-    dasm_put(Dst, 8305);
+    dasm_put(Dst, 8306);
   }
-  dasm_put(Dst, 8308);
-  dasm_put(Dst, 8393, (unsigned int)(U64x(3ff00000,00000000)), (unsigned int)((U64x(3ff00000,00000000))>>32), (unsigned int)(U64x(3ff00000,00000000)), (unsigned int)((U64x(3ff00000,00000000))>>32));
-  dasm_put(Dst, 8494, (unsigned int)(U64x(3ff00000,00000000)), (unsigned int)((U64x(3ff00000,00000000))>>32), (unsigned int)(U64x(7fffffff,ffffffff)), (unsigned int)((U64x(7fffffff,ffffffff))>>32), (unsigned int)(U64x(3ff00000,00000000)), (unsigned int)((U64x(3ff00000,00000000))>>32), (unsigned int)(U64x(7ff00000,00000000)), (unsigned int)((U64x(7ff00000,00000000))>>32));
-  dasm_put(Dst, 8668);
+  dasm_put(Dst, 8309);
+  dasm_put(Dst, 8394, (unsigned int)(U64x(3ff00000,00000000)), (unsigned int)((U64x(3ff00000,00000000))>>32), (unsigned int)(U64x(3ff00000,00000000)), (unsigned int)((U64x(3ff00000,00000000))>>32));
+  dasm_put(Dst, 8495, (unsigned int)(U64x(3ff00000,00000000)), (unsigned int)((U64x(3ff00000,00000000))>>32), (unsigned int)(U64x(7fffffff,ffffffff)), (unsigned int)((U64x(7fffffff,ffffffff))>>32), (unsigned int)(U64x(3ff00000,00000000)), (unsigned int)((U64x(3ff00000,00000000))>>32), (unsigned int)(U64x(7ff00000,00000000)), (unsigned int)((U64x(7ff00000,00000000))>>32));
+  dasm_put(Dst, 8669);
 #if LJ_HASJIT
   if (sse) {
-    dasm_put(Dst, 8709);
-    dasm_put(Dst, 8779);
-    dasm_put(Dst, 8851);
+    dasm_put(Dst, 8710);
+    dasm_put(Dst, 8780);
+    dasm_put(Dst, 8852);
   } else {
-    dasm_put(Dst, 8903);
-    dasm_put(Dst, 8995);
+    dasm_put(Dst, 8904);
+    dasm_put(Dst, 8996);
   }
-  dasm_put(Dst, 9041);
+  dasm_put(Dst, 9042);
 #endif
-  dasm_put(Dst, 9045);
+  dasm_put(Dst, 9046);
   if (sse) {
-    dasm_put(Dst, 9048, (unsigned int)(U64x(80000000,00000000)), (unsigned int)((U64x(80000000,00000000))>>32));
-    dasm_put(Dst, 9133, (unsigned int)(U64x(7fffffff,ffffffff)), (unsigned int)((U64x(7fffffff,ffffffff))>>32));
+    dasm_put(Dst, 9049, (unsigned int)(U64x(80000000,00000000)), (unsigned int)((U64x(80000000,00000000))>>32));
+    dasm_put(Dst, 9134, (unsigned int)(U64x(7fffffff,ffffffff)), (unsigned int)((U64x(7fffffff,ffffffff))>>32));
   } else {
-    dasm_put(Dst, 9261);
-    dasm_put(Dst, 9344);
+    dasm_put(Dst, 9262);
+    dasm_put(Dst, 9345);
     if (cmov) {
-    dasm_put(Dst, 9399);
+    dasm_put(Dst, 9400);
     } else {
-    dasm_put(Dst, 9418);
+    dasm_put(Dst, 9419);
     }
-    dasm_put(Dst, 9041);
+    dasm_put(Dst, 9042);
   }
-  dasm_put(Dst, 9459);
+  dasm_put(Dst, 9460);
 }
 
 /* Generate the code for a single instruction. */
@@ -1441,595 +1441,595 @@ static void build_ins(BuildCtx *ctx, BCOp op, int defop, int cmov, int sse)
   /* Remember: all ops branch for a true comparison, fall through otherwise. */
 
   case BC_ISLT: case BC_ISGE: case BC_ISLE: case BC_ISGT:
-    dasm_put(Dst, 9481, LJ_TISNUM, LJ_TISNUM);
+    dasm_put(Dst, 9482, LJ_TISNUM, LJ_TISNUM);
     if (sse) {
-      dasm_put(Dst, 9502);
+      dasm_put(Dst, 9503);
     } else {
-      dasm_put(Dst, 9517);
+      dasm_put(Dst, 9518);
       if (cmov) {
-      dasm_put(Dst, 9527);
+      dasm_put(Dst, 9528);
       } else {
-      dasm_put(Dst, 9533);
+      dasm_put(Dst, 9534);
       }
     }
     switch (op) {
     case BC_ISLT:
-      dasm_put(Dst, 9540);
+      dasm_put(Dst, 9541);
       break;
     case BC_ISGE:
-      dasm_put(Dst, 9339);
+      dasm_put(Dst, 9340);
       break;
     case BC_ISLE:
       dasm_put(Dst, 5947);
       break;
     case BC_ISGT:
-      dasm_put(Dst, 9545);
+      dasm_put(Dst, 9546);
       break;
     default: break;  /* Shut up GCC. */
     }
-    dasm_put(Dst, 9550, -BCBIAS_J*4);
+    dasm_put(Dst, 9551, -BCBIAS_J*4);
     break;
 
   case BC_ISEQV: case BC_ISNEV:
     vk = op == BC_ISEQV;
-    dasm_put(Dst, 9585, LJ_TISNUM, LJ_TISNUM);
+    dasm_put(Dst, 9586, LJ_TISNUM, LJ_TISNUM);
     if (sse) {
-      dasm_put(Dst, 9611);
+      dasm_put(Dst, 9612);
     } else {
-      dasm_put(Dst, 9623);
+      dasm_put(Dst, 9624);
       if (cmov) {
-      dasm_put(Dst, 9527);
+      dasm_put(Dst, 9528);
       } else {
-      dasm_put(Dst, 9533);
+      dasm_put(Dst, 9534);
       }
     }
   iseqne_fp:
     if (vk) {
-      dasm_put(Dst, 9630);
+      dasm_put(Dst, 9631);
     } else {
-      dasm_put(Dst, 9639);
+      dasm_put(Dst, 9640);
     }
   iseqne_end:
     if (vk) {
-      dasm_put(Dst, 9648, -BCBIAS_J*4);
+      dasm_put(Dst, 9649, -BCBIAS_J*4);
     } else {
-      dasm_put(Dst, 9663, -BCBIAS_J*4);
+      dasm_put(Dst, 9664, -BCBIAS_J*4);
     }
-    dasm_put(Dst, 9564);
+    dasm_put(Dst, 9565);
     if (op == BC_ISEQV || op == BC_ISNEV) {
-      dasm_put(Dst, 9678, LJ_TISPRI, LJ_TISTABUD, Dt6(->metatable), Dt6(->nomm), 1<<MM_eq);
+      dasm_put(Dst, 9679, LJ_TISPRI, LJ_TISTABUD, Dt6(->metatable), Dt6(->nomm), 1<<MM_eq);
       if (vk) {
-       dasm_put(Dst, 9736);
+       dasm_put(Dst, 9737);
       } else {
-       dasm_put(Dst, 9740);
+       dasm_put(Dst, 9741);
       }
-      dasm_put(Dst, 9746);
+      dasm_put(Dst, 9747);
     }
     break;
   case BC_ISEQS: case BC_ISNES:
     vk = op == BC_ISEQS;
-    dasm_put(Dst, 9751, LJ_TSTR);
+    dasm_put(Dst, 9752, LJ_TSTR);
   iseqne_test:
     if (vk) {
-      dasm_put(Dst, 9634);
+      dasm_put(Dst, 9635);
     } else {
       dasm_put(Dst, 2836);
     }
     goto iseqne_end;
   case BC_ISEQN: case BC_ISNEN:
     vk = op == BC_ISEQN;
-    dasm_put(Dst, 9776, LJ_TISNUM);
+    dasm_put(Dst, 9777, LJ_TISNUM);
     if (sse) {
-      dasm_put(Dst, 9790);
+      dasm_put(Dst, 9791);
     } else {
-      dasm_put(Dst, 9803);
+      dasm_put(Dst, 9804);
       if (cmov) {
-      dasm_put(Dst, 9527);
+      dasm_put(Dst, 9528);
       } else {
-      dasm_put(Dst, 9533);
+      dasm_put(Dst, 9534);
       }
     }
     goto iseqne_fp;
   case BC_ISEQP: case BC_ISNEP:
     vk = op == BC_ISEQP;
-    dasm_put(Dst, 9811);
+    dasm_put(Dst, 9812);
     goto iseqne_test;
 
   /* -- Unary test and copy ops ------------------------------------------- */
 
   case BC_ISTC: case BC_ISFC: case BC_IST: case BC_ISF:
-    dasm_put(Dst, 9823, LJ_TISTRUECOND);
+    dasm_put(Dst, 9824, LJ_TISTRUECOND);
     if (op == BC_IST || op == BC_ISTC) {
-      dasm_put(Dst, 9835);
+      dasm_put(Dst, 9836);
     } else {
-      dasm_put(Dst, 9840);
+      dasm_put(Dst, 9841);
     }
     if (op == BC_ISTC || op == BC_ISFC) {
-      dasm_put(Dst, 9845);
+      dasm_put(Dst, 9846);
     }
-    dasm_put(Dst, 9856, -BCBIAS_J*4);
+    dasm_put(Dst, 9857, -BCBIAS_J*4);
     break;
 
   /* -- Unary ops --------------------------------------------------------- */
 
   case BC_MOV:
-    dasm_put(Dst, 9889);
+    dasm_put(Dst, 9890);
     break;
   case BC_NOT:
-    dasm_put(Dst, 9924, LJ_TISTRUECOND, LJ_TTRUE);
+    dasm_put(Dst, 9925, LJ_TISTRUECOND, LJ_TTRUE);
     break;
   case BC_UNM:
-    dasm_put(Dst, 9961, LJ_TISNUM);
+    dasm_put(Dst, 9962, LJ_TISNUM);
     if (sse) {
-      dasm_put(Dst, 9972, (unsigned int)(U64x(80000000,00000000)), (unsigned int)((U64x(80000000,00000000))>>32));
+      dasm_put(Dst, 9973, (unsigned int)(U64x(80000000,00000000)), (unsigned int)((U64x(80000000,00000000))>>32));
     } else {
-      dasm_put(Dst, 9997);
+      dasm_put(Dst, 9998);
     }
-    dasm_put(Dst, 9564);
+    dasm_put(Dst, 9565);
     break;
   case BC_LEN:
-    dasm_put(Dst, 10006, LJ_TSTR);
+    dasm_put(Dst, 10007, LJ_TSTR);
     if (sse) {
-      dasm_put(Dst, 10020, Dt5(->len));
+      dasm_put(Dst, 10021, Dt5(->len));
     } else {
-      dasm_put(Dst, 10038, Dt5(->len));
+      dasm_put(Dst, 10039, Dt5(->len));
     }
-    dasm_put(Dst, 10047, LJ_TTAB);
+    dasm_put(Dst, 10048, LJ_TTAB);
     if (sse) {
-      dasm_put(Dst, 10089);
+      dasm_put(Dst, 10090);
     } else {
     }
-    dasm_put(Dst, 10098);
+    dasm_put(Dst, 10099);
     break;
 
   /* -- Binary ops -------------------------------------------------------- */
 
 
   case BC_ADDVN: case BC_ADDNV: case BC_ADDVV:
-    dasm_put(Dst, 10108);
+    dasm_put(Dst, 10109);
     vk = ((int)op - BC_ADDVN) / (BC_ADDNV-BC_ADDVN);
     switch (vk) {
     case 0:
-    dasm_put(Dst, 10116, LJ_TISNUM);
+    dasm_put(Dst, 10117, LJ_TISNUM);
     if (sse) {
-    dasm_put(Dst, 10128);
+    dasm_put(Dst, 10129);
     } else {
-    dasm_put(Dst, 10143);
+    dasm_put(Dst, 10144);
     }
       break;
     case 1:
-    dasm_put(Dst, 10152, LJ_TISNUM);
+    dasm_put(Dst, 10153, LJ_TISNUM);
     if (sse) {
-    dasm_put(Dst, 10164);
+    dasm_put(Dst, 10165);
     } else {
-    dasm_put(Dst, 10179);
+    dasm_put(Dst, 10180);
     }
       break;
     default:
-    dasm_put(Dst, 10188, LJ_TISNUM, LJ_TISNUM);
+    dasm_put(Dst, 10189, LJ_TISNUM, LJ_TISNUM);
     if (sse) {
-    dasm_put(Dst, 10210);
+    dasm_put(Dst, 10211);
     } else {
-    dasm_put(Dst, 10224);
+    dasm_put(Dst, 10225);
     }
       break;
     }
     if (sse) {
-    dasm_put(Dst, 9990);
+    dasm_put(Dst, 9991);
     } else {
-    dasm_put(Dst, 10002);
+    dasm_put(Dst, 10003);
     }
-    dasm_put(Dst, 9564);
+    dasm_put(Dst, 9565);
     break;
   case BC_SUBVN: case BC_SUBNV: case BC_SUBVV:
-    dasm_put(Dst, 10108);
+    dasm_put(Dst, 10109);
     vk = ((int)op - BC_ADDVN) / (BC_ADDNV-BC_ADDVN);
     switch (vk) {
     case 0:
-    dasm_put(Dst, 10116, LJ_TISNUM);
+    dasm_put(Dst, 10117, LJ_TISNUM);
     if (sse) {
-    dasm_put(Dst, 10232);
+    dasm_put(Dst, 10233);
     } else {
-    dasm_put(Dst, 10247);
+    dasm_put(Dst, 10248);
     }
       break;
     case 1:
-    dasm_put(Dst, 10152, LJ_TISNUM);
+    dasm_put(Dst, 10153, LJ_TISNUM);
     if (sse) {
-    dasm_put(Dst, 10256);
+    dasm_put(Dst, 10257);
     } else {
-    dasm_put(Dst, 10271);
+    dasm_put(Dst, 10272);
     }
       break;
     default:
-    dasm_put(Dst, 10188, LJ_TISNUM, LJ_TISNUM);
+    dasm_put(Dst, 10189, LJ_TISNUM, LJ_TISNUM);
     if (sse) {
-    dasm_put(Dst, 10280);
+    dasm_put(Dst, 10281);
     } else {
-    dasm_put(Dst, 10294);
+    dasm_put(Dst, 10295);
     }
       break;
     }
     if (sse) {
-    dasm_put(Dst, 9990);
+    dasm_put(Dst, 9991);
     } else {
-    dasm_put(Dst, 10002);
+    dasm_put(Dst, 10003);
     }
-    dasm_put(Dst, 9564);
+    dasm_put(Dst, 9565);
     break;
   case BC_MULVN: case BC_MULNV: case BC_MULVV:
-    dasm_put(Dst, 10108);
+    dasm_put(Dst, 10109);
     vk = ((int)op - BC_ADDVN) / (BC_ADDNV-BC_ADDVN);
     switch (vk) {
     case 0:
-    dasm_put(Dst, 10116, LJ_TISNUM);
+    dasm_put(Dst, 10117, LJ_TISNUM);
     if (sse) {
-    dasm_put(Dst, 10302);
+    dasm_put(Dst, 10303);
     } else {
-    dasm_put(Dst, 10317);
+    dasm_put(Dst, 10318);
     }
       break;
     case 1:
-    dasm_put(Dst, 10152, LJ_TISNUM);
+    dasm_put(Dst, 10153, LJ_TISNUM);
     if (sse) {
-    dasm_put(Dst, 10326);
+    dasm_put(Dst, 10327);
     } else {
-    dasm_put(Dst, 10341);
+    dasm_put(Dst, 10342);
     }
       break;
     default:
-    dasm_put(Dst, 10188, LJ_TISNUM, LJ_TISNUM);
+    dasm_put(Dst, 10189, LJ_TISNUM, LJ_TISNUM);
     if (sse) {
-    dasm_put(Dst, 10350);
+    dasm_put(Dst, 10351);
     } else {
-    dasm_put(Dst, 10364);
+    dasm_put(Dst, 10365);
     }
       break;
     }
     if (sse) {
-    dasm_put(Dst, 9990);
+    dasm_put(Dst, 9991);
     } else {
-    dasm_put(Dst, 10002);
+    dasm_put(Dst, 10003);
     }
-    dasm_put(Dst, 9564);
+    dasm_put(Dst, 9565);
     break;
   case BC_DIVVN: case BC_DIVNV: case BC_DIVVV:
-    dasm_put(Dst, 10108);
+    dasm_put(Dst, 10109);
     vk = ((int)op - BC_ADDVN) / (BC_ADDNV-BC_ADDVN);
     switch (vk) {
     case 0:
-    dasm_put(Dst, 10116, LJ_TISNUM);
+    dasm_put(Dst, 10117, LJ_TISNUM);
     if (sse) {
-    dasm_put(Dst, 10372);
+    dasm_put(Dst, 10373);
     } else {
-    dasm_put(Dst, 10387);
+    dasm_put(Dst, 10388);
     }
       break;
     case 1:
-    dasm_put(Dst, 10152, LJ_TISNUM);
+    dasm_put(Dst, 10153, LJ_TISNUM);
     if (sse) {
-    dasm_put(Dst, 10396);
+    dasm_put(Dst, 10397);
     } else {
-    dasm_put(Dst, 10411);
+    dasm_put(Dst, 10412);
     }
       break;
     default:
-    dasm_put(Dst, 10188, LJ_TISNUM, LJ_TISNUM);
+    dasm_put(Dst, 10189, LJ_TISNUM, LJ_TISNUM);
     if (sse) {
-    dasm_put(Dst, 10420);
+    dasm_put(Dst, 10421);
     } else {
-    dasm_put(Dst, 10434);
+    dasm_put(Dst, 10435);
     }
       break;
     }
     if (sse) {
-    dasm_put(Dst, 9990);
+    dasm_put(Dst, 9991);
     } else {
-    dasm_put(Dst, 10002);
+    dasm_put(Dst, 10003);
     }
-    dasm_put(Dst, 9564);
+    dasm_put(Dst, 9565);
     break;
   case BC_MODVN:
-    dasm_put(Dst, 10108);
+    dasm_put(Dst, 10109);
     vk = ((int)op - BC_ADDVN) / (BC_ADDNV-BC_ADDVN);
     switch (vk) {
     case 0:
-    dasm_put(Dst, 10116, LJ_TISNUM);
+    dasm_put(Dst, 10117, LJ_TISNUM);
     if (sse) {
-    dasm_put(Dst, 10442);
+    dasm_put(Dst, 10443);
     } else {
-    dasm_put(Dst, 10457);
+    dasm_put(Dst, 10458);
     }
       break;
     case 1:
-    dasm_put(Dst, 10152, LJ_TISNUM);
+    dasm_put(Dst, 10153, LJ_TISNUM);
     if (sse) {
-    dasm_put(Dst, 10466);
+    dasm_put(Dst, 10467);
     } else {
-    dasm_put(Dst, 10481);
+    dasm_put(Dst, 10482);
     }
       break;
     default:
-    dasm_put(Dst, 10188, LJ_TISNUM, LJ_TISNUM);
+    dasm_put(Dst, 10189, LJ_TISNUM, LJ_TISNUM);
     if (sse) {
-    dasm_put(Dst, 10490);
+    dasm_put(Dst, 10491);
     } else {
-    dasm_put(Dst, 10504);
+    dasm_put(Dst, 10505);
     }
       break;
     }
-    dasm_put(Dst, 10512);
+    dasm_put(Dst, 10513);
     if (sse) {
-    dasm_put(Dst, 9990);
+    dasm_put(Dst, 9991);
     } else {
-    dasm_put(Dst, 10002);
+    dasm_put(Dst, 10003);
     }
-    dasm_put(Dst, 9564);
+    dasm_put(Dst, 9565);
     break;
   case BC_MODNV: case BC_MODVV:
-    dasm_put(Dst, 10108);
+    dasm_put(Dst, 10109);
     vk = ((int)op - BC_ADDVN) / (BC_ADDNV-BC_ADDVN);
     switch (vk) {
     case 0:
-    dasm_put(Dst, 10116, LJ_TISNUM);
+    dasm_put(Dst, 10117, LJ_TISNUM);
     if (sse) {
-    dasm_put(Dst, 10442);
+    dasm_put(Dst, 10443);
     } else {
-    dasm_put(Dst, 10457);
+    dasm_put(Dst, 10458);
     }
       break;
     case 1:
-    dasm_put(Dst, 10152, LJ_TISNUM);
+    dasm_put(Dst, 10153, LJ_TISNUM);
     if (sse) {
-    dasm_put(Dst, 10466);
+    dasm_put(Dst, 10467);
     } else {
-    dasm_put(Dst, 10481);
+    dasm_put(Dst, 10482);
     }
       break;
     default:
-    dasm_put(Dst, 10188, LJ_TISNUM, LJ_TISNUM);
+    dasm_put(Dst, 10189, LJ_TISNUM, LJ_TISNUM);
     if (sse) {
-    dasm_put(Dst, 10490);
+    dasm_put(Dst, 10491);
     } else {
-    dasm_put(Dst, 10504);
+    dasm_put(Dst, 10505);
     }
       break;
     }
-    dasm_put(Dst, 10518);
+    dasm_put(Dst, 10519);
     break;
   case BC_POW:
-    dasm_put(Dst, 10108);
+    dasm_put(Dst, 10109);
     vk = ((int)op - BC_ADDVN) / (BC_ADDNV-BC_ADDVN);
     switch (vk) {
     case 0:
-    dasm_put(Dst, 10116, LJ_TISNUM);
+    dasm_put(Dst, 10117, LJ_TISNUM);
     if (sse) {
-    dasm_put(Dst, 10442);
+    dasm_put(Dst, 10443);
     } else {
-    dasm_put(Dst, 10457);
+    dasm_put(Dst, 10458);
     }
       break;
     case 1:
-    dasm_put(Dst, 10152, LJ_TISNUM);
+    dasm_put(Dst, 10153, LJ_TISNUM);
     if (sse) {
-    dasm_put(Dst, 10466);
+    dasm_put(Dst, 10467);
     } else {
-    dasm_put(Dst, 10481);
+    dasm_put(Dst, 10482);
     }
       break;
     default:
-    dasm_put(Dst, 10188, LJ_TISNUM, LJ_TISNUM);
+    dasm_put(Dst, 10189, LJ_TISNUM, LJ_TISNUM);
     if (sse) {
-    dasm_put(Dst, 10490);
+    dasm_put(Dst, 10491);
     } else {
-    dasm_put(Dst, 10504);
+    dasm_put(Dst, 10505);
     }
       break;
     }
-    dasm_put(Dst, 10523);
+    dasm_put(Dst, 10524);
     if (sse) {
-    dasm_put(Dst, 9990);
+    dasm_put(Dst, 9991);
     } else {
-    dasm_put(Dst, 10002);
+    dasm_put(Dst, 10003);
     }
-    dasm_put(Dst, 9564);
+    dasm_put(Dst, 9565);
     break;
 
   case BC_CAT:
-    dasm_put(Dst, 10527, Dt1(->base), Dt1(->base));
+    dasm_put(Dst, 10528, Dt1(->base), Dt1(->base));
     break;
 
   /* -- Constant ops ------------------------------------------------------ */
 
   case BC_KSTR:
-    dasm_put(Dst, 10618, LJ_TSTR);
+    dasm_put(Dst, 10619, LJ_TSTR);
     break;
   case BC_KSHORT:
     if (sse) {
-      dasm_put(Dst, 10655);
+      dasm_put(Dst, 10656);
     } else {
-      dasm_put(Dst, 10670);
+      dasm_put(Dst, 10671);
     }
-    dasm_put(Dst, 9564);
+    dasm_put(Dst, 9565);
     break;
   case BC_KNUM:
     if (sse) {
-      dasm_put(Dst, 10678);
+      dasm_put(Dst, 10679);
     } else {
-      dasm_put(Dst, 10692);
+      dasm_put(Dst, 10693);
     }
-    dasm_put(Dst, 9564);
+    dasm_put(Dst, 9565);
     break;
   case BC_KPRI:
-    dasm_put(Dst, 10700);
+    dasm_put(Dst, 10701);
     break;
   case BC_KNIL:
-    dasm_put(Dst, 10729, LJ_TNIL);
+    dasm_put(Dst, 10730, LJ_TNIL);
     break;
 
   /* -- Upvalue and function ops ------------------------------------------ */
 
   case BC_UGET:
-    dasm_put(Dst, 10777, offsetof(GCfuncL, uvptr), DtA(->v));
+    dasm_put(Dst, 10778, offsetof(GCfuncL, uvptr), DtA(->v));
     break;
   case BC_USETV:
 #define TV2MARKOFS \
  ((int32_t)offsetof(GCupval, marked)-(int32_t)offsetof(GCupval, tv))
-    dasm_put(Dst, 10823, offsetof(GCfuncL, uvptr), DtA(->closed), DtA(->v), TV2MARKOFS, LJ_GC_BLACK, LJ_TISGCV, LJ_TISNUM - LJ_TISGCV, Dt4(->gch.marked), LJ_GC_WHITES, GG_DISP2G);
-    dasm_put(Dst, 10919);
+    dasm_put(Dst, 10824, offsetof(GCfuncL, uvptr), DtA(->closed), DtA(->v), TV2MARKOFS, LJ_GC_BLACK, LJ_TISGCV, LJ_TISNUM - LJ_TISGCV, Dt4(->gch.marked), LJ_GC_WHITES, GG_DISP2G);
+    dasm_put(Dst, 10920);
     break;
 #undef TV2MARKOFS
   case BC_USETS:
-    dasm_put(Dst, 10931, offsetof(GCfuncL, uvptr), DtA(->v), LJ_TSTR, DtA(->marked), LJ_GC_BLACK, Dt4(->gch.marked), LJ_GC_WHITES, DtA(->closed), GG_DISP2G);
+    dasm_put(Dst, 10932, offsetof(GCfuncL, uvptr), DtA(->v), LJ_TSTR, DtA(->marked), LJ_GC_BLACK, Dt4(->gch.marked), LJ_GC_WHITES, DtA(->closed), GG_DISP2G);
     break;
   case BC_USETN:
-    dasm_put(Dst, 11027);
+    dasm_put(Dst, 11028);
     if (sse) {
-      dasm_put(Dst, 11032);
+      dasm_put(Dst, 11033);
     } else {
-      dasm_put(Dst, 9806);
+      dasm_put(Dst, 9807);
     }
-    dasm_put(Dst, 11040, offsetof(GCfuncL, uvptr), DtA(->v));
+    dasm_put(Dst, 11041, offsetof(GCfuncL, uvptr), DtA(->v));
     if (sse) {
-      dasm_put(Dst, 11049);
+      dasm_put(Dst, 11050);
     } else {
-      dasm_put(Dst, 11055);
+      dasm_put(Dst, 11056);
     }
-    dasm_put(Dst, 9564);
+    dasm_put(Dst, 9565);
     break;
   case BC_USETP:
-    dasm_put(Dst, 11058, offsetof(GCfuncL, uvptr), DtA(->v));
+    dasm_put(Dst, 11059, offsetof(GCfuncL, uvptr), DtA(->v));
     break;
   case BC_UCLO:
-    dasm_put(Dst, 11098, -BCBIAS_J*4, Dt1(->openupval), Dt1(->base), Dt1(->base));
+    dasm_put(Dst, 11099, -BCBIAS_J*4, Dt1(->openupval), Dt1(->base), Dt1(->base));
     break;
 
   case BC_FNEW:
-    dasm_put(Dst, 11154, Dt1(->base), Dt1(->base), LJ_TFUNC);
+    dasm_put(Dst, 11155, Dt1(->base), Dt1(->base), LJ_TFUNC);
     break;
 
   /* -- Table ops --------------------------------------------------------- */
 
   case BC_TNEW:
-    dasm_put(Dst, 11221, Dt1(->base), DISPATCH_GL(gc.total), DISPATCH_GL(gc.threshold), Dt1(->base), LJ_TTAB);
+    dasm_put(Dst, 11222, Dt1(->base), DISPATCH_GL(gc.total), DISPATCH_GL(gc.threshold), Dt1(->base), LJ_TTAB);
     break;
   case BC_TDUP:
-    dasm_put(Dst, 11345, DISPATCH_GL(gc.total), DISPATCH_GL(gc.threshold), Dt1(->base), Dt1(->base), LJ_TTAB);
+    dasm_put(Dst, 11346, DISPATCH_GL(gc.total), DISPATCH_GL(gc.threshold), Dt1(->base), Dt1(->base), LJ_TTAB);
     break;
 
   case BC_GGET:
-    dasm_put(Dst, 11444, Dt7(->env));
+    dasm_put(Dst, 11445, Dt7(->env));
     break;
   case BC_GSET:
-    dasm_put(Dst, 11464, Dt7(->env));
+    dasm_put(Dst, 11465, Dt7(->env));
     break;
 
   case BC_TGETV:
-    dasm_put(Dst, 11484, LJ_TTAB, LJ_TISNUM);
+    dasm_put(Dst, 11485, LJ_TTAB, LJ_TISNUM);
     if (sse) {
-      dasm_put(Dst, 11517);
+      dasm_put(Dst, 11518);
     } else {
     }
-    dasm_put(Dst, 11538, Dt6(->asize), Dt6(->array), LJ_TNIL, Dt6(->metatable), Dt6(->metatable), Dt6(->nomm), 1<<MM_index);
-    dasm_put(Dst, 11632, LJ_TSTR);
+    dasm_put(Dst, 11539, Dt6(->asize), Dt6(->array), LJ_TNIL, Dt6(->metatable), Dt6(->metatable), Dt6(->nomm), 1<<MM_index);
+    dasm_put(Dst, 11633, LJ_TSTR);
     break;
   case BC_TGETS:
-    dasm_put(Dst, 11650, LJ_TTAB, Dt6(->hmask), Dt5(->hash), sizeof(Node), Dt6(->node), DtB(->key.it), LJ_TSTR, DtB(->key.gcr), LJ_TNIL);
-    dasm_put(Dst, 11736, LJ_TNIL, DtB(->next), Dt6(->metatable), Dt6(->nomm), 1<<MM_index);
+    dasm_put(Dst, 11651, LJ_TTAB, Dt6(->hmask), Dt5(->hash), sizeof(Node), Dt6(->node), DtB(->key.it), LJ_TSTR, DtB(->key.gcr), LJ_TNIL);
+    dasm_put(Dst, 11737, LJ_TNIL, DtB(->next), Dt6(->metatable), Dt6(->nomm), 1<<MM_index);
     break;
   case BC_TGETB:
-    dasm_put(Dst, 11809, LJ_TTAB, Dt6(->asize), Dt6(->array), LJ_TNIL, Dt6(->metatable), Dt6(->metatable), Dt6(->nomm), 1<<MM_index);
-    dasm_put(Dst, 10098);
+    dasm_put(Dst, 11810, LJ_TTAB, Dt6(->asize), Dt6(->array), LJ_TNIL, Dt6(->metatable), Dt6(->metatable), Dt6(->nomm), 1<<MM_index);
+    dasm_put(Dst, 10099);
     break;
 
   case BC_TSETV:
-    dasm_put(Dst, 11910, LJ_TTAB, LJ_TISNUM);
+    dasm_put(Dst, 11911, LJ_TTAB, LJ_TISNUM);
     if (sse) {
-      dasm_put(Dst, 11517);
+      dasm_put(Dst, 11518);
     } else {
     }
-    dasm_put(Dst, 11943, Dt6(->asize), Dt6(->array), LJ_TNIL, Dt6(->marked), LJ_GC_BLACK, Dt6(->metatable), Dt6(->metatable));
-    dasm_put(Dst, 12028, Dt6(->nomm), 1<<MM_newindex, LJ_TSTR, Dt6(->marked), cast_byte(~LJ_GC_BLACK), DISPATCH_GL(gc.grayagain), DISPATCH_GL(gc.grayagain), Dt6(->gclist));
+    dasm_put(Dst, 11944, Dt6(->asize), Dt6(->array), LJ_TNIL, Dt6(->marked), LJ_GC_BLACK, Dt6(->metatable), Dt6(->metatable));
+    dasm_put(Dst, 12029, Dt6(->nomm), 1<<MM_newindex, LJ_TSTR, Dt6(->marked), cast_byte(~LJ_GC_BLACK), DISPATCH_GL(gc.grayagain), DISPATCH_GL(gc.grayagain), Dt6(->gclist));
     break;
   case BC_TSETS:
-    dasm_put(Dst, 12092, LJ_TTAB, Dt6(->hmask), Dt5(->hash), sizeof(Node), Dt6(->nomm), Dt6(->node), DtB(->key.it), LJ_TSTR, DtB(->key.gcr), LJ_TNIL);
-    dasm_put(Dst, 12169, Dt6(->marked), LJ_GC_BLACK, Dt6(->metatable), Dt6(->metatable), Dt6(->nomm), 1<<MM_newindex, DtB(->next));
-    dasm_put(Dst, 12261, Dt6(->metatable), Dt6(->nomm), 1<<MM_newindex, LJ_TSTR, Dt1(->base), Dt1(->base), Dt6(->marked), cast_byte(~LJ_GC_BLACK), DISPATCH_GL(gc.grayagain), DISPATCH_GL(gc.grayagain), Dt6(->gclist));
+    dasm_put(Dst, 12093, LJ_TTAB, Dt6(->hmask), Dt5(->hash), sizeof(Node), Dt6(->nomm), Dt6(->node), DtB(->key.it), LJ_TSTR, DtB(->key.gcr), LJ_TNIL);
+    dasm_put(Dst, 12170, Dt6(->marked), LJ_GC_BLACK, Dt6(->metatable), Dt6(->metatable), Dt6(->nomm), 1<<MM_newindex, DtB(->next));
+    dasm_put(Dst, 12262, Dt6(->metatable), Dt6(->nomm), 1<<MM_newindex, LJ_TSTR, Dt1(->base), Dt1(->base), Dt6(->marked), cast_byte(~LJ_GC_BLACK), DISPATCH_GL(gc.grayagain), DISPATCH_GL(gc.grayagain), Dt6(->gclist));
     break;
   case BC_TSETB:
-    dasm_put(Dst, 12353, LJ_TTAB, Dt6(->asize), Dt6(->array), LJ_TNIL, Dt6(->marked), LJ_GC_BLACK, Dt6(->metatable));
-    dasm_put(Dst, 12453, Dt6(->metatable), Dt6(->nomm), 1<<MM_newindex, Dt6(->marked), cast_byte(~LJ_GC_BLACK), DISPATCH_GL(gc.grayagain), DISPATCH_GL(gc.grayagain), Dt6(->gclist));
+    dasm_put(Dst, 12354, LJ_TTAB, Dt6(->asize), Dt6(->array), LJ_TNIL, Dt6(->marked), LJ_GC_BLACK, Dt6(->metatable));
+    dasm_put(Dst, 12454, Dt6(->metatable), Dt6(->nomm), 1<<MM_newindex, Dt6(->marked), cast_byte(~LJ_GC_BLACK), DISPATCH_GL(gc.grayagain), DISPATCH_GL(gc.grayagain), Dt6(->gclist));
     break;
 
   case BC_TSETM:
-    dasm_put(Dst, 12501);
+    dasm_put(Dst, 12502);
     if (sse) {
-      dasm_put(Dst, 12506);
+      dasm_put(Dst, 12507);
     } else {
     }
-    dasm_put(Dst, 12514, Dt6(->marked), LJ_GC_BLACK, Dt6(->asize), Dt6(->array), Dt1(->base), Dt1(->base));
-    dasm_put(Dst, 12662, Dt6(->marked), cast_byte(~LJ_GC_BLACK), DISPATCH_GL(gc.grayagain), DISPATCH_GL(gc.grayagain), Dt6(->gclist));
+    dasm_put(Dst, 12515, Dt6(->marked), LJ_GC_BLACK, Dt6(->asize), Dt6(->array), Dt1(->base), Dt1(->base));
+    dasm_put(Dst, 12663, Dt6(->marked), cast_byte(~LJ_GC_BLACK), DISPATCH_GL(gc.grayagain), DISPATCH_GL(gc.grayagain), Dt6(->gclist));
     break;
 
   /* -- Calls and vararg handling ----------------------------------------- */
 
   case BC_CALL: case BC_CALLM:
-    dasm_put(Dst, 10112);
+    dasm_put(Dst, 10113);
     if (op == BC_CALLM) {
-      dasm_put(Dst, 12682);
+      dasm_put(Dst, 12683);
     }
-    dasm_put(Dst, 12687, LJ_TFUNC, Dt7(->pc));
+    dasm_put(Dst, 12688, LJ_TFUNC, Dt7(->pc));
     break;
 
   case BC_CALLMT:
-    dasm_put(Dst, 12682);
+    dasm_put(Dst, 12683);
     break;
   case BC_CALLT:
-    dasm_put(Dst, 12730, LJ_TFUNC, FRAME_TYPE, Dt7(->ffid), Dt7(->pc));
-    dasm_put(Dst, 12854, FRAME_TYPE, Dt7(->pc), PC2PROTO(k), FRAME_VARG, FRAME_TYPEP, FRAME_VARG);
+    dasm_put(Dst, 12731, LJ_TFUNC, FRAME_TYPE, Dt7(->ffid), Dt7(->pc));
+    dasm_put(Dst, 12855, FRAME_TYPE, Dt7(->pc), PC2PROTO(k), FRAME_VARG, FRAME_TYPEP, FRAME_VARG);
     break;
 
   case BC_ITERC:
-    dasm_put(Dst, 12928, LJ_TFUNC, 2+1, Dt7(->pc));
+    dasm_put(Dst, 12929, LJ_TFUNC, 2+1, Dt7(->pc));
     break;
 
   case BC_VARG:
-    dasm_put(Dst, 13010, Dt7(->pc), PC2PROTO(numparams), (8+FRAME_VARG), LJ_TNIL);
-    dasm_put(Dst, 13164, Dt1(->maxstack), Dt1(->base), Dt1(->top), Dt1(->base), Dt1(->top));
+    dasm_put(Dst, 13011, Dt7(->pc), PC2PROTO(numparams), (8+FRAME_VARG), LJ_TNIL);
+    dasm_put(Dst, 13165, Dt1(->maxstack), Dt1(->base), Dt1(->top), Dt1(->base), Dt1(->top));
     break;
 
   /* -- Returns ----------------------------------------------------------- */
 
   case BC_RETM:
-    dasm_put(Dst, 12682);
+    dasm_put(Dst, 12683);
     break;
 
   case BC_RET: case BC_RET0: case BC_RET1:
     if (op != BC_RET0) {
-      dasm_put(Dst, 13269);
+      dasm_put(Dst, 13270);
     }
-    dasm_put(Dst, 13273, FRAME_TYPE);
+    dasm_put(Dst, 13274, FRAME_TYPE);
     switch (op) {
     case BC_RET:
-      dasm_put(Dst, 13292);
+      dasm_put(Dst, 13293);
       break;
     case BC_RET1:
-      dasm_put(Dst, 13356);
+      dasm_put(Dst, 13357);
       /* fallthrough */
     case BC_RET0:
-      dasm_put(Dst, 13372);
+      dasm_put(Dst, 13373);
     default:
       break;
     }
-    dasm_put(Dst, 13383, Dt7(->pc), PC2PROTO(k));
+    dasm_put(Dst, 13384, Dt7(->pc), PC2PROTO(k));
     if (op == BC_RET) {
-      dasm_put(Dst, 13431, LJ_TNIL);
+      dasm_put(Dst, 13432, LJ_TNIL);
     } else {
-      dasm_put(Dst, 13442, LJ_TNIL);
+      dasm_put(Dst, 13443, LJ_TNIL);
     }
-    dasm_put(Dst, 13449, -FRAME_VARG, FRAME_TYPEP);
+    dasm_put(Dst, 13450, -FRAME_VARG, FRAME_TYPEP);
     if (op != BC_RET0) {
-      dasm_put(Dst, 13473);
+      dasm_put(Dst, 13474);
     }
     dasm_put(Dst, 4599);
     break;
@@ -2039,7 +2039,7 @@ static void build_ins(BuildCtx *ctx, BCOp op, int defop, int cmov, int sse)
 
   case BC_FORL:
 #if LJ_HASJIT
-    dasm_put(Dst, 13477, HOTCOUNT_PCMASK, GG_DISP2HOT);
+    dasm_put(Dst, 13478, HOTCOUNT_PCMASK, GG_DISP2HOT);
 #endif
     break;
 
@@ -2051,57 +2051,57 @@ static void build_ins(BuildCtx *ctx, BCOp op, int defop, int cmov, int sse)
   case BC_FORI:
   case BC_IFORL:
     vk = (op == BC_IFORL || op == BC_JFORL);
-    dasm_put(Dst, 13498);
+    dasm_put(Dst, 13499);
     if (!vk) {
-      dasm_put(Dst, 13502, LJ_TISNUM, LJ_TISNUM);
+      dasm_put(Dst, 13503, LJ_TISNUM, LJ_TISNUM);
     }
-    dasm_put(Dst, 13521);
+    dasm_put(Dst, 13522);
     if (!vk) {
-      dasm_put(Dst, 13525, LJ_TISNUM);
+      dasm_put(Dst, 13526, LJ_TISNUM);
     }
     if (sse) {
-      dasm_put(Dst, 13534);
+      dasm_put(Dst, 13535);
       if (vk) {
-       dasm_put(Dst, 13546);
+       dasm_put(Dst, 13547);
       } else {
-       dasm_put(Dst, 13565);
+       dasm_put(Dst, 13566);
       }
-      dasm_put(Dst, 13570);
+      dasm_put(Dst, 13571);
     } else {
-      dasm_put(Dst, 13583);
+      dasm_put(Dst, 13584);
       if (vk) {
-       dasm_put(Dst, 13589);
+       dasm_put(Dst, 13590);
       } else {
-       dasm_put(Dst, 13605);
+       dasm_put(Dst, 13606);
       }
-      dasm_put(Dst, 13613);
+      dasm_put(Dst, 13614);
       if (cmov) {
-      dasm_put(Dst, 9527);
+      dasm_put(Dst, 9528);
       } else {
-      dasm_put(Dst, 9533);
+      dasm_put(Dst, 9534);
       }
       if (!cmov) {
-       dasm_put(Dst, 13618);
+       dasm_put(Dst, 13619);
       }
     }
     if (op == BC_FORI) {
-      dasm_put(Dst, 13624, -BCBIAS_J*4);
+      dasm_put(Dst, 13625, -BCBIAS_J*4);
     } else if (op == BC_JFORI) {
-      dasm_put(Dst, 13634, -BCBIAS_J*4, BC_JLOOP);
+      dasm_put(Dst, 13635, -BCBIAS_J*4, BC_JLOOP);
     } else if (op == BC_IFORL) {
-      dasm_put(Dst, 13648, -BCBIAS_J*4);
+      dasm_put(Dst, 13649, -BCBIAS_J*4);
     } else {
-      dasm_put(Dst, 13644, BC_JLOOP);
+      dasm_put(Dst, 13645, BC_JLOOP);
     }
-    dasm_put(Dst, 9562);
+    dasm_put(Dst, 9563);
     if (sse) {
-      dasm_put(Dst, 13658);
+      dasm_put(Dst, 13659);
     }
     break;
 
   case BC_ITERL:
 #if LJ_HASJIT
-    dasm_put(Dst, 13477, HOTCOUNT_PCMASK, GG_DISP2HOT);
+    dasm_put(Dst, 13478, HOTCOUNT_PCMASK, GG_DISP2HOT);
 #endif
     break;
 
@@ -2110,33 +2110,33 @@ static void build_ins(BuildCtx *ctx, BCOp op, int defop, int cmov, int sse)
     break;
 #endif
   case BC_IITERL:
-    dasm_put(Dst, 13669, LJ_TNIL);
+    dasm_put(Dst, 13670, LJ_TNIL);
     if (op == BC_JITERL) {
-      dasm_put(Dst, 13684, BC_JLOOP);
+      dasm_put(Dst, 13685, BC_JLOOP);
     } else {
-      dasm_put(Dst, 13698, -BCBIAS_J*4);
+      dasm_put(Dst, 13699, -BCBIAS_J*4);
     }
-    dasm_put(Dst, 9866);
+    dasm_put(Dst, 9867);
     break;
 
   case BC_LOOP:
 #if LJ_HASJIT
-    dasm_put(Dst, 13477, HOTCOUNT_PCMASK, GG_DISP2HOT);
+    dasm_put(Dst, 13478, HOTCOUNT_PCMASK, GG_DISP2HOT);
 #endif
     break;
 
   case BC_ILOOP:
-    dasm_put(Dst, 9564);
+    dasm_put(Dst, 9565);
     break;
 
   case BC_JLOOP:
 #if LJ_HASJIT
-    dasm_put(Dst, 13714, DISPATCH_J(trace), DtD(->mcode), DISPATCH_GL(jit_base), DISPATCH_GL(jit_L));
+    dasm_put(Dst, 13715, DISPATCH_J(trace), DtD(->mcode), DISPATCH_GL(jit_base), DISPATCH_GL(jit_L));
 #endif
     break;
 
   case BC_JMP:
-    dasm_put(Dst, 13755, -BCBIAS_J*4);
+    dasm_put(Dst, 13756, -BCBIAS_J*4);
     break;
 
   /* -- Function headers -------------------------------------------------- */
@@ -2150,7 +2150,7 @@ static void build_ins(BuildCtx *ctx, BCOp op, int defop, int cmov, int sse)
 
   case BC_FUNCF:
 #if LJ_HASJIT
-    dasm_put(Dst, 13781, HOTCOUNT_PCMASK, GG_DISP2HOT);
+    dasm_put(Dst, 13782, HOTCOUNT_PCMASK, GG_DISP2HOT);
 #endif
   case BC_FUNCV:  /* NYI: compiled vararg functions. */
     break;
@@ -2160,47 +2160,47 @@ static void build_ins(BuildCtx *ctx, BCOp op, int defop, int cmov, int sse)
     break;
 #endif
   case BC_IFUNCF:
-    dasm_put(Dst, 13802, -4+PC2PROTO(k), Dt1(->maxstack), -4+PC2PROTO(numparams));
+    dasm_put(Dst, 13803, -4+PC2PROTO(k), Dt1(->maxstack), -4+PC2PROTO(numparams));
     if (op == BC_JFUNCF) {
-      dasm_put(Dst, 13833, BC_JLOOP);
+      dasm_put(Dst, 13834, BC_JLOOP);
     } else {
-      dasm_put(Dst, 9564);
+      dasm_put(Dst, 9565);
     }
-    dasm_put(Dst, 13842, LJ_TNIL);
+    dasm_put(Dst, 13843, LJ_TNIL);
     break;
 
   case BC_JFUNCV:
 #if !LJ_HASJIT
     break;
 #endif
-    dasm_put(Dst, 9043);
+    dasm_put(Dst, 9044);
     break;  /* NYI: compiled vararg functions. */
 
   case BC_IFUNCV:
-    dasm_put(Dst, 13864, FRAME_VARG, Dt1(->maxstack), -4+PC2PROTO(numparams), LJ_TNIL);
+    dasm_put(Dst, 13865, FRAME_VARG, Dt1(->maxstack), -4+PC2PROTO(numparams), LJ_TNIL);
     if (op == BC_JFUNCV) {
-      dasm_put(Dst, 13833, BC_JLOOP);
+      dasm_put(Dst, 13834, BC_JLOOP);
     } else {
-      dasm_put(Dst, 13961, -4+PC2PROTO(k));
+      dasm_put(Dst, 13962, -4+PC2PROTO(k));
     }
-    dasm_put(Dst, 13986, LJ_TNIL);
+    dasm_put(Dst, 13987, LJ_TNIL);
     break;
 
   case BC_FUNCC:
   case BC_FUNCCW:
-    dasm_put(Dst, 14008, Dt8(->f), Dt1(->base), 8*LUA_MINSTACK, Dt1(->maxstack), Dt1(->top));
+    dasm_put(Dst, 14009, Dt8(->f), Dt1(->base), 8*LUA_MINSTACK, Dt1(->maxstack), Dt1(->top));
     if (op == BC_FUNCC) {
-      dasm_put(Dst, 14038);
+      dasm_put(Dst, 14039);
     } else {
-      dasm_put(Dst, 14042);
+      dasm_put(Dst, 14043);
     }
-    dasm_put(Dst, 14050, DISPATCH_GL(vmstate), ~LJ_VMST_C);
+    dasm_put(Dst, 14051, DISPATCH_GL(vmstate), ~LJ_VMST_C);
     if (op == BC_FUNCC) {
-      dasm_put(Dst, 14060);
+      dasm_put(Dst, 14061);
     } else {
-      dasm_put(Dst, 14065, DISPATCH_GL(wrapf));
+      dasm_put(Dst, 14066, DISPATCH_GL(wrapf));
     }
-    dasm_put(Dst, 14071, DISPATCH_GL(vmstate), ~LJ_VMST_INTERP, Dt1(->base), Dt1(->top));
+    dasm_put(Dst, 14072, DISPATCH_GL(vmstate), ~LJ_VMST_INTERP, Dt1(->base), Dt1(->top));
     break;
 
   /* ---------------------------------------------------------------------- */
@@ -2228,7 +2228,7 @@ static int build_backend(BuildCtx *ctx)
 
   build_subroutines(ctx, cmov, sse);
 
-  dasm_put(Dst, 14097);
+  dasm_put(Dst, 14098);
   for (op = 0; op < BC__MAX; op++)
     build_ins(ctx, (BCOp)op, op, cmov, sse);
 
index 9198454ad1902ee09d44f04563ca4490d5aa953e..5e70ad8828c9c5c333439ae7a22b9595fa17ff69 100644 (file)
@@ -12,7 +12,7 @@
 #define DASM_SECTION_CODE_OP   0
 #define DASM_SECTION_CODE_SUB  1
 #define DASM_MAXSECTION                2
-static const unsigned char build_actionlist[14046] = {
+static const unsigned char build_actionlist[14047] = {
   254,1,248,10,252,247,198,237,15,132,244,11,131,230,252,248,41,252,242,72,
   141,76,49,252,248,139,114,252,252,199,68,10,4,237,248,12,131,192,1,137,68,
   36,84,252,247,198,237,15,132,244,13,248,14,129,252,246,239,252,247,198,237,
@@ -346,12 +346,12 @@ static const unsigned char build_actionlist[14046] = {
   233,244,55,248,119,184,237,248,55,139,108,36,96,139,114,252,252,137,116,36,
   100,137,149,233,141,68,194,252,248,141,136,233,137,133,233,139,66,252,248,
   59,141,233,15,135,244,251,137,252,233,252,255,144,233,139,149,233,133,192,
-  15,133,244,69,248,1,255,139,133,233,41,208,193,232,3,131,192,1,139,106,252,
-  248,57,114,252,252,15,133,244,248,139,181,233,139,14,15,182,252,233,15,182,
-  205,131,198,4,252,255,36,252,235,248,2,137,209,252,247,198,237,15,133,244,
-  249,15,182,110,252,253,72,252,247,213,141,20,252,234,252,233,244,27,248,3,
-  137,252,245,131,229,252,248,41,252,234,252,233,244,27,248,5,186,237,137,252,
-  233,232,251,1,0,139,149,233,252,233,244,1,248,66,93,72,137,108,36,32,139,
+  15,143,244,69,248,1,255,139,141,233,41,209,193,252,233,3,133,192,141,65,1,
+  139,106,252,248,15,133,244,248,139,181,233,139,14,15,182,252,233,15,182,205,
+  131,198,4,252,255,36,252,235,248,2,137,209,252,247,198,237,15,133,244,249,
+  15,182,110,252,253,72,252,247,213,141,20,252,234,252,233,244,27,248,3,137,
+  252,245,131,229,252,248,41,252,234,252,233,244,27,248,5,186,237,137,252,233,
+  232,251,1,0,139,149,233,49,192,252,233,244,1,248,66,93,72,137,108,36,32,139,
   108,36,96,137,116,36,100,137,149,233,255,141,68,194,252,248,137,252,233,137,
   133,233,232,251,1,19,139,149,233,139,133,233,41,208,193,232,3,131,192,1,72,
   139,108,36,32,85,195,248,136,255,15,182,131,233,168,235,15,133,244,251,168,
@@ -1346,89 +1346,89 @@ static void build_subroutines(BuildCtx *ctx, int cmov, int sse)
   }
   dasm_put(Dst, 6758, 1+2, 1+1, Dt1(->base), 8*LUA_MINSTACK, Dt1(->top), Dt1(->maxstack), Dt8(->f), Dt1(->base));
   dasm_put(Dst, 6836, Dt1(->top), Dt7(->pc), FRAME_TYPE, LUA_MINSTACK, Dt1(->base), Dt1(->base));
-  dasm_put(Dst, 6962, Dt1(->top), Dt1(->base), Dt1(->top));
+  dasm_put(Dst, 6963, Dt1(->top), Dt1(->base), Dt1(->top));
 #if LJ_HASJIT
-  dasm_put(Dst, 7001, DISPATCH_GL(hookmask), HOOK_VMEVENT, HOOK_ACTIVE, LUA_MASKLINE|LUA_MASKCOUNT, DISPATCH_GL(hookcount));
+  dasm_put(Dst, 7002, DISPATCH_GL(hookmask), HOOK_VMEVENT, HOOK_ACTIVE, LUA_MASKLINE|LUA_MASKCOUNT, DISPATCH_GL(hookcount));
 #endif
-  dasm_put(Dst, 7032, DISPATCH_GL(hookmask), HOOK_ACTIVE, DISPATCH_GL(hookmask), HOOK_ACTIVE, LUA_MASKLINE|LUA_MASKCOUNT, DISPATCH_GL(hookcount), LUA_MASKLINE);
-  dasm_put(Dst, 7083, Dt1(->base), Dt1(->base), GG_DISP2STATIC);
+  dasm_put(Dst, 7033, DISPATCH_GL(hookmask), HOOK_ACTIVE, DISPATCH_GL(hookmask), HOOK_ACTIVE, LUA_MASKLINE|LUA_MASKCOUNT, DISPATCH_GL(hookcount), LUA_MASKLINE);
+  dasm_put(Dst, 7084, Dt1(->base), Dt1(->base), GG_DISP2STATIC);
 #if LJ_HASJIT
-  dasm_put(Dst, 7150, Dt7(->pc), PC2PROTO(framesize), Dt1(->base), Dt1(->top), GG_DISP2J, DISPATCH_J(L));
+  dasm_put(Dst, 7151, Dt7(->pc), PC2PROTO(framesize), Dt1(->base), Dt1(->top), GG_DISP2J, DISPATCH_J(L));
 #endif
-  dasm_put(Dst, 7197);
+  dasm_put(Dst, 7198);
 #if LJ_HASJIT
-  dasm_put(Dst, 7027);
+  dasm_put(Dst, 7028);
 #endif
-  dasm_put(Dst, 7204);
+  dasm_put(Dst, 7205);
 #if LJ_HASJIT
-  dasm_put(Dst, 7207);
+  dasm_put(Dst, 7208);
 #endif
-  dasm_put(Dst, 7217, Dt1(->base), Dt1(->top));
+  dasm_put(Dst, 7218, Dt1(->base), Dt1(->top));
 #if LJ_HASJIT
-  dasm_put(Dst, 7251);
+  dasm_put(Dst, 7252);
 #endif
-  dasm_put(Dst, 7256, Dt1(->base), Dt1(->top));
+  dasm_put(Dst, 7257, Dt1(->base), Dt1(->top));
 #if LJ_HASJIT
-  dasm_put(Dst, 7287, DISPATCH_GL(vmstate), DISPATCH_GL(vmstate), ~LJ_VMST_EXIT, DISPATCH_J(exitno), DISPATCH_J(parent), 16*8+4*8, DISPATCH_GL(jit_L), DISPATCH_GL(jit_base), DISPATCH_J(L), DISPATCH_GL(jit_L), Dt1(->base), 4*8, GG_DISP2J, Dt1(->cframe), CFRAME_RAWMASK, CFRAME_OFS_L, Dt1(->base), CFRAME_OFS_PC);
+  dasm_put(Dst, 7288, DISPATCH_GL(vmstate), DISPATCH_GL(vmstate), ~LJ_VMST_EXIT, DISPATCH_J(exitno), DISPATCH_J(parent), 16*8+4*8, DISPATCH_GL(jit_L), DISPATCH_GL(jit_base), DISPATCH_J(L), DISPATCH_GL(jit_L), Dt1(->base), 4*8, GG_DISP2J, Dt1(->cframe), CFRAME_RAWMASK, CFRAME_OFS_L, Dt1(->base), CFRAME_OFS_PC);
 #endif
-  dasm_put(Dst, 7517);
+  dasm_put(Dst, 7518);
 #if LJ_HASJIT
-  dasm_put(Dst, 7520, 9*16+4*8, -9*16, -8*16, -7*16, -6*16, -5*16, -4*16, -3*16, -2*16, -1*16, Dt7(->pc), PC2PROTO(k), DISPATCH_GL(jit_L), DISPATCH_GL(vmstate), ~LJ_VMST_INTERP, BC_FUNCF);
-  dasm_put(Dst, 7662);
+  dasm_put(Dst, 7521, 9*16+4*8, -9*16, -8*16, -7*16, -6*16, -5*16, -4*16, -3*16, -2*16, -1*16, Dt7(->pc), PC2PROTO(k), DISPATCH_GL(jit_L), DISPATCH_GL(vmstate), ~LJ_VMST_INTERP, BC_FUNCF);
+  dasm_put(Dst, 7663);
 #endif
-  dasm_put(Dst, 7688);
+  dasm_put(Dst, 7689);
   if (!sse) {
-  dasm_put(Dst, 7691);
+  dasm_put(Dst, 7692);
   }
-  dasm_put(Dst, 7736, (unsigned int)(U64x(7fffffff,ffffffff)), (unsigned int)((U64x(7fffffff,ffffffff))>>32), (unsigned int)(U64x(43300000,00000000)), (unsigned int)((U64x(43300000,00000000))>>32), (unsigned int)(U64x(3ff00000,00000000)), (unsigned int)((U64x(3ff00000,00000000))>>32));
+  dasm_put(Dst, 7737, (unsigned int)(U64x(7fffffff,ffffffff)), (unsigned int)((U64x(7fffffff,ffffffff))>>32), (unsigned int)(U64x(43300000,00000000)), (unsigned int)((U64x(43300000,00000000))>>32), (unsigned int)(U64x(3ff00000,00000000)), (unsigned int)((U64x(3ff00000,00000000))>>32));
   if (!sse) {
-  dasm_put(Dst, 7822);
+  dasm_put(Dst, 7823);
   }
-  dasm_put(Dst, 7867, (unsigned int)(U64x(7fffffff,ffffffff)), (unsigned int)((U64x(7fffffff,ffffffff))>>32), (unsigned int)(U64x(43300000,00000000)), (unsigned int)((U64x(43300000,00000000))>>32), (unsigned int)(U64x(bff00000,00000000)), (unsigned int)((U64x(bff00000,00000000))>>32));
+  dasm_put(Dst, 7868, (unsigned int)(U64x(7fffffff,ffffffff)), (unsigned int)((U64x(7fffffff,ffffffff))>>32), (unsigned int)(U64x(43300000,00000000)), (unsigned int)((U64x(43300000,00000000))>>32), (unsigned int)(U64x(bff00000,00000000)), (unsigned int)((U64x(bff00000,00000000))>>32));
   if (!sse) {
-  dasm_put(Dst, 7953);
+  dasm_put(Dst, 7954);
   }
-  dasm_put(Dst, 7992, (unsigned int)(U64x(7fffffff,ffffffff)), (unsigned int)((U64x(7fffffff,ffffffff))>>32), (unsigned int)(U64x(43300000,00000000)), (unsigned int)((U64x(43300000,00000000))>>32), (unsigned int)(U64x(3ff00000,00000000)), (unsigned int)((U64x(3ff00000,00000000))>>32));
+  dasm_put(Dst, 7993, (unsigned int)(U64x(7fffffff,ffffffff)), (unsigned int)((U64x(7fffffff,ffffffff))>>32), (unsigned int)(U64x(43300000,00000000)), (unsigned int)((U64x(43300000,00000000))>>32), (unsigned int)(U64x(3ff00000,00000000)), (unsigned int)((U64x(3ff00000,00000000))>>32));
   if (sse) {
-    dasm_put(Dst, 8081, (unsigned int)(U64x(7fffffff,ffffffff)), (unsigned int)((U64x(7fffffff,ffffffff))>>32), (unsigned int)(U64x(43300000,00000000)), (unsigned int)((U64x(43300000,00000000))>>32), (unsigned int)(U64x(3ff00000,00000000)), (unsigned int)((U64x(3ff00000,00000000))>>32));
+    dasm_put(Dst, 8082, (unsigned int)(U64x(7fffffff,ffffffff)), (unsigned int)((U64x(7fffffff,ffffffff))>>32), (unsigned int)(U64x(43300000,00000000)), (unsigned int)((U64x(43300000,00000000))>>32), (unsigned int)(U64x(3ff00000,00000000)), (unsigned int)((U64x(3ff00000,00000000))>>32));
   } else {
-    dasm_put(Dst, 8195);
+    dasm_put(Dst, 8196);
   }
-  dasm_put(Dst, 8242);
+  dasm_put(Dst, 8243);
   if (!sse) {
   } else {
-    dasm_put(Dst, 8316);
+    dasm_put(Dst, 8317);
   }
-  dasm_put(Dst, 8319);
-  dasm_put(Dst, 8404, (unsigned int)(U64x(3ff00000,00000000)), (unsigned int)((U64x(3ff00000,00000000))>>32), (unsigned int)(U64x(3ff00000,00000000)), (unsigned int)((U64x(3ff00000,00000000))>>32));
-  dasm_put(Dst, 8505, (unsigned int)(U64x(3ff00000,00000000)), (unsigned int)((U64x(3ff00000,00000000))>>32), (unsigned int)(U64x(7fffffff,ffffffff)), (unsigned int)((U64x(7fffffff,ffffffff))>>32), (unsigned int)(U64x(3ff00000,00000000)), (unsigned int)((U64x(3ff00000,00000000))>>32), (unsigned int)(U64x(7ff00000,00000000)), (unsigned int)((U64x(7ff00000,00000000))>>32));
-  dasm_put(Dst, 8673);
+  dasm_put(Dst, 8320);
+  dasm_put(Dst, 8405, (unsigned int)(U64x(3ff00000,00000000)), (unsigned int)((U64x(3ff00000,00000000))>>32), (unsigned int)(U64x(3ff00000,00000000)), (unsigned int)((U64x(3ff00000,00000000))>>32));
+  dasm_put(Dst, 8506, (unsigned int)(U64x(3ff00000,00000000)), (unsigned int)((U64x(3ff00000,00000000))>>32), (unsigned int)(U64x(7fffffff,ffffffff)), (unsigned int)((U64x(7fffffff,ffffffff))>>32), (unsigned int)(U64x(3ff00000,00000000)), (unsigned int)((U64x(3ff00000,00000000))>>32), (unsigned int)(U64x(7ff00000,00000000)), (unsigned int)((U64x(7ff00000,00000000))>>32));
+  dasm_put(Dst, 8674);
 #if LJ_HASJIT
   if (sse) {
-    dasm_put(Dst, 8714);
-    dasm_put(Dst, 8784);
-    dasm_put(Dst, 8857);
+    dasm_put(Dst, 8715);
+    dasm_put(Dst, 8785);
+    dasm_put(Dst, 8858);
   } else {
-    dasm_put(Dst, 8907);
-    dasm_put(Dst, 8999);
+    dasm_put(Dst, 8908);
+    dasm_put(Dst, 9000);
   }
-  dasm_put(Dst, 9045);
+  dasm_put(Dst, 9046);
 #endif
-  dasm_put(Dst, 9049);
+  dasm_put(Dst, 9050);
   if (sse) {
-    dasm_put(Dst, 9052, (unsigned int)(U64x(80000000,00000000)), (unsigned int)((U64x(80000000,00000000))>>32));
-    dasm_put(Dst, 9141, (unsigned int)(U64x(7fffffff,ffffffff)), (unsigned int)((U64x(7fffffff,ffffffff))>>32));
+    dasm_put(Dst, 9053, (unsigned int)(U64x(80000000,00000000)), (unsigned int)((U64x(80000000,00000000))>>32));
+    dasm_put(Dst, 9142, (unsigned int)(U64x(7fffffff,ffffffff)), (unsigned int)((U64x(7fffffff,ffffffff))>>32));
   } else {
-    dasm_put(Dst, 9265);
-    dasm_put(Dst, 9348);
+    dasm_put(Dst, 9266);
+    dasm_put(Dst, 9349);
     if (cmov) {
-    dasm_put(Dst, 9403);
+    dasm_put(Dst, 9404);
     } else {
-    dasm_put(Dst, 9422);
+    dasm_put(Dst, 9423);
     }
-    dasm_put(Dst, 9045);
+    dasm_put(Dst, 9046);
   }
-  dasm_put(Dst, 9463);
+  dasm_put(Dst, 9464);
 }
 
 /* Generate the code for a single instruction. */
@@ -1444,595 +1444,595 @@ static void build_ins(BuildCtx *ctx, BCOp op, int defop, int cmov, int sse)
   /* Remember: all ops branch for a true comparison, fall through otherwise. */
 
   case BC_ISLT: case BC_ISGE: case BC_ISLE: case BC_ISGT:
-    dasm_put(Dst, 9489, LJ_TISNUM, LJ_TISNUM);
+    dasm_put(Dst, 9490, LJ_TISNUM, LJ_TISNUM);
     if (sse) {
-      dasm_put(Dst, 9510);
+      dasm_put(Dst, 9511);
     } else {
-      dasm_put(Dst, 9525);
+      dasm_put(Dst, 9526);
       if (cmov) {
-      dasm_put(Dst, 9535);
+      dasm_put(Dst, 9536);
       } else {
-      dasm_put(Dst, 9541);
+      dasm_put(Dst, 9542);
       }
     }
     switch (op) {
     case BC_ISLT:
-      dasm_put(Dst, 9548);
+      dasm_put(Dst, 9549);
       break;
     case BC_ISGE:
-      dasm_put(Dst, 9343);
+      dasm_put(Dst, 9344);
       break;
     case BC_ISLE:
       dasm_put(Dst, 5905);
       break;
     case BC_ISGT:
-      dasm_put(Dst, 9553);
+      dasm_put(Dst, 9554);
       break;
     default: break;  /* Shut up GCC. */
     }
-    dasm_put(Dst, 9558, -BCBIAS_J*4);
+    dasm_put(Dst, 9559, -BCBIAS_J*4);
     break;
 
   case BC_ISEQV: case BC_ISNEV:
     vk = op == BC_ISEQV;
-    dasm_put(Dst, 9592, LJ_TISNUM, LJ_TISNUM);
+    dasm_put(Dst, 9593, LJ_TISNUM, LJ_TISNUM);
     if (sse) {
-      dasm_put(Dst, 9618);
+      dasm_put(Dst, 9619);
     } else {
-      dasm_put(Dst, 9630);
+      dasm_put(Dst, 9631);
       if (cmov) {
-      dasm_put(Dst, 9535);
+      dasm_put(Dst, 9536);
       } else {
-      dasm_put(Dst, 9541);
+      dasm_put(Dst, 9542);
       }
     }
   iseqne_fp:
     if (vk) {
-      dasm_put(Dst, 9637);
+      dasm_put(Dst, 9638);
     } else {
-      dasm_put(Dst, 9646);
+      dasm_put(Dst, 9647);
     }
   iseqne_end:
     if (vk) {
-      dasm_put(Dst, 9655, -BCBIAS_J*4);
+      dasm_put(Dst, 9656, -BCBIAS_J*4);
     } else {
-      dasm_put(Dst, 9670, -BCBIAS_J*4);
+      dasm_put(Dst, 9671, -BCBIAS_J*4);
     }
-    dasm_put(Dst, 9572);
+    dasm_put(Dst, 9573);
     if (op == BC_ISEQV || op == BC_ISNEV) {
-      dasm_put(Dst, 9685, LJ_TISPRI, LJ_TISTABUD, Dt6(->metatable), Dt6(->nomm), 1<<MM_eq);
+      dasm_put(Dst, 9686, LJ_TISPRI, LJ_TISTABUD, Dt6(->metatable), Dt6(->nomm), 1<<MM_eq);
       if (vk) {
-       dasm_put(Dst, 9743);
+       dasm_put(Dst, 9744);
       } else {
-       dasm_put(Dst, 9747);
+       dasm_put(Dst, 9748);
       }
-      dasm_put(Dst, 9753);
+      dasm_put(Dst, 9754);
     }
     break;
   case BC_ISEQS: case BC_ISNES:
     vk = op == BC_ISEQS;
-    dasm_put(Dst, 9758, LJ_TSTR);
+    dasm_put(Dst, 9759, LJ_TSTR);
   iseqne_test:
     if (vk) {
-      dasm_put(Dst, 9641);
+      dasm_put(Dst, 9642);
     } else {
       dasm_put(Dst, 2805);
     }
     goto iseqne_end;
   case BC_ISEQN: case BC_ISNEN:
     vk = op == BC_ISEQN;
-    dasm_put(Dst, 9782, LJ_TISNUM);
+    dasm_put(Dst, 9783, LJ_TISNUM);
     if (sse) {
-      dasm_put(Dst, 9796);
+      dasm_put(Dst, 9797);
     } else {
-      dasm_put(Dst, 9808);
+      dasm_put(Dst, 9809);
       if (cmov) {
-      dasm_put(Dst, 9535);
+      dasm_put(Dst, 9536);
       } else {
-      dasm_put(Dst, 9541);
+      dasm_put(Dst, 9542);
       }
     }
     goto iseqne_fp;
   case BC_ISEQP: case BC_ISNEP:
     vk = op == BC_ISEQP;
-    dasm_put(Dst, 9815);
+    dasm_put(Dst, 9816);
     goto iseqne_test;
 
   /* -- Unary test and copy ops ------------------------------------------- */
 
   case BC_ISTC: case BC_ISFC: case BC_IST: case BC_ISF:
-    dasm_put(Dst, 9827, LJ_TISTRUECOND);
+    dasm_put(Dst, 9828, LJ_TISTRUECOND);
     if (op == BC_IST || op == BC_ISTC) {
-      dasm_put(Dst, 9839);
+      dasm_put(Dst, 9840);
     } else {
-      dasm_put(Dst, 9844);
+      dasm_put(Dst, 9845);
     }
     if (op == BC_ISTC || op == BC_ISFC) {
-      dasm_put(Dst, 9849);
+      dasm_put(Dst, 9850);
     }
-    dasm_put(Dst, 9860, -BCBIAS_J*4);
+    dasm_put(Dst, 9861, -BCBIAS_J*4);
     break;
 
   /* -- Unary ops --------------------------------------------------------- */
 
   case BC_MOV:
-    dasm_put(Dst, 9892);
+    dasm_put(Dst, 9893);
     break;
   case BC_NOT:
-    dasm_put(Dst, 9926, LJ_TISTRUECOND, LJ_TTRUE);
+    dasm_put(Dst, 9927, LJ_TISTRUECOND, LJ_TTRUE);
     break;
   case BC_UNM:
-    dasm_put(Dst, 9962, LJ_TISNUM);
+    dasm_put(Dst, 9963, LJ_TISNUM);
     if (sse) {
-      dasm_put(Dst, 9973, (unsigned int)(U64x(80000000,00000000)), (unsigned int)((U64x(80000000,00000000))>>32));
+      dasm_put(Dst, 9974, (unsigned int)(U64x(80000000,00000000)), (unsigned int)((U64x(80000000,00000000))>>32));
     } else {
-      dasm_put(Dst, 9998);
+      dasm_put(Dst, 9999);
     }
-    dasm_put(Dst, 9572);
+    dasm_put(Dst, 9573);
     break;
   case BC_LEN:
-    dasm_put(Dst, 10007, LJ_TSTR);
+    dasm_put(Dst, 10008, LJ_TSTR);
     if (sse) {
-      dasm_put(Dst, 10021, Dt5(->len));
+      dasm_put(Dst, 10022, Dt5(->len));
     } else {
-      dasm_put(Dst, 10039, Dt5(->len));
+      dasm_put(Dst, 10040, Dt5(->len));
     }
-    dasm_put(Dst, 10048, LJ_TTAB);
+    dasm_put(Dst, 10049, LJ_TTAB);
     if (sse) {
-      dasm_put(Dst, 10089);
+      dasm_put(Dst, 10090);
     } else {
     }
-    dasm_put(Dst, 10098);
+    dasm_put(Dst, 10099);
     break;
 
   /* -- Binary ops -------------------------------------------------------- */
 
 
   case BC_ADDVN: case BC_ADDNV: case BC_ADDVV:
-    dasm_put(Dst, 10108);
+    dasm_put(Dst, 10109);
     vk = ((int)op - BC_ADDVN) / (BC_ADDNV-BC_ADDVN);
     switch (vk) {
     case 0:
-    dasm_put(Dst, 10116, LJ_TISNUM);
+    dasm_put(Dst, 10117, LJ_TISNUM);
     if (sse) {
-    dasm_put(Dst, 10128);
+    dasm_put(Dst, 10129);
     } else {
-    dasm_put(Dst, 10142);
+    dasm_put(Dst, 10143);
     }
       break;
     case 1:
-    dasm_put(Dst, 10150, LJ_TISNUM);
+    dasm_put(Dst, 10151, LJ_TISNUM);
     if (sse) {
-    dasm_put(Dst, 10162);
+    dasm_put(Dst, 10163);
     } else {
-    dasm_put(Dst, 10176);
+    dasm_put(Dst, 10177);
     }
       break;
     default:
-    dasm_put(Dst, 10184, LJ_TISNUM, LJ_TISNUM);
+    dasm_put(Dst, 10185, LJ_TISNUM, LJ_TISNUM);
     if (sse) {
-    dasm_put(Dst, 10206);
+    dasm_put(Dst, 10207);
     } else {
-    dasm_put(Dst, 10220);
+    dasm_put(Dst, 10221);
     }
       break;
     }
     if (sse) {
-    dasm_put(Dst, 9991);
+    dasm_put(Dst, 9992);
     } else {
-    dasm_put(Dst, 10003);
+    dasm_put(Dst, 10004);
     }
-    dasm_put(Dst, 9572);
+    dasm_put(Dst, 9573);
     break;
   case BC_SUBVN: case BC_SUBNV: case BC_SUBVV:
-    dasm_put(Dst, 10108);
+    dasm_put(Dst, 10109);
     vk = ((int)op - BC_ADDVN) / (BC_ADDNV-BC_ADDVN);
     switch (vk) {
     case 0:
-    dasm_put(Dst, 10116, LJ_TISNUM);
+    dasm_put(Dst, 10117, LJ_TISNUM);
     if (sse) {
-    dasm_put(Dst, 10228);
+    dasm_put(Dst, 10229);
     } else {
-    dasm_put(Dst, 10242);
+    dasm_put(Dst, 10243);
     }
       break;
     case 1:
-    dasm_put(Dst, 10150, LJ_TISNUM);
+    dasm_put(Dst, 10151, LJ_TISNUM);
     if (sse) {
-    dasm_put(Dst, 10250);
+    dasm_put(Dst, 10251);
     } else {
-    dasm_put(Dst, 10264);
+    dasm_put(Dst, 10265);
     }
       break;
     default:
-    dasm_put(Dst, 10184, LJ_TISNUM, LJ_TISNUM);
+    dasm_put(Dst, 10185, LJ_TISNUM, LJ_TISNUM);
     if (sse) {
-    dasm_put(Dst, 10272);
+    dasm_put(Dst, 10273);
     } else {
-    dasm_put(Dst, 10286);
+    dasm_put(Dst, 10287);
     }
       break;
     }
     if (sse) {
-    dasm_put(Dst, 9991);
+    dasm_put(Dst, 9992);
     } else {
-    dasm_put(Dst, 10003);
+    dasm_put(Dst, 10004);
     }
-    dasm_put(Dst, 9572);
+    dasm_put(Dst, 9573);
     break;
   case BC_MULVN: case BC_MULNV: case BC_MULVV:
-    dasm_put(Dst, 10108);
+    dasm_put(Dst, 10109);
     vk = ((int)op - BC_ADDVN) / (BC_ADDNV-BC_ADDVN);
     switch (vk) {
     case 0:
-    dasm_put(Dst, 10116, LJ_TISNUM);
+    dasm_put(Dst, 10117, LJ_TISNUM);
     if (sse) {
-    dasm_put(Dst, 10294);
+    dasm_put(Dst, 10295);
     } else {
-    dasm_put(Dst, 10308);
+    dasm_put(Dst, 10309);
     }
       break;
     case 1:
-    dasm_put(Dst, 10150, LJ_TISNUM);
+    dasm_put(Dst, 10151, LJ_TISNUM);
     if (sse) {
-    dasm_put(Dst, 10316);
+    dasm_put(Dst, 10317);
     } else {
-    dasm_put(Dst, 10330);
+    dasm_put(Dst, 10331);
     }
       break;
     default:
-    dasm_put(Dst, 10184, LJ_TISNUM, LJ_TISNUM);
+    dasm_put(Dst, 10185, LJ_TISNUM, LJ_TISNUM);
     if (sse) {
-    dasm_put(Dst, 10338);
+    dasm_put(Dst, 10339);
     } else {
-    dasm_put(Dst, 10352);
+    dasm_put(Dst, 10353);
     }
       break;
     }
     if (sse) {
-    dasm_put(Dst, 9991);
+    dasm_put(Dst, 9992);
     } else {
-    dasm_put(Dst, 10003);
+    dasm_put(Dst, 10004);
     }
-    dasm_put(Dst, 9572);
+    dasm_put(Dst, 9573);
     break;
   case BC_DIVVN: case BC_DIVNV: case BC_DIVVV:
-    dasm_put(Dst, 10108);
+    dasm_put(Dst, 10109);
     vk = ((int)op - BC_ADDVN) / (BC_ADDNV-BC_ADDVN);
     switch (vk) {
     case 0:
-    dasm_put(Dst, 10116, LJ_TISNUM);
+    dasm_put(Dst, 10117, LJ_TISNUM);
     if (sse) {
-    dasm_put(Dst, 10360);
+    dasm_put(Dst, 10361);
     } else {
-    dasm_put(Dst, 10374);
+    dasm_put(Dst, 10375);
     }
       break;
     case 1:
-    dasm_put(Dst, 10150, LJ_TISNUM);
+    dasm_put(Dst, 10151, LJ_TISNUM);
     if (sse) {
-    dasm_put(Dst, 10382);
+    dasm_put(Dst, 10383);
     } else {
-    dasm_put(Dst, 10396);
+    dasm_put(Dst, 10397);
     }
       break;
     default:
-    dasm_put(Dst, 10184, LJ_TISNUM, LJ_TISNUM);
+    dasm_put(Dst, 10185, LJ_TISNUM, LJ_TISNUM);
     if (sse) {
-    dasm_put(Dst, 10404);
+    dasm_put(Dst, 10405);
     } else {
-    dasm_put(Dst, 10418);
+    dasm_put(Dst, 10419);
     }
       break;
     }
     if (sse) {
-    dasm_put(Dst, 9991);
+    dasm_put(Dst, 9992);
     } else {
-    dasm_put(Dst, 10003);
+    dasm_put(Dst, 10004);
     }
-    dasm_put(Dst, 9572);
+    dasm_put(Dst, 9573);
     break;
   case BC_MODVN:
-    dasm_put(Dst, 10108);
+    dasm_put(Dst, 10109);
     vk = ((int)op - BC_ADDVN) / (BC_ADDNV-BC_ADDVN);
     switch (vk) {
     case 0:
-    dasm_put(Dst, 10116, LJ_TISNUM);
+    dasm_put(Dst, 10117, LJ_TISNUM);
     if (sse) {
-    dasm_put(Dst, 10426);
+    dasm_put(Dst, 10427);
     } else {
-    dasm_put(Dst, 10440);
+    dasm_put(Dst, 10441);
     }
       break;
     case 1:
-    dasm_put(Dst, 10150, LJ_TISNUM);
+    dasm_put(Dst, 10151, LJ_TISNUM);
     if (sse) {
-    dasm_put(Dst, 10448);
+    dasm_put(Dst, 10449);
     } else {
-    dasm_put(Dst, 10462);
+    dasm_put(Dst, 10463);
     }
       break;
     default:
-    dasm_put(Dst, 10184, LJ_TISNUM, LJ_TISNUM);
+    dasm_put(Dst, 10185, LJ_TISNUM, LJ_TISNUM);
     if (sse) {
-    dasm_put(Dst, 10470);
+    dasm_put(Dst, 10471);
     } else {
-    dasm_put(Dst, 10484);
+    dasm_put(Dst, 10485);
     }
       break;
     }
-    dasm_put(Dst, 10492);
+    dasm_put(Dst, 10493);
     if (sse) {
-    dasm_put(Dst, 9991);
+    dasm_put(Dst, 9992);
     } else {
-    dasm_put(Dst, 10003);
+    dasm_put(Dst, 10004);
     }
-    dasm_put(Dst, 9572);
+    dasm_put(Dst, 9573);
     break;
   case BC_MODNV: case BC_MODVV:
-    dasm_put(Dst, 10108);
+    dasm_put(Dst, 10109);
     vk = ((int)op - BC_ADDVN) / (BC_ADDNV-BC_ADDVN);
     switch (vk) {
     case 0:
-    dasm_put(Dst, 10116, LJ_TISNUM);
+    dasm_put(Dst, 10117, LJ_TISNUM);
     if (sse) {
-    dasm_put(Dst, 10426);
+    dasm_put(Dst, 10427);
     } else {
-    dasm_put(Dst, 10440);
+    dasm_put(Dst, 10441);
     }
       break;
     case 1:
-    dasm_put(Dst, 10150, LJ_TISNUM);
+    dasm_put(Dst, 10151, LJ_TISNUM);
     if (sse) {
-    dasm_put(Dst, 10448);
+    dasm_put(Dst, 10449);
     } else {
-    dasm_put(Dst, 10462);
+    dasm_put(Dst, 10463);
     }
       break;
     default:
-    dasm_put(Dst, 10184, LJ_TISNUM, LJ_TISNUM);
+    dasm_put(Dst, 10185, LJ_TISNUM, LJ_TISNUM);
     if (sse) {
-    dasm_put(Dst, 10470);
+    dasm_put(Dst, 10471);
     } else {
-    dasm_put(Dst, 10484);
+    dasm_put(Dst, 10485);
     }
       break;
     }
-    dasm_put(Dst, 10498);
+    dasm_put(Dst, 10499);
     break;
   case BC_POW:
-    dasm_put(Dst, 10108);
+    dasm_put(Dst, 10109);
     vk = ((int)op - BC_ADDVN) / (BC_ADDNV-BC_ADDVN);
     switch (vk) {
     case 0:
-    dasm_put(Dst, 10116, LJ_TISNUM);
+    dasm_put(Dst, 10117, LJ_TISNUM);
     if (sse) {
-    dasm_put(Dst, 10426);
+    dasm_put(Dst, 10427);
     } else {
-    dasm_put(Dst, 10440);
+    dasm_put(Dst, 10441);
     }
       break;
     case 1:
-    dasm_put(Dst, 10150, LJ_TISNUM);
+    dasm_put(Dst, 10151, LJ_TISNUM);
     if (sse) {
-    dasm_put(Dst, 10448);
+    dasm_put(Dst, 10449);
     } else {
-    dasm_put(Dst, 10462);
+    dasm_put(Dst, 10463);
     }
       break;
     default:
-    dasm_put(Dst, 10184, LJ_TISNUM, LJ_TISNUM);
+    dasm_put(Dst, 10185, LJ_TISNUM, LJ_TISNUM);
     if (sse) {
-    dasm_put(Dst, 10470);
+    dasm_put(Dst, 10471);
     } else {
-    dasm_put(Dst, 10484);
+    dasm_put(Dst, 10485);
     }
       break;
     }
-    dasm_put(Dst, 10503);
+    dasm_put(Dst, 10504);
     if (sse) {
-    dasm_put(Dst, 9991);
+    dasm_put(Dst, 9992);
     } else {
-    dasm_put(Dst, 10003);
+    dasm_put(Dst, 10004);
     }
-    dasm_put(Dst, 9572);
+    dasm_put(Dst, 9573);
     break;
 
   case BC_CAT:
-    dasm_put(Dst, 10507, Dt1(->base), Dt1(->base));
+    dasm_put(Dst, 10508, Dt1(->base), Dt1(->base));
     break;
 
   /* -- Constant ops ------------------------------------------------------ */
 
   case BC_KSTR:
-    dasm_put(Dst, 10597, LJ_TSTR);
+    dasm_put(Dst, 10598, LJ_TSTR);
     break;
   case BC_KSHORT:
     if (sse) {
-      dasm_put(Dst, 10632);
+      dasm_put(Dst, 10633);
     } else {
-      dasm_put(Dst, 10647);
+      dasm_put(Dst, 10648);
     }
-    dasm_put(Dst, 9572);
+    dasm_put(Dst, 9573);
     break;
   case BC_KNUM:
     if (sse) {
-      dasm_put(Dst, 10655);
+      dasm_put(Dst, 10656);
     } else {
-      dasm_put(Dst, 10668);
+      dasm_put(Dst, 10669);
     }
-    dasm_put(Dst, 9572);
+    dasm_put(Dst, 9573);
     break;
   case BC_KPRI:
-    dasm_put(Dst, 10675);
+    dasm_put(Dst, 10676);
     break;
   case BC_KNIL:
-    dasm_put(Dst, 10703, LJ_TNIL);
+    dasm_put(Dst, 10704, LJ_TNIL);
     break;
 
   /* -- Upvalue and function ops ------------------------------------------ */
 
   case BC_UGET:
-    dasm_put(Dst, 10750, offsetof(GCfuncL, uvptr), DtA(->v));
+    dasm_put(Dst, 10751, offsetof(GCfuncL, uvptr), DtA(->v));
     break;
   case BC_USETV:
 #define TV2MARKOFS \
  ((int32_t)offsetof(GCupval, marked)-(int32_t)offsetof(GCupval, tv))
-    dasm_put(Dst, 10795, offsetof(GCfuncL, uvptr), DtA(->closed), DtA(->v), TV2MARKOFS, LJ_GC_BLACK, LJ_TISGCV, LJ_TISNUM - LJ_TISGCV, Dt4(->gch.marked), LJ_GC_WHITES, GG_DISP2G);
-    dasm_put(Dst, 10886);
+    dasm_put(Dst, 10796, offsetof(GCfuncL, uvptr), DtA(->closed), DtA(->v), TV2MARKOFS, LJ_GC_BLACK, LJ_TISGCV, LJ_TISNUM - LJ_TISGCV, Dt4(->gch.marked), LJ_GC_WHITES, GG_DISP2G);
+    dasm_put(Dst, 10887);
     break;
 #undef TV2MARKOFS
   case BC_USETS:
-    dasm_put(Dst, 10898, offsetof(GCfuncL, uvptr), DtA(->v), LJ_TSTR, DtA(->marked), LJ_GC_BLACK, Dt4(->gch.marked), LJ_GC_WHITES, DtA(->closed), GG_DISP2G);
+    dasm_put(Dst, 10899, offsetof(GCfuncL, uvptr), DtA(->v), LJ_TSTR, DtA(->marked), LJ_GC_BLACK, Dt4(->gch.marked), LJ_GC_WHITES, DtA(->closed), GG_DISP2G);
     break;
   case BC_USETN:
-    dasm_put(Dst, 10991);
+    dasm_put(Dst, 10992);
     if (sse) {
-      dasm_put(Dst, 10996);
+      dasm_put(Dst, 10997);
     } else {
-      dasm_put(Dst, 9811);
+      dasm_put(Dst, 9812);
     }
-    dasm_put(Dst, 11003, offsetof(GCfuncL, uvptr), DtA(->v));
+    dasm_put(Dst, 11004, offsetof(GCfuncL, uvptr), DtA(->v));
     if (sse) {
-      dasm_put(Dst, 11012);
+      dasm_put(Dst, 11013);
     } else {
-      dasm_put(Dst, 11018);
+      dasm_put(Dst, 11019);
     }
-    dasm_put(Dst, 9572);
+    dasm_put(Dst, 9573);
     break;
   case BC_USETP:
-    dasm_put(Dst, 11021, offsetof(GCfuncL, uvptr), DtA(->v));
+    dasm_put(Dst, 11022, offsetof(GCfuncL, uvptr), DtA(->v));
     break;
   case BC_UCLO:
-    dasm_put(Dst, 11060, -BCBIAS_J*4, Dt1(->openupval), Dt1(->base), Dt1(->base));
+    dasm_put(Dst, 11061, -BCBIAS_J*4, Dt1(->openupval), Dt1(->base), Dt1(->base));
     break;
 
   case BC_FNEW:
-    dasm_put(Dst, 11115, Dt1(->base), Dt1(->base), LJ_TFUNC);
+    dasm_put(Dst, 11116, Dt1(->base), Dt1(->base), LJ_TFUNC);
     break;
 
   /* -- Table ops --------------------------------------------------------- */
 
   case BC_TNEW:
-    dasm_put(Dst, 11181, Dt1(->base), DISPATCH_GL(gc.total), DISPATCH_GL(gc.threshold), Dt1(->base), LJ_TTAB);
+    dasm_put(Dst, 11182, Dt1(->base), DISPATCH_GL(gc.total), DISPATCH_GL(gc.threshold), Dt1(->base), LJ_TTAB);
     break;
   case BC_TDUP:
-    dasm_put(Dst, 11303, DISPATCH_GL(gc.total), DISPATCH_GL(gc.threshold), Dt1(->base), Dt1(->base), LJ_TTAB);
+    dasm_put(Dst, 11304, DISPATCH_GL(gc.total), DISPATCH_GL(gc.threshold), Dt1(->base), Dt1(->base), LJ_TTAB);
     break;
 
   case BC_GGET:
-    dasm_put(Dst, 11398, Dt7(->env));
+    dasm_put(Dst, 11399, Dt7(->env));
     break;
   case BC_GSET:
-    dasm_put(Dst, 11417, Dt7(->env));
+    dasm_put(Dst, 11418, Dt7(->env));
     break;
 
   case BC_TGETV:
-    dasm_put(Dst, 11436, LJ_TTAB, LJ_TISNUM);
+    dasm_put(Dst, 11437, LJ_TTAB, LJ_TISNUM);
     if (sse) {
-      dasm_put(Dst, 11469);
+      dasm_put(Dst, 11470);
     } else {
     }
-    dasm_put(Dst, 11490, Dt6(->asize), Dt6(->array), LJ_TNIL, Dt6(->metatable), Dt6(->metatable), Dt6(->nomm), 1<<MM_index);
-    dasm_put(Dst, 11583, LJ_TSTR);
+    dasm_put(Dst, 11491, Dt6(->asize), Dt6(->array), LJ_TNIL, Dt6(->metatable), Dt6(->metatable), Dt6(->nomm), 1<<MM_index);
+    dasm_put(Dst, 11584, LJ_TSTR);
     break;
   case BC_TGETS:
-    dasm_put(Dst, 11601, LJ_TTAB, Dt6(->hmask), Dt5(->hash), sizeof(Node), Dt6(->node), DtB(->key.it), LJ_TSTR, DtB(->key.gcr), LJ_TNIL);
-    dasm_put(Dst, 11686, LJ_TNIL, DtB(->next), Dt6(->metatable), Dt6(->nomm), 1<<MM_index);
+    dasm_put(Dst, 11602, LJ_TTAB, Dt6(->hmask), Dt5(->hash), sizeof(Node), Dt6(->node), DtB(->key.it), LJ_TSTR, DtB(->key.gcr), LJ_TNIL);
+    dasm_put(Dst, 11687, LJ_TNIL, DtB(->next), Dt6(->metatable), Dt6(->nomm), 1<<MM_index);
     break;
   case BC_TGETB:
-    dasm_put(Dst, 11758, LJ_TTAB, Dt6(->asize), Dt6(->array), LJ_TNIL, Dt6(->metatable), Dt6(->metatable), Dt6(->nomm), 1<<MM_index);
-    dasm_put(Dst, 10098);
+    dasm_put(Dst, 11759, LJ_TTAB, Dt6(->asize), Dt6(->array), LJ_TNIL, Dt6(->metatable), Dt6(->metatable), Dt6(->nomm), 1<<MM_index);
+    dasm_put(Dst, 10099);
     break;
 
   case BC_TSETV:
-    dasm_put(Dst, 11858, LJ_TTAB, LJ_TISNUM);
+    dasm_put(Dst, 11859, LJ_TTAB, LJ_TISNUM);
     if (sse) {
-      dasm_put(Dst, 11469);
+      dasm_put(Dst, 11470);
     } else {
     }
-    dasm_put(Dst, 11891, Dt6(->asize), Dt6(->array), LJ_TNIL, Dt6(->marked), LJ_GC_BLACK, Dt6(->metatable), Dt6(->metatable));
-    dasm_put(Dst, 11975, Dt6(->nomm), 1<<MM_newindex, LJ_TSTR, Dt6(->marked), cast_byte(~LJ_GC_BLACK), DISPATCH_GL(gc.grayagain), DISPATCH_GL(gc.grayagain), Dt6(->gclist));
+    dasm_put(Dst, 11892, Dt6(->asize), Dt6(->array), LJ_TNIL, Dt6(->marked), LJ_GC_BLACK, Dt6(->metatable), Dt6(->metatable));
+    dasm_put(Dst, 11976, Dt6(->nomm), 1<<MM_newindex, LJ_TSTR, Dt6(->marked), cast_byte(~LJ_GC_BLACK), DISPATCH_GL(gc.grayagain), DISPATCH_GL(gc.grayagain), Dt6(->gclist));
     break;
   case BC_TSETS:
-    dasm_put(Dst, 12037, LJ_TTAB, Dt6(->hmask), Dt5(->hash), sizeof(Node), Dt6(->nomm), Dt6(->node), DtB(->key.it), LJ_TSTR, DtB(->key.gcr), LJ_TNIL);
-    dasm_put(Dst, 12113, Dt6(->marked), LJ_GC_BLACK, Dt6(->metatable), Dt6(->metatable), Dt6(->nomm), 1<<MM_newindex, DtB(->next));
-    dasm_put(Dst, 12206, Dt6(->metatable), Dt6(->nomm), 1<<MM_newindex, LJ_TSTR, Dt1(->base), Dt1(->base), Dt6(->marked), cast_byte(~LJ_GC_BLACK), DISPATCH_GL(gc.grayagain), DISPATCH_GL(gc.grayagain), Dt6(->gclist));
+    dasm_put(Dst, 12038, LJ_TTAB, Dt6(->hmask), Dt5(->hash), sizeof(Node), Dt6(->nomm), Dt6(->node), DtB(->key.it), LJ_TSTR, DtB(->key.gcr), LJ_TNIL);
+    dasm_put(Dst, 12114, Dt6(->marked), LJ_GC_BLACK, Dt6(->metatable), Dt6(->metatable), Dt6(->nomm), 1<<MM_newindex, DtB(->next));
+    dasm_put(Dst, 12207, Dt6(->metatable), Dt6(->nomm), 1<<MM_newindex, LJ_TSTR, Dt1(->base), Dt1(->base), Dt6(->marked), cast_byte(~LJ_GC_BLACK), DISPATCH_GL(gc.grayagain), DISPATCH_GL(gc.grayagain), Dt6(->gclist));
     break;
   case BC_TSETB:
-    dasm_put(Dst, 12297, LJ_TTAB, Dt6(->asize), Dt6(->array), LJ_TNIL, Dt6(->marked), LJ_GC_BLACK, Dt6(->metatable));
-    dasm_put(Dst, 12396, Dt6(->metatable), Dt6(->nomm), 1<<MM_newindex, Dt6(->marked), cast_byte(~LJ_GC_BLACK), DISPATCH_GL(gc.grayagain), DISPATCH_GL(gc.grayagain), Dt6(->gclist));
+    dasm_put(Dst, 12298, LJ_TTAB, Dt6(->asize), Dt6(->array), LJ_TNIL, Dt6(->marked), LJ_GC_BLACK, Dt6(->metatable));
+    dasm_put(Dst, 12397, Dt6(->metatable), Dt6(->nomm), 1<<MM_newindex, Dt6(->marked), cast_byte(~LJ_GC_BLACK), DISPATCH_GL(gc.grayagain), DISPATCH_GL(gc.grayagain), Dt6(->gclist));
     break;
 
   case BC_TSETM:
-    dasm_put(Dst, 12442);
+    dasm_put(Dst, 12443);
     if (sse) {
-      dasm_put(Dst, 12447);
+      dasm_put(Dst, 12448);
     } else {
     }
-    dasm_put(Dst, 12454, Dt6(->marked), LJ_GC_BLACK, Dt6(->asize), Dt6(->array), Dt1(->base), Dt1(->base));
-    dasm_put(Dst, 12594, Dt6(->marked), cast_byte(~LJ_GC_BLACK), DISPATCH_GL(gc.grayagain), DISPATCH_GL(gc.grayagain), Dt6(->gclist));
+    dasm_put(Dst, 12455, Dt6(->marked), LJ_GC_BLACK, Dt6(->asize), Dt6(->array), Dt1(->base), Dt1(->base));
+    dasm_put(Dst, 12595, Dt6(->marked), cast_byte(~LJ_GC_BLACK), DISPATCH_GL(gc.grayagain), DISPATCH_GL(gc.grayagain), Dt6(->gclist));
     break;
 
   /* -- Calls and vararg handling ----------------------------------------- */
 
   case BC_CALL: case BC_CALLM:
-    dasm_put(Dst, 10112);
+    dasm_put(Dst, 10113);
     if (op == BC_CALLM) {
-      dasm_put(Dst, 12612);
+      dasm_put(Dst, 12613);
     }
-    dasm_put(Dst, 12617, LJ_TFUNC, Dt7(->pc));
+    dasm_put(Dst, 12618, LJ_TFUNC, Dt7(->pc));
     break;
 
   case BC_CALLMT:
-    dasm_put(Dst, 12612);
+    dasm_put(Dst, 12613);
     break;
   case BC_CALLT:
-    dasm_put(Dst, 12659, LJ_TFUNC, FRAME_TYPE, Dt7(->ffid), Dt7(->pc));
-    dasm_put(Dst, 12778, FRAME_TYPE, Dt7(->pc), PC2PROTO(k), FRAME_VARG, FRAME_TYPEP, FRAME_VARG);
+    dasm_put(Dst, 12660, LJ_TFUNC, FRAME_TYPE, Dt7(->ffid), Dt7(->pc));
+    dasm_put(Dst, 12779, FRAME_TYPE, Dt7(->pc), PC2PROTO(k), FRAME_VARG, FRAME_TYPEP, FRAME_VARG);
     break;
 
   case BC_ITERC:
-    dasm_put(Dst, 12849, LJ_TFUNC, 2+1, Dt7(->pc));
+    dasm_put(Dst, 12850, LJ_TFUNC, 2+1, Dt7(->pc));
     break;
 
   case BC_VARG:
-    dasm_put(Dst, 12930, Dt7(->pc), PC2PROTO(numparams), (8+FRAME_VARG), LJ_TNIL);
-    dasm_put(Dst, 13075, Dt1(->maxstack), Dt1(->base), Dt1(->top), Dt1(->base), Dt1(->top));
+    dasm_put(Dst, 12931, Dt7(->pc), PC2PROTO(numparams), (8+FRAME_VARG), LJ_TNIL);
+    dasm_put(Dst, 13076, Dt1(->maxstack), Dt1(->base), Dt1(->top), Dt1(->base), Dt1(->top));
     break;
 
   /* -- Returns ----------------------------------------------------------- */
 
   case BC_RETM:
-    dasm_put(Dst, 12612);
+    dasm_put(Dst, 12613);
     break;
 
   case BC_RET: case BC_RET0: case BC_RET1:
     if (op != BC_RET0) {
-      dasm_put(Dst, 13174);
+      dasm_put(Dst, 13175);
     }
-    dasm_put(Dst, 13178, FRAME_TYPE);
+    dasm_put(Dst, 13179, FRAME_TYPE);
     switch (op) {
     case BC_RET:
-      dasm_put(Dst, 13197);
+      dasm_put(Dst, 13198);
       break;
     case BC_RET1:
-      dasm_put(Dst, 13255);
+      dasm_put(Dst, 13256);
       /* fallthrough */
     case BC_RET0:
-      dasm_put(Dst, 13271);
+      dasm_put(Dst, 13272);
     default:
       break;
     }
-    dasm_put(Dst, 13282, Dt7(->pc), PC2PROTO(k));
+    dasm_put(Dst, 13283, Dt7(->pc), PC2PROTO(k));
     if (op == BC_RET) {
-      dasm_put(Dst, 13326, LJ_TNIL);
+      dasm_put(Dst, 13327, LJ_TNIL);
     } else {
-      dasm_put(Dst, 13335, LJ_TNIL);
+      dasm_put(Dst, 13336, LJ_TNIL);
     }
-    dasm_put(Dst, 13342, -FRAME_VARG, FRAME_TYPEP);
+    dasm_put(Dst, 13343, -FRAME_VARG, FRAME_TYPEP);
     if (op != BC_RET0) {
-      dasm_put(Dst, 13366);
+      dasm_put(Dst, 13367);
     }
     dasm_put(Dst, 4573);
     break;
@@ -2042,7 +2042,7 @@ static void build_ins(BuildCtx *ctx, BCOp op, int defop, int cmov, int sse)
 
   case BC_FORL:
 #if LJ_HASJIT
-    dasm_put(Dst, 13370, HOTCOUNT_PCMASK, GG_DISP2HOT);
+    dasm_put(Dst, 13371, HOTCOUNT_PCMASK, GG_DISP2HOT);
 #endif
     break;
 
@@ -2054,57 +2054,57 @@ static void build_ins(BuildCtx *ctx, BCOp op, int defop, int cmov, int sse)
   case BC_FORI:
   case BC_IFORL:
     vk = (op == BC_IFORL || op == BC_JFORL);
-    dasm_put(Dst, 13391);
+    dasm_put(Dst, 13392);
     if (!vk) {
-      dasm_put(Dst, 13395, LJ_TISNUM, LJ_TISNUM);
+      dasm_put(Dst, 13396, LJ_TISNUM, LJ_TISNUM);
     }
-    dasm_put(Dst, 13414);
+    dasm_put(Dst, 13415);
     if (!vk) {
-      dasm_put(Dst, 13418, LJ_TISNUM);
+      dasm_put(Dst, 13419, LJ_TISNUM);
     }
     if (sse) {
-      dasm_put(Dst, 13427);
+      dasm_put(Dst, 13428);
       if (vk) {
-       dasm_put(Dst, 13439);
+       dasm_put(Dst, 13440);
       } else {
-       dasm_put(Dst, 13458);
+       dasm_put(Dst, 13459);
       }
-      dasm_put(Dst, 13463);
+      dasm_put(Dst, 13464);
     } else {
-      dasm_put(Dst, 13476);
+      dasm_put(Dst, 13477);
       if (vk) {
-       dasm_put(Dst, 13482);
+       dasm_put(Dst, 13483);
       } else {
-       dasm_put(Dst, 13498);
+       dasm_put(Dst, 13499);
       }
-      dasm_put(Dst, 13506);
+      dasm_put(Dst, 13507);
       if (cmov) {
-      dasm_put(Dst, 9535);
+      dasm_put(Dst, 9536);
       } else {
-      dasm_put(Dst, 9541);
+      dasm_put(Dst, 9542);
       }
       if (!cmov) {
-       dasm_put(Dst, 13511);
+       dasm_put(Dst, 13512);
       }
     }
     if (op == BC_FORI) {
-      dasm_put(Dst, 13517, -BCBIAS_J*4);
+      dasm_put(Dst, 13518, -BCBIAS_J*4);
     } else if (op == BC_JFORI) {
-      dasm_put(Dst, 13527, -BCBIAS_J*4, BC_JLOOP);
+      dasm_put(Dst, 13528, -BCBIAS_J*4, BC_JLOOP);
     } else if (op == BC_IFORL) {
-      dasm_put(Dst, 13541, -BCBIAS_J*4);
+      dasm_put(Dst, 13542, -BCBIAS_J*4);
     } else {
-      dasm_put(Dst, 13537, BC_JLOOP);
+      dasm_put(Dst, 13538, BC_JLOOP);
     }
-    dasm_put(Dst, 9570);
+    dasm_put(Dst, 9571);
     if (sse) {
-      dasm_put(Dst, 13551);
+      dasm_put(Dst, 13552);
     }
     break;
 
   case BC_ITERL:
 #if LJ_HASJIT
-    dasm_put(Dst, 13370, HOTCOUNT_PCMASK, GG_DISP2HOT);
+    dasm_put(Dst, 13371, HOTCOUNT_PCMASK, GG_DISP2HOT);
 #endif
     break;
 
@@ -2113,33 +2113,33 @@ static void build_ins(BuildCtx *ctx, BCOp op, int defop, int cmov, int sse)
     break;
 #endif
   case BC_IITERL:
-    dasm_put(Dst, 13562, LJ_TNIL);
+    dasm_put(Dst, 13563, LJ_TNIL);
     if (op == BC_JITERL) {
-      dasm_put(Dst, 13577, BC_JLOOP);
+      dasm_put(Dst, 13578, BC_JLOOP);
     } else {
-      dasm_put(Dst, 13591, -BCBIAS_J*4);
+      dasm_put(Dst, 13592, -BCBIAS_J*4);
     }
-    dasm_put(Dst, 9870);
+    dasm_put(Dst, 9871);
     break;
 
   case BC_LOOP:
 #if LJ_HASJIT
-    dasm_put(Dst, 13370, HOTCOUNT_PCMASK, GG_DISP2HOT);
+    dasm_put(Dst, 13371, HOTCOUNT_PCMASK, GG_DISP2HOT);
 #endif
     break;
 
   case BC_ILOOP:
-    dasm_put(Dst, 9572);
+    dasm_put(Dst, 9573);
     break;
 
   case BC_JLOOP:
 #if LJ_HASJIT
-    dasm_put(Dst, 13607, DISPATCH_J(trace), DtD(->mcode), DISPATCH_GL(jit_base), DISPATCH_GL(jit_L), 9*16+4*8, -1*16, -2*16, -3*16, -4*16, -5*16, -6*16, -7*16, -8*16, -9*16);
+    dasm_put(Dst, 13608, DISPATCH_J(trace), DtD(->mcode), DISPATCH_GL(jit_base), DISPATCH_GL(jit_L), 9*16+4*8, -1*16, -2*16, -3*16, -4*16, -5*16, -6*16, -7*16, -8*16, -9*16);
 #endif
     break;
 
   case BC_JMP:
-    dasm_put(Dst, 13716, -BCBIAS_J*4);
+    dasm_put(Dst, 13717, -BCBIAS_J*4);
     break;
 
   /* -- Function headers -------------------------------------------------- */
@@ -2153,7 +2153,7 @@ static void build_ins(BuildCtx *ctx, BCOp op, int defop, int cmov, int sse)
 
   case BC_FUNCF:
 #if LJ_HASJIT
-    dasm_put(Dst, 13741, HOTCOUNT_PCMASK, GG_DISP2HOT);
+    dasm_put(Dst, 13742, HOTCOUNT_PCMASK, GG_DISP2HOT);
 #endif
   case BC_FUNCV:  /* NYI: compiled vararg functions. */
     break;
@@ -2163,47 +2163,47 @@ static void build_ins(BuildCtx *ctx, BCOp op, int defop, int cmov, int sse)
     break;
 #endif
   case BC_IFUNCF:
-    dasm_put(Dst, 13762, -4+PC2PROTO(k), Dt1(->maxstack), -4+PC2PROTO(numparams));
+    dasm_put(Dst, 13763, -4+PC2PROTO(k), Dt1(->maxstack), -4+PC2PROTO(numparams));
     if (op == BC_JFUNCF) {
-      dasm_put(Dst, 13792, BC_JLOOP);
+      dasm_put(Dst, 13793, BC_JLOOP);
     } else {
-      dasm_put(Dst, 9572);
+      dasm_put(Dst, 9573);
     }
-    dasm_put(Dst, 13801, LJ_TNIL);
+    dasm_put(Dst, 13802, LJ_TNIL);
     break;
 
   case BC_JFUNCV:
 #if !LJ_HASJIT
     break;
 #endif
-    dasm_put(Dst, 9047);
+    dasm_put(Dst, 9048);
     break;  /* NYI: compiled vararg functions. */
 
   case BC_IFUNCV:
-    dasm_put(Dst, 13823, FRAME_VARG, Dt1(->maxstack), -4+PC2PROTO(numparams), LJ_TNIL);
+    dasm_put(Dst, 13824, FRAME_VARG, Dt1(->maxstack), -4+PC2PROTO(numparams), LJ_TNIL);
     if (op == BC_JFUNCV) {
-      dasm_put(Dst, 13792, BC_JLOOP);
+      dasm_put(Dst, 13793, BC_JLOOP);
     } else {
-      dasm_put(Dst, 13914, -4+PC2PROTO(k));
+      dasm_put(Dst, 13915, -4+PC2PROTO(k));
     }
-    dasm_put(Dst, 13937, LJ_TNIL);
+    dasm_put(Dst, 13938, LJ_TNIL);
     break;
 
   case BC_FUNCC:
   case BC_FUNCCW:
-    dasm_put(Dst, 13959, Dt8(->f), Dt1(->base), 8*LUA_MINSTACK, Dt1(->maxstack), Dt1(->top));
+    dasm_put(Dst, 13960, Dt8(->f), Dt1(->base), 8*LUA_MINSTACK, Dt1(->maxstack), Dt1(->top));
     if (op == BC_FUNCC) {
-      dasm_put(Dst, 13989);
+      dasm_put(Dst, 13990);
     } else {
-      dasm_put(Dst, 13993);
+      dasm_put(Dst, 13994);
     }
-    dasm_put(Dst, 14001, DISPATCH_GL(vmstate), ~LJ_VMST_C);
+    dasm_put(Dst, 14002, DISPATCH_GL(vmstate), ~LJ_VMST_C);
     if (op == BC_FUNCC) {
-      dasm_put(Dst, 14010);
+      dasm_put(Dst, 14011);
     } else {
-      dasm_put(Dst, 14014, DISPATCH_GL(wrapf));
+      dasm_put(Dst, 14015, DISPATCH_GL(wrapf));
     }
-    dasm_put(Dst, 14019, DISPATCH_GL(vmstate), ~LJ_VMST_INTERP, Dt1(->base), Dt1(->top));
+    dasm_put(Dst, 14020, DISPATCH_GL(vmstate), ~LJ_VMST_INTERP, Dt1(->base), Dt1(->top));
     break;
 
   /* ---------------------------------------------------------------------- */
@@ -2231,7 +2231,7 @@ static int build_backend(BuildCtx *ctx)
 
   build_subroutines(ctx, cmov, sse);
 
-  dasm_put(Dst, 14044);
+  dasm_put(Dst, 14045);
   for (op = 0; op < BC__MAX; op++)
     build_ins(ctx, (BCOp)op, op, cmov, sse);
 
index 69672adc93c5f15cd25170580af0e01c7b045a81..bc1284577a63fa2581475885c6b5dd31483a9f24 100644 (file)
@@ -2393,37 +2393,38 @@ static void build_subroutines(BuildCtx *ctx, int cmov, int sse)
   |.endif
   |  call aword CFUNC:RD->f            // (lua_State *L)
   |  mov BASE, L:RB->base
-  |  // Either throws an error or recovers and returns 0 or MULTRES (+1).
-  |  test RD, RD;  jnz ->fff_res       // Returned MULTRES (already in RD).
-  |1:  // Returned 0: retry fast path.
-  |  mov RD, L:RB->top
-  |  sub RD, BASE
-  |  shr RD, 3
-  |  add NARGS:RD, 1
+  |  // Either throws an error, or recovers and returns -1, 0 or nresults+1.
+  |  test RD, RD;  jg ->fff_res                // Returned nresults+1?
+  |1:
+  |  mov RA, L:RB->top
+  |  sub RA, BASE
+  |  shr RA, 3
+  |  test RD, RD
+  |  lea NARGS:RD, [RA+1]
   |  mov LFUNC:RB, [BASE-8]
-  |  cmp dword [BASE-4], PC
-  |  jne >2                            // Tailcalled?
-  |  ins_callt                         // Retry the call.
+  |  jne >2                            // Returned -1?
+  |  ins_callt                         // Returned 0: retry fast path.
   |
-  |2:  // Reconstruct previous base for vmeta_call.
+  |2:  // Reconstruct previous base for vmeta_call during tailcall.
   |  mov RA, BASE
   |  test PC, FRAME_TYPE
   |  jnz >3
   |  movzx RB, PC_RA
   |  not RBa                           // Note: ~RB = -(RB+1)
   |  lea BASE, [BASE+RB*8]             // base = base - (RB+1)*8
-  |  jmp ->vm_call_dispatch            // Resolve again.
+  |  jmp ->vm_call_dispatch            // Resolve again for tailcall.
   |3:
   |  mov RB, PC
   |  and RB, -8
   |  sub BASE, RB
-  |  jmp ->vm_call_dispatch            // Resolve again.
+  |  jmp ->vm_call_dispatch            // Resolve again for tailcall.
   |
   |5:  // Grow stack for fallback handler.
   |  mov FCARG2, LUA_MINSTACK
   |  mov FCARG1, L:RB
   |  call extern lj_state_growstack@8  // (lua_State *L, int n)
   |  mov BASE, L:RB->base
+  |  xor RD, RD                                // Simulate a return 0.
   |  jmp <1                            // Dumb retry (goes through ff first).
   |
   |->fff_gcstep:                       // Call GC step function.
@@ -4366,7 +4367,7 @@ static void build_ins(BuildCtx *ctx, BCOp op, int defop, int cmov, int sse)
   case BC_CALLMT:
     |  ins_AD  // RA = base, RD = extra_nargs
     |  add NARGS:RD, MULTRES
-    |  // Fall through. Assumes BC_CALLMT follows and ins_AD is a no-op.
+    |  // Fall through. Assumes BC_CALLT follows and ins_AD is a no-op.
     break;
   case BC_CALLT:
     |  ins_AD  // RA = base, RD = nargs+1
index c50b541a59256b76077ce1f66b76e0af57bf6b29..bb1645ab74cf111bafd0942e84807086e508ab98 100644 (file)
@@ -12,7 +12,7 @@
 #define DASM_SECTION_CODE_OP   0
 #define DASM_SECTION_CODE_SUB  1
 #define DASM_MAXSECTION                2
-static const unsigned char build_actionlist[15251] = {
+static const unsigned char build_actionlist[15252] = {
   254,1,248,10,252,247,198,237,15,132,244,11,131,230,252,248,41,252,242,141,
   76,49,252,248,139,114,252,252,199,68,10,4,237,248,12,131,192,1,137,68,36,
   20,252,247,198,237,15,132,244,13,248,14,129,252,246,239,252,247,198,237,15,
@@ -389,12 +389,12 @@ static const unsigned char build_actionlist[15251] = {
   205,137,193,252,233,244,125,248,117,184,237,252,233,244,55,248,119,184,237,
   248,55,139,108,36,48,139,114,252,252,137,116,36,24,137,149,233,141,68,194,
   252,248,141,136,233,137,133,233,139,66,252,248,59,141,233,15,135,244,251,
-  137,44,36,252,255,144,233,139,149,233,133,192,15,133,244,69,248,1,255,139,
-  133,233,41,208,193,232,3,131,192,1,139,106,252,248,57,114,252,252,15,133,
-  244,248,139,181,233,139,14,15,182,252,233,15,182,205,131,198,4,252,255,36,
-  171,248,2,137,209,252,247,198,237,15,133,244,249,15,182,110,252,253,252,247,
-  213,141,20,252,234,252,233,244,27,248,3,137,252,245,131,229,252,248,41,252,
-  234,252,233,244,27,248,5,186,237,137,252,233,232,251,1,0,139,149,233,252,
+  137,44,36,252,255,144,233,139,149,233,133,192,15,143,244,69,248,1,255,139,
+  141,233,41,209,193,252,233,3,133,192,141,65,1,139,106,252,248,15,133,244,
+  248,139,181,233,139,14,15,182,252,233,15,182,205,131,198,4,252,255,36,171,
+  248,2,137,209,252,247,198,237,15,133,244,249,15,182,110,252,253,252,247,213,
+  141,20,252,234,252,233,244,27,248,3,137,252,245,131,229,252,248,41,252,234,
+  252,233,244,27,248,5,186,237,137,252,233,232,251,1,0,139,149,233,49,192,252,
   233,244,1,248,66,93,137,108,36,16,139,108,36,48,137,116,36,24,137,149,233,
   255,141,68,194,252,248,137,252,233,137,133,233,232,251,1,19,139,149,233,139,
   133,233,41,208,193,232,3,131,192,1,139,108,36,16,85,195,248,136,255,15,182,
@@ -1434,117 +1434,117 @@ static void build_subroutines(BuildCtx *ctx, int cmov, int sse)
   }
   dasm_put(Dst, 7731, 1+2, 1+1, Dt1(->base), 8*LUA_MINSTACK, Dt1(->top), Dt1(->maxstack), Dt8(->f), Dt1(->base));
   dasm_put(Dst, 7809, Dt1(->top), Dt7(->pc), FRAME_TYPE, LUA_MINSTACK, Dt1(->base), Dt1(->base));
-  dasm_put(Dst, 7932, Dt1(->top), Dt1(->base), Dt1(->top));
+  dasm_put(Dst, 7933, Dt1(->top), Dt1(->base), Dt1(->top));
 #if LJ_HASJIT
-  dasm_put(Dst, 7970, DISPATCH_GL(hookmask), HOOK_VMEVENT, HOOK_ACTIVE, LUA_MASKLINE|LUA_MASKCOUNT, DISPATCH_GL(hookcount));
+  dasm_put(Dst, 7971, DISPATCH_GL(hookmask), HOOK_VMEVENT, HOOK_ACTIVE, LUA_MASKLINE|LUA_MASKCOUNT, DISPATCH_GL(hookcount));
 #endif
-  dasm_put(Dst, 8001, DISPATCH_GL(hookmask), HOOK_ACTIVE, DISPATCH_GL(hookmask), HOOK_ACTIVE, LUA_MASKLINE|LUA_MASKCOUNT, DISPATCH_GL(hookcount), LUA_MASKLINE);
-  dasm_put(Dst, 8052, Dt1(->base), Dt1(->base), GG_DISP2STATIC);
+  dasm_put(Dst, 8002, DISPATCH_GL(hookmask), HOOK_ACTIVE, DISPATCH_GL(hookmask), HOOK_ACTIVE, LUA_MASKLINE|LUA_MASKCOUNT, DISPATCH_GL(hookcount), LUA_MASKLINE);
+  dasm_put(Dst, 8053, Dt1(->base), Dt1(->base), GG_DISP2STATIC);
 #if LJ_HASJIT
-  dasm_put(Dst, 8118, Dt7(->pc), PC2PROTO(framesize), Dt1(->base), Dt1(->top), GG_DISP2J, DISPATCH_J(L));
+  dasm_put(Dst, 8119, Dt7(->pc), PC2PROTO(framesize), Dt1(->base), Dt1(->top), GG_DISP2J, DISPATCH_J(L));
 #endif
-  dasm_put(Dst, 8164);
+  dasm_put(Dst, 8165);
 #if LJ_HASJIT
-  dasm_put(Dst, 7996);
+  dasm_put(Dst, 7997);
 #endif
-  dasm_put(Dst, 8171);
+  dasm_put(Dst, 8172);
 #if LJ_HASJIT
-  dasm_put(Dst, 8174);
+  dasm_put(Dst, 8175);
 #endif
-  dasm_put(Dst, 8184, Dt1(->base), Dt1(->top));
+  dasm_put(Dst, 8185, Dt1(->base), Dt1(->top));
 #if LJ_HASJIT
-  dasm_put(Dst, 8218);
+  dasm_put(Dst, 8219);
 #endif
-  dasm_put(Dst, 8223, Dt1(->base), Dt1(->top));
+  dasm_put(Dst, 8224, Dt1(->base), Dt1(->top));
 #if LJ_HASJIT
-  dasm_put(Dst, 8252, DISPATCH_GL(vmstate), DISPATCH_GL(vmstate), ~LJ_VMST_EXIT, DISPATCH_J(exitno), DISPATCH_J(parent), 8*8+16, DISPATCH_GL(jit_L), DISPATCH_GL(jit_base), DISPATCH_J(L), DISPATCH_GL(jit_L), Dt1(->base), GG_DISP2J, Dt1(->cframe), CFRAME_RAWMASK, CFRAME_OFS_L, Dt1(->base), CFRAME_OFS_PC);
+  dasm_put(Dst, 8253, DISPATCH_GL(vmstate), DISPATCH_GL(vmstate), ~LJ_VMST_EXIT, DISPATCH_J(exitno), DISPATCH_J(parent), 8*8+16, DISPATCH_GL(jit_L), DISPATCH_GL(jit_base), DISPATCH_J(L), DISPATCH_GL(jit_L), Dt1(->base), GG_DISP2J, Dt1(->cframe), CFRAME_RAWMASK, CFRAME_OFS_L, Dt1(->base), CFRAME_OFS_PC);
 #endif
-  dasm_put(Dst, 8395);
+  dasm_put(Dst, 8396);
 #if LJ_HASJIT
-  dasm_put(Dst, 8398, Dt7(->pc), PC2PROTO(k), DISPATCH_GL(jit_L), DISPATCH_GL(vmstate), ~LJ_VMST_INTERP, BC_FUNCF);
+  dasm_put(Dst, 8399, Dt7(->pc), PC2PROTO(k), DISPATCH_GL(jit_L), DISPATCH_GL(vmstate), ~LJ_VMST_INTERP, BC_FUNCF);
 #endif
-  dasm_put(Dst, 8476);
+  dasm_put(Dst, 8477);
   if (!sse) {
-  dasm_put(Dst, 8479);
+  dasm_put(Dst, 8480);
   }
-  dasm_put(Dst, 8524);
+  dasm_put(Dst, 8525);
   if (!sse) {
-  dasm_put(Dst, 8626);
+  dasm_put(Dst, 8627);
   }
-  dasm_put(Dst, 8671);
+  dasm_put(Dst, 8672);
   if (!sse) {
-  dasm_put(Dst, 8773);
+  dasm_put(Dst, 8774);
   }
-  dasm_put(Dst, 8812);
+  dasm_put(Dst, 8813);
   if (sse) {
-    dasm_put(Dst, 8917);
+    dasm_put(Dst, 8918);
   } else {
-    dasm_put(Dst, 9047);
+    dasm_put(Dst, 9048);
   }
-  dasm_put(Dst, 9094);
+  dasm_put(Dst, 9095);
   if (!sse) {
-  dasm_put(Dst, 9168);
+  dasm_put(Dst, 9169);
   if (cmov) {
-  dasm_put(Dst, 9179);
+  dasm_put(Dst, 9180);
   } else {
-  dasm_put(Dst, 9183);
+  dasm_put(Dst, 9184);
   }
-  dasm_put(Dst, 9190);
-  dasm_put(Dst, 9264);
-  dasm_put(Dst, 9364);
+  dasm_put(Dst, 9191);
+  dasm_put(Dst, 9265);
+  dasm_put(Dst, 9365);
   if (cmov) {
-  dasm_put(Dst, 9367);
+  dasm_put(Dst, 9368);
   } else {
-  dasm_put(Dst, 9371);
+  dasm_put(Dst, 9372);
   }
-  dasm_put(Dst, 9378);
+  dasm_put(Dst, 9379);
   if (cmov) {
-  dasm_put(Dst, 9179);
+  dasm_put(Dst, 9180);
   } else {
-  dasm_put(Dst, 9183);
+  dasm_put(Dst, 9184);
   }
-  dasm_put(Dst, 9396);
+  dasm_put(Dst, 9397);
   } else {
-    dasm_put(Dst, 9475);
+    dasm_put(Dst, 9476);
   }
-  dasm_put(Dst, 9478);
-  dasm_put(Dst, 9563);
-  dasm_put(Dst, 9694);
-  dasm_put(Dst, 9893);
+  dasm_put(Dst, 9479);
+  dasm_put(Dst, 9564);
+  dasm_put(Dst, 9695);
+  dasm_put(Dst, 9894);
 #if LJ_HASJIT
   if (sse) {
-    dasm_put(Dst, 9916);
-    dasm_put(Dst, 9973);
-    dasm_put(Dst, 10064);
+    dasm_put(Dst, 9917);
+    dasm_put(Dst, 9974);
+    dasm_put(Dst, 10065);
   } else {
-    dasm_put(Dst, 10106);
-    dasm_put(Dst, 10198);
+    dasm_put(Dst, 10107);
+    dasm_put(Dst, 10199);
   }
-  dasm_put(Dst, 10244);
+  dasm_put(Dst, 10245);
 #endif
-  dasm_put(Dst, 10248);
+  dasm_put(Dst, 10249);
   if (sse) {
-    dasm_put(Dst, 10251);
-    dasm_put(Dst, 10356);
-    dasm_put(Dst, 10439);
+    dasm_put(Dst, 10252);
+    dasm_put(Dst, 10357);
+    dasm_put(Dst, 10440);
   } else {
-    dasm_put(Dst, 10511);
-    dasm_put(Dst, 10594);
+    dasm_put(Dst, 10512);
+    dasm_put(Dst, 10595);
     if (cmov) {
-    dasm_put(Dst, 10649);
+    dasm_put(Dst, 10650);
     } else {
-    dasm_put(Dst, 10668);
+    dasm_put(Dst, 10669);
     }
-    dasm_put(Dst, 10244);
+    dasm_put(Dst, 10245);
   }
-  dasm_put(Dst, 10709);
+  dasm_put(Dst, 10710);
 }
 
 /* Generate the code for a single instruction. */
 static void build_ins(BuildCtx *ctx, BCOp op, int defop, int cmov, int sse)
 {
   int vk = 0;
-  dasm_put(Dst, 10763, defop);
+  dasm_put(Dst, 10764, defop);
 
   switch (op) {
 
@@ -1553,611 +1553,611 @@ static void build_ins(BuildCtx *ctx, BCOp op, int defop, int cmov, int sse)
   /* Remember: all ops branch for a true comparison, fall through otherwise. */
 
   case BC_ISLT: case BC_ISGE: case BC_ISLE: case BC_ISGT:
-    dasm_put(Dst, 10765, LJ_TISNUM, LJ_TISNUM);
+    dasm_put(Dst, 10766, LJ_TISNUM, LJ_TISNUM);
     if (sse) {
-      dasm_put(Dst, 10786);
+      dasm_put(Dst, 10787);
     } else {
-      dasm_put(Dst, 10801);
+      dasm_put(Dst, 10802);
       if (cmov) {
-      dasm_put(Dst, 10811);
+      dasm_put(Dst, 10812);
       } else {
-      dasm_put(Dst, 10817);
+      dasm_put(Dst, 10818);
       }
     }
     switch (op) {
     case BC_ISLT:
-      dasm_put(Dst, 10824);
+      dasm_put(Dst, 10825);
       break;
     case BC_ISGE:
-      dasm_put(Dst, 10059);
+      dasm_put(Dst, 10060);
       break;
     case BC_ISLE:
       dasm_put(Dst, 6186);
       break;
     case BC_ISGT:
-      dasm_put(Dst, 10829);
+      dasm_put(Dst, 10830);
       break;
     default: break;  /* Shut up GCC. */
     }
-    dasm_put(Dst, 10834, -BCBIAS_J*4);
+    dasm_put(Dst, 10835, -BCBIAS_J*4);
     break;
 
   case BC_ISEQV: case BC_ISNEV:
     vk = op == BC_ISEQV;
-    dasm_put(Dst, 10867, LJ_TISNUM, LJ_TISNUM);
+    dasm_put(Dst, 10868, LJ_TISNUM, LJ_TISNUM);
     if (sse) {
-      dasm_put(Dst, 10893);
+      dasm_put(Dst, 10894);
     } else {
-      dasm_put(Dst, 10905);
+      dasm_put(Dst, 10906);
       if (cmov) {
-      dasm_put(Dst, 10811);
+      dasm_put(Dst, 10812);
       } else {
-      dasm_put(Dst, 10817);
+      dasm_put(Dst, 10818);
       }
     }
   iseqne_fp:
     if (vk) {
-      dasm_put(Dst, 10912);
+      dasm_put(Dst, 10913);
     } else {
-      dasm_put(Dst, 10921);
+      dasm_put(Dst, 10922);
     }
   iseqne_end:
     if (vk) {
-      dasm_put(Dst, 10930, -BCBIAS_J*4);
+      dasm_put(Dst, 10931, -BCBIAS_J*4);
     } else {
-      dasm_put(Dst, 10945, -BCBIAS_J*4);
+      dasm_put(Dst, 10946, -BCBIAS_J*4);
     }
-    dasm_put(Dst, 10848);
+    dasm_put(Dst, 10849);
     if (op == BC_ISEQV || op == BC_ISNEV) {
-      dasm_put(Dst, 10960, LJ_TISPRI, LJ_TISTABUD, Dt6(->metatable), Dt6(->nomm), 1<<MM_eq);
+      dasm_put(Dst, 10961, LJ_TISPRI, LJ_TISTABUD, Dt6(->metatable), Dt6(->nomm), 1<<MM_eq);
       if (vk) {
-       dasm_put(Dst, 11018);
+       dasm_put(Dst, 11019);
       } else {
-       dasm_put(Dst, 11022);
+       dasm_put(Dst, 11023);
       }
-      dasm_put(Dst, 11028);
+      dasm_put(Dst, 11029);
     }
     break;
   case BC_ISEQS: case BC_ISNES:
     vk = op == BC_ISEQS;
-    dasm_put(Dst, 11033, LJ_TSTR);
+    dasm_put(Dst, 11034, LJ_TSTR);
   iseqne_test:
     if (vk) {
-      dasm_put(Dst, 10916);
+      dasm_put(Dst, 10917);
     } else {
       dasm_put(Dst, 2814);
     }
     goto iseqne_end;
   case BC_ISEQN: case BC_ISNEN:
     vk = op == BC_ISEQN;
-    dasm_put(Dst, 11056, LJ_TISNUM);
+    dasm_put(Dst, 11057, LJ_TISNUM);
     if (sse) {
-      dasm_put(Dst, 11070);
+      dasm_put(Dst, 11071);
     } else {
-      dasm_put(Dst, 11082);
+      dasm_put(Dst, 11083);
       if (cmov) {
-      dasm_put(Dst, 10811);
+      dasm_put(Dst, 10812);
       } else {
-      dasm_put(Dst, 10817);
+      dasm_put(Dst, 10818);
       }
     }
     goto iseqne_fp;
   case BC_ISEQP: case BC_ISNEP:
     vk = op == BC_ISEQP;
-    dasm_put(Dst, 11089);
+    dasm_put(Dst, 11090);
     goto iseqne_test;
 
   /* -- Unary test and copy ops ------------------------------------------- */
 
   case BC_ISTC: case BC_ISFC: case BC_IST: case BC_ISF:
-    dasm_put(Dst, 11100, LJ_TISTRUECOND);
+    dasm_put(Dst, 11101, LJ_TISTRUECOND);
     if (op == BC_IST || op == BC_ISTC) {
-      dasm_put(Dst, 11112);
+      dasm_put(Dst, 11113);
     } else {
-      dasm_put(Dst, 11117);
+      dasm_put(Dst, 11118);
     }
     if (op == BC_ISTC || op == BC_ISFC) {
-      dasm_put(Dst, 11122);
+      dasm_put(Dst, 11123);
     }
-    dasm_put(Dst, 11133, -BCBIAS_J*4);
+    dasm_put(Dst, 11134, -BCBIAS_J*4);
     break;
 
   /* -- Unary ops --------------------------------------------------------- */
 
   case BC_MOV:
-    dasm_put(Dst, 11164);
+    dasm_put(Dst, 11165);
     break;
   case BC_NOT:
-    dasm_put(Dst, 11197, LJ_TISTRUECOND, LJ_TTRUE);
+    dasm_put(Dst, 11198, LJ_TISTRUECOND, LJ_TTRUE);
     break;
   case BC_UNM:
-    dasm_put(Dst, 11232, LJ_TISNUM);
+    dasm_put(Dst, 11233, LJ_TISNUM);
     if (sse) {
-      dasm_put(Dst, 11243);
+      dasm_put(Dst, 11244);
     } else {
-      dasm_put(Dst, 11273);
+      dasm_put(Dst, 11274);
     }
-    dasm_put(Dst, 10848);
+    dasm_put(Dst, 10849);
     break;
   case BC_LEN:
-    dasm_put(Dst, 11282, LJ_TSTR);
+    dasm_put(Dst, 11283, LJ_TSTR);
     if (sse) {
-      dasm_put(Dst, 11296, Dt5(->len));
+      dasm_put(Dst, 11297, Dt5(->len));
     } else {
-      dasm_put(Dst, 11314, Dt5(->len));
+      dasm_put(Dst, 11315, Dt5(->len));
     }
-    dasm_put(Dst, 11323, LJ_TTAB);
+    dasm_put(Dst, 11324, LJ_TTAB);
     if (sse) {
-      dasm_put(Dst, 11363);
+      dasm_put(Dst, 11364);
     } else {
-      dasm_put(Dst, 11372);
+      dasm_put(Dst, 11373);
     }
-    dasm_put(Dst, 11382);
+    dasm_put(Dst, 11383);
     break;
 
   /* -- Binary ops -------------------------------------------------------- */
 
 
   case BC_ADDVN: case BC_ADDNV: case BC_ADDVV:
-    dasm_put(Dst, 11392);
+    dasm_put(Dst, 11393);
     vk = ((int)op - BC_ADDVN) / (BC_ADDNV-BC_ADDVN);
     switch (vk) {
     case 0:
-    dasm_put(Dst, 11400, LJ_TISNUM);
+    dasm_put(Dst, 11401, LJ_TISNUM);
     if (sse) {
-    dasm_put(Dst, 11412);
+    dasm_put(Dst, 11413);
     } else {
-    dasm_put(Dst, 11426);
+    dasm_put(Dst, 11427);
     }
       break;
     case 1:
-    dasm_put(Dst, 11434, LJ_TISNUM);
+    dasm_put(Dst, 11435, LJ_TISNUM);
     if (sse) {
-    dasm_put(Dst, 11446);
+    dasm_put(Dst, 11447);
     } else {
-    dasm_put(Dst, 11460);
+    dasm_put(Dst, 11461);
     }
       break;
     default:
-    dasm_put(Dst, 11468, LJ_TISNUM, LJ_TISNUM);
+    dasm_put(Dst, 11469, LJ_TISNUM, LJ_TISNUM);
     if (sse) {
-    dasm_put(Dst, 11490);
+    dasm_put(Dst, 11491);
     } else {
-    dasm_put(Dst, 11504);
+    dasm_put(Dst, 11505);
     }
       break;
     }
     if (sse) {
-    dasm_put(Dst, 11266);
+    dasm_put(Dst, 11267);
     } else {
-    dasm_put(Dst, 11278);
+    dasm_put(Dst, 11279);
     }
-    dasm_put(Dst, 10848);
+    dasm_put(Dst, 10849);
     break;
   case BC_SUBVN: case BC_SUBNV: case BC_SUBVV:
-    dasm_put(Dst, 11392);
+    dasm_put(Dst, 11393);
     vk = ((int)op - BC_ADDVN) / (BC_ADDNV-BC_ADDVN);
     switch (vk) {
     case 0:
-    dasm_put(Dst, 11400, LJ_TISNUM);
+    dasm_put(Dst, 11401, LJ_TISNUM);
     if (sse) {
-    dasm_put(Dst, 11512);
+    dasm_put(Dst, 11513);
     } else {
-    dasm_put(Dst, 11526);
+    dasm_put(Dst, 11527);
     }
       break;
     case 1:
-    dasm_put(Dst, 11434, LJ_TISNUM);
+    dasm_put(Dst, 11435, LJ_TISNUM);
     if (sse) {
-    dasm_put(Dst, 11534);
+    dasm_put(Dst, 11535);
     } else {
-    dasm_put(Dst, 11548);
+    dasm_put(Dst, 11549);
     }
       break;
     default:
-    dasm_put(Dst, 11468, LJ_TISNUM, LJ_TISNUM);
+    dasm_put(Dst, 11469, LJ_TISNUM, LJ_TISNUM);
     if (sse) {
-    dasm_put(Dst, 11556);
+    dasm_put(Dst, 11557);
     } else {
-    dasm_put(Dst, 11570);
+    dasm_put(Dst, 11571);
     }
       break;
     }
     if (sse) {
-    dasm_put(Dst, 11266);
+    dasm_put(Dst, 11267);
     } else {
-    dasm_put(Dst, 11278);
+    dasm_put(Dst, 11279);
     }
-    dasm_put(Dst, 10848);
+    dasm_put(Dst, 10849);
     break;
   case BC_MULVN: case BC_MULNV: case BC_MULVV:
-    dasm_put(Dst, 11392);
+    dasm_put(Dst, 11393);
     vk = ((int)op - BC_ADDVN) / (BC_ADDNV-BC_ADDVN);
     switch (vk) {
     case 0:
-    dasm_put(Dst, 11400, LJ_TISNUM);
+    dasm_put(Dst, 11401, LJ_TISNUM);
     if (sse) {
-    dasm_put(Dst, 11578);
+    dasm_put(Dst, 11579);
     } else {
-    dasm_put(Dst, 11592);
+    dasm_put(Dst, 11593);
     }
       break;
     case 1:
-    dasm_put(Dst, 11434, LJ_TISNUM);
+    dasm_put(Dst, 11435, LJ_TISNUM);
     if (sse) {
-    dasm_put(Dst, 11600);
+    dasm_put(Dst, 11601);
     } else {
-    dasm_put(Dst, 11614);
+    dasm_put(Dst, 11615);
     }
       break;
     default:
-    dasm_put(Dst, 11468, LJ_TISNUM, LJ_TISNUM);
+    dasm_put(Dst, 11469, LJ_TISNUM, LJ_TISNUM);
     if (sse) {
-    dasm_put(Dst, 11622);
+    dasm_put(Dst, 11623);
     } else {
-    dasm_put(Dst, 11636);
+    dasm_put(Dst, 11637);
     }
       break;
     }
     if (sse) {
-    dasm_put(Dst, 11266);
+    dasm_put(Dst, 11267);
     } else {
-    dasm_put(Dst, 11278);
+    dasm_put(Dst, 11279);
     }
-    dasm_put(Dst, 10848);
+    dasm_put(Dst, 10849);
     break;
   case BC_DIVVN: case BC_DIVNV: case BC_DIVVV:
-    dasm_put(Dst, 11392);
+    dasm_put(Dst, 11393);
     vk = ((int)op - BC_ADDVN) / (BC_ADDNV-BC_ADDVN);
     switch (vk) {
     case 0:
-    dasm_put(Dst, 11400, LJ_TISNUM);
+    dasm_put(Dst, 11401, LJ_TISNUM);
     if (sse) {
-    dasm_put(Dst, 11644);
+    dasm_put(Dst, 11645);
     } else {
-    dasm_put(Dst, 11658);
+    dasm_put(Dst, 11659);
     }
       break;
     case 1:
-    dasm_put(Dst, 11434, LJ_TISNUM);
+    dasm_put(Dst, 11435, LJ_TISNUM);
     if (sse) {
-    dasm_put(Dst, 11666);
+    dasm_put(Dst, 11667);
     } else {
-    dasm_put(Dst, 11680);
+    dasm_put(Dst, 11681);
     }
       break;
     default:
-    dasm_put(Dst, 11468, LJ_TISNUM, LJ_TISNUM);
+    dasm_put(Dst, 11469, LJ_TISNUM, LJ_TISNUM);
     if (sse) {
-    dasm_put(Dst, 11688);
+    dasm_put(Dst, 11689);
     } else {
-    dasm_put(Dst, 11702);
+    dasm_put(Dst, 11703);
     }
       break;
     }
     if (sse) {
-    dasm_put(Dst, 11266);
+    dasm_put(Dst, 11267);
     } else {
-    dasm_put(Dst, 11278);
+    dasm_put(Dst, 11279);
     }
-    dasm_put(Dst, 10848);
+    dasm_put(Dst, 10849);
     break;
   case BC_MODVN:
-    dasm_put(Dst, 11392);
+    dasm_put(Dst, 11393);
     vk = ((int)op - BC_ADDVN) / (BC_ADDNV-BC_ADDVN);
     switch (vk) {
     case 0:
-    dasm_put(Dst, 11400, LJ_TISNUM);
+    dasm_put(Dst, 11401, LJ_TISNUM);
     if (sse) {
-    dasm_put(Dst, 11710);
+    dasm_put(Dst, 11711);
     } else {
-    dasm_put(Dst, 11724);
+    dasm_put(Dst, 11725);
     }
       break;
     case 1:
-    dasm_put(Dst, 11434, LJ_TISNUM);
+    dasm_put(Dst, 11435, LJ_TISNUM);
     if (sse) {
-    dasm_put(Dst, 11732);
+    dasm_put(Dst, 11733);
     } else {
-    dasm_put(Dst, 11746);
+    dasm_put(Dst, 11747);
     }
       break;
     default:
-    dasm_put(Dst, 11468, LJ_TISNUM, LJ_TISNUM);
+    dasm_put(Dst, 11469, LJ_TISNUM, LJ_TISNUM);
     if (sse) {
-    dasm_put(Dst, 11754);
+    dasm_put(Dst, 11755);
     } else {
-    dasm_put(Dst, 11768);
+    dasm_put(Dst, 11769);
     }
       break;
     }
-    dasm_put(Dst, 11776);
+    dasm_put(Dst, 11777);
     if (sse) {
-    dasm_put(Dst, 11266);
+    dasm_put(Dst, 11267);
     } else {
-    dasm_put(Dst, 11278);
+    dasm_put(Dst, 11279);
     }
-    dasm_put(Dst, 10848);
+    dasm_put(Dst, 10849);
     break;
   case BC_MODNV: case BC_MODVV:
-    dasm_put(Dst, 11392);
+    dasm_put(Dst, 11393);
     vk = ((int)op - BC_ADDVN) / (BC_ADDNV-BC_ADDVN);
     switch (vk) {
     case 0:
-    dasm_put(Dst, 11400, LJ_TISNUM);
+    dasm_put(Dst, 11401, LJ_TISNUM);
     if (sse) {
-    dasm_put(Dst, 11710);
+    dasm_put(Dst, 11711);
     } else {
-    dasm_put(Dst, 11724);
+    dasm_put(Dst, 11725);
     }
       break;
     case 1:
-    dasm_put(Dst, 11434, LJ_TISNUM);
+    dasm_put(Dst, 11435, LJ_TISNUM);
     if (sse) {
-    dasm_put(Dst, 11732);
+    dasm_put(Dst, 11733);
     } else {
-    dasm_put(Dst, 11746);
+    dasm_put(Dst, 11747);
     }
       break;
     default:
-    dasm_put(Dst, 11468, LJ_TISNUM, LJ_TISNUM);
+    dasm_put(Dst, 11469, LJ_TISNUM, LJ_TISNUM);
     if (sse) {
-    dasm_put(Dst, 11754);
+    dasm_put(Dst, 11755);
     } else {
-    dasm_put(Dst, 11768);
+    dasm_put(Dst, 11769);
     }
       break;
     }
-    dasm_put(Dst, 11782);
+    dasm_put(Dst, 11783);
     break;
   case BC_POW:
-    dasm_put(Dst, 11392);
+    dasm_put(Dst, 11393);
     vk = ((int)op - BC_ADDVN) / (BC_ADDNV-BC_ADDVN);
     switch (vk) {
     case 0:
-    dasm_put(Dst, 11400, LJ_TISNUM);
+    dasm_put(Dst, 11401, LJ_TISNUM);
     if (sse) {
-    dasm_put(Dst, 11710);
+    dasm_put(Dst, 11711);
     } else {
-    dasm_put(Dst, 11724);
+    dasm_put(Dst, 11725);
     }
       break;
     case 1:
-    dasm_put(Dst, 11434, LJ_TISNUM);
+    dasm_put(Dst, 11435, LJ_TISNUM);
     if (sse) {
-    dasm_put(Dst, 11732);
+    dasm_put(Dst, 11733);
     } else {
-    dasm_put(Dst, 11746);
+    dasm_put(Dst, 11747);
     }
       break;
     default:
-    dasm_put(Dst, 11468, LJ_TISNUM, LJ_TISNUM);
+    dasm_put(Dst, 11469, LJ_TISNUM, LJ_TISNUM);
     if (sse) {
-    dasm_put(Dst, 11754);
+    dasm_put(Dst, 11755);
     } else {
-    dasm_put(Dst, 11768);
+    dasm_put(Dst, 11769);
     }
       break;
     }
-    dasm_put(Dst, 11787);
+    dasm_put(Dst, 11788);
     if (sse) {
-    dasm_put(Dst, 11266);
+    dasm_put(Dst, 11267);
     } else {
-    dasm_put(Dst, 11278);
+    dasm_put(Dst, 11279);
     }
-    dasm_put(Dst, 10848);
+    dasm_put(Dst, 10849);
     break;
 
   case BC_CAT:
-    dasm_put(Dst, 11791, Dt1(->base), Dt1(->base));
+    dasm_put(Dst, 11792, Dt1(->base), Dt1(->base));
     break;
 
   /* -- Constant ops ------------------------------------------------------ */
 
   case BC_KSTR:
-    dasm_put(Dst, 11885, LJ_TSTR);
+    dasm_put(Dst, 11886, LJ_TSTR);
     break;
   case BC_KSHORT:
     if (sse) {
-      dasm_put(Dst, 11918);
+      dasm_put(Dst, 11919);
     } else {
-      dasm_put(Dst, 11933);
+      dasm_put(Dst, 11934);
     }
-    dasm_put(Dst, 10848);
+    dasm_put(Dst, 10849);
     break;
   case BC_KNUM:
     if (sse) {
-      dasm_put(Dst, 11941);
+      dasm_put(Dst, 11942);
     } else {
-      dasm_put(Dst, 11954);
+      dasm_put(Dst, 11955);
     }
-    dasm_put(Dst, 10848);
+    dasm_put(Dst, 10849);
     break;
   case BC_KPRI:
-    dasm_put(Dst, 11961);
+    dasm_put(Dst, 11962);
     break;
   case BC_KNIL:
-    dasm_put(Dst, 11987, LJ_TNIL);
+    dasm_put(Dst, 11988, LJ_TNIL);
     break;
 
   /* -- Upvalue and function ops ------------------------------------------ */
 
   case BC_UGET:
-    dasm_put(Dst, 12033, offsetof(GCfuncL, uvptr), DtA(->v));
+    dasm_put(Dst, 12034, offsetof(GCfuncL, uvptr), DtA(->v));
     break;
   case BC_USETV:
 #define TV2MARKOFS \
  ((int32_t)offsetof(GCupval, marked)-(int32_t)offsetof(GCupval, tv))
-    dasm_put(Dst, 12077, offsetof(GCfuncL, uvptr), DtA(->closed), DtA(->v), TV2MARKOFS, LJ_GC_BLACK, LJ_TISGCV, LJ_TISNUM - LJ_TISGCV, Dt4(->gch.marked), LJ_GC_WHITES, GG_DISP2G);
-    dasm_put(Dst, 12167);
+    dasm_put(Dst, 12078, offsetof(GCfuncL, uvptr), DtA(->closed), DtA(->v), TV2MARKOFS, LJ_GC_BLACK, LJ_TISGCV, LJ_TISNUM - LJ_TISGCV, Dt4(->gch.marked), LJ_GC_WHITES, GG_DISP2G);
+    dasm_put(Dst, 12168);
     break;
 #undef TV2MARKOFS
   case BC_USETS:
-    dasm_put(Dst, 12179, offsetof(GCfuncL, uvptr), DtA(->v), LJ_TSTR, DtA(->marked), LJ_GC_BLACK, Dt4(->gch.marked), LJ_GC_WHITES, DtA(->closed), GG_DISP2G);
+    dasm_put(Dst, 12180, offsetof(GCfuncL, uvptr), DtA(->v), LJ_TSTR, DtA(->marked), LJ_GC_BLACK, Dt4(->gch.marked), LJ_GC_WHITES, DtA(->closed), GG_DISP2G);
     break;
   case BC_USETN:
-    dasm_put(Dst, 12270);
+    dasm_put(Dst, 12271);
     if (sse) {
-      dasm_put(Dst, 12275);
+      dasm_put(Dst, 12276);
     } else {
-      dasm_put(Dst, 11085);
+      dasm_put(Dst, 11086);
     }
-    dasm_put(Dst, 12282, offsetof(GCfuncL, uvptr), DtA(->v));
+    dasm_put(Dst, 12283, offsetof(GCfuncL, uvptr), DtA(->v));
     if (sse) {
-      dasm_put(Dst, 12291);
+      dasm_put(Dst, 12292);
     } else {
-      dasm_put(Dst, 12297);
+      dasm_put(Dst, 12298);
     }
-    dasm_put(Dst, 10848);
+    dasm_put(Dst, 10849);
     break;
   case BC_USETP:
-    dasm_put(Dst, 12300, offsetof(GCfuncL, uvptr), DtA(->v));
+    dasm_put(Dst, 12301, offsetof(GCfuncL, uvptr), DtA(->v));
     break;
   case BC_UCLO:
-    dasm_put(Dst, 12337, -BCBIAS_J*4, Dt1(->openupval), Dt1(->base), Dt1(->base));
+    dasm_put(Dst, 12338, -BCBIAS_J*4, Dt1(->openupval), Dt1(->base), Dt1(->base));
     break;
 
   case BC_FNEW:
-    dasm_put(Dst, 12391, Dt1(->base), Dt1(->base), LJ_TFUNC);
+    dasm_put(Dst, 12392, Dt1(->base), Dt1(->base), LJ_TFUNC);
     break;
 
   /* -- Table ops --------------------------------------------------------- */
 
   case BC_TNEW:
-    dasm_put(Dst, 12462, Dt1(->base), DISPATCH_GL(gc.total), DISPATCH_GL(gc.threshold), Dt1(->base), LJ_TTAB);
+    dasm_put(Dst, 12463, Dt1(->base), DISPATCH_GL(gc.total), DISPATCH_GL(gc.threshold), Dt1(->base), LJ_TTAB);
     break;
   case BC_TDUP:
-    dasm_put(Dst, 12588, DISPATCH_GL(gc.total), DISPATCH_GL(gc.threshold), Dt1(->base), Dt1(->base), LJ_TTAB);
+    dasm_put(Dst, 12589, DISPATCH_GL(gc.total), DISPATCH_GL(gc.threshold), Dt1(->base), Dt1(->base), LJ_TTAB);
     break;
 
   case BC_GGET:
-    dasm_put(Dst, 12680, Dt7(->env));
+    dasm_put(Dst, 12681, Dt7(->env));
     break;
   case BC_GSET:
-    dasm_put(Dst, 12698, Dt7(->env));
+    dasm_put(Dst, 12699, Dt7(->env));
     break;
 
   case BC_TGETV:
-    dasm_put(Dst, 12716, LJ_TTAB, LJ_TISNUM);
+    dasm_put(Dst, 12717, LJ_TTAB, LJ_TISNUM);
     if (sse) {
-      dasm_put(Dst, 12749);
+      dasm_put(Dst, 12750);
     } else {
-      dasm_put(Dst, 12770);
+      dasm_put(Dst, 12771);
       if (cmov) {
-      dasm_put(Dst, 10811);
+      dasm_put(Dst, 10812);
       } else {
-      dasm_put(Dst, 10817);
+      dasm_put(Dst, 10818);
       }
       dasm_put(Dst, 2527);
     }
-    dasm_put(Dst, 12780, Dt6(->asize), Dt6(->array), LJ_TNIL, Dt6(->metatable), Dt6(->metatable), Dt6(->nomm), 1<<MM_index);
-    dasm_put(Dst, 12872, LJ_TSTR);
+    dasm_put(Dst, 12781, Dt6(->asize), Dt6(->array), LJ_TNIL, Dt6(->metatable), Dt6(->metatable), Dt6(->nomm), 1<<MM_index);
+    dasm_put(Dst, 12873, LJ_TSTR);
     break;
   case BC_TGETS:
-    dasm_put(Dst, 12890, LJ_TTAB, Dt6(->hmask), Dt5(->hash), sizeof(Node), Dt6(->node), DtB(->key.it), LJ_TSTR, DtB(->key.gcr), LJ_TNIL);
-    dasm_put(Dst, 12974, LJ_TNIL, DtB(->next), Dt6(->metatable), Dt6(->nomm), 1<<MM_index);
+    dasm_put(Dst, 12891, LJ_TTAB, Dt6(->hmask), Dt5(->hash), sizeof(Node), Dt6(->node), DtB(->key.it), LJ_TSTR, DtB(->key.gcr), LJ_TNIL);
+    dasm_put(Dst, 12975, LJ_TNIL, DtB(->next), Dt6(->metatable), Dt6(->nomm), 1<<MM_index);
     break;
   case BC_TGETB:
-    dasm_put(Dst, 13045, LJ_TTAB, Dt6(->asize), Dt6(->array), LJ_TNIL, Dt6(->metatable), Dt6(->metatable), Dt6(->nomm), 1<<MM_index);
-    dasm_put(Dst, 11382);
+    dasm_put(Dst, 13046, LJ_TTAB, Dt6(->asize), Dt6(->array), LJ_TNIL, Dt6(->metatable), Dt6(->metatable), Dt6(->nomm), 1<<MM_index);
+    dasm_put(Dst, 11383);
     break;
 
   case BC_TSETV:
-    dasm_put(Dst, 13144, LJ_TTAB, LJ_TISNUM);
+    dasm_put(Dst, 13145, LJ_TTAB, LJ_TISNUM);
     if (sse) {
-      dasm_put(Dst, 12749);
+      dasm_put(Dst, 12750);
     } else {
-      dasm_put(Dst, 12770);
+      dasm_put(Dst, 12771);
       if (cmov) {
-      dasm_put(Dst, 10811);
+      dasm_put(Dst, 10812);
       } else {
-      dasm_put(Dst, 10817);
+      dasm_put(Dst, 10818);
       }
       dasm_put(Dst, 2527);
     }
-    dasm_put(Dst, 13177, Dt6(->asize), Dt6(->array), LJ_TNIL, Dt6(->marked), LJ_GC_BLACK, Dt6(->metatable), Dt6(->metatable));
-    dasm_put(Dst, 13260, Dt6(->nomm), 1<<MM_newindex, LJ_TSTR, Dt6(->marked), cast_byte(~LJ_GC_BLACK), DISPATCH_GL(gc.grayagain), DISPATCH_GL(gc.grayagain), Dt6(->gclist));
+    dasm_put(Dst, 13178, Dt6(->asize), Dt6(->array), LJ_TNIL, Dt6(->marked), LJ_GC_BLACK, Dt6(->metatable), Dt6(->metatable));
+    dasm_put(Dst, 13261, Dt6(->nomm), 1<<MM_newindex, LJ_TSTR, Dt6(->marked), cast_byte(~LJ_GC_BLACK), DISPATCH_GL(gc.grayagain), DISPATCH_GL(gc.grayagain), Dt6(->gclist));
     break;
   case BC_TSETS:
-    dasm_put(Dst, 13322, LJ_TTAB, Dt6(->hmask), Dt5(->hash), sizeof(Node), Dt6(->nomm), Dt6(->node), DtB(->key.it), LJ_TSTR, DtB(->key.gcr), LJ_TNIL);
-    dasm_put(Dst, 13397, Dt6(->marked), LJ_GC_BLACK, Dt6(->metatable), Dt6(->metatable), Dt6(->nomm), 1<<MM_newindex, DtB(->next));
-    dasm_put(Dst, 13489, Dt6(->metatable), Dt6(->nomm), 1<<MM_newindex, LJ_TSTR, Dt1(->base), Dt1(->base), Dt6(->marked), cast_byte(~LJ_GC_BLACK), DISPATCH_GL(gc.grayagain), DISPATCH_GL(gc.grayagain), Dt6(->gclist));
+    dasm_put(Dst, 13323, LJ_TTAB, Dt6(->hmask), Dt5(->hash), sizeof(Node), Dt6(->nomm), Dt6(->node), DtB(->key.it), LJ_TSTR, DtB(->key.gcr), LJ_TNIL);
+    dasm_put(Dst, 13398, Dt6(->marked), LJ_GC_BLACK, Dt6(->metatable), Dt6(->metatable), Dt6(->nomm), 1<<MM_newindex, DtB(->next));
+    dasm_put(Dst, 13490, Dt6(->metatable), Dt6(->nomm), 1<<MM_newindex, LJ_TSTR, Dt1(->base), Dt1(->base), Dt6(->marked), cast_byte(~LJ_GC_BLACK), DISPATCH_GL(gc.grayagain), DISPATCH_GL(gc.grayagain), Dt6(->gclist));
     break;
   case BC_TSETB:
-    dasm_put(Dst, 13585, LJ_TTAB, Dt6(->asize), Dt6(->array), LJ_TNIL, Dt6(->marked), LJ_GC_BLACK, Dt6(->metatable));
-    dasm_put(Dst, 13683, Dt6(->metatable), Dt6(->nomm), 1<<MM_newindex, Dt6(->marked), cast_byte(~LJ_GC_BLACK), DISPATCH_GL(gc.grayagain), DISPATCH_GL(gc.grayagain), Dt6(->gclist));
+    dasm_put(Dst, 13586, LJ_TTAB, Dt6(->asize), Dt6(->array), LJ_TNIL, Dt6(->marked), LJ_GC_BLACK, Dt6(->metatable));
+    dasm_put(Dst, 13684, Dt6(->metatable), Dt6(->nomm), 1<<MM_newindex, Dt6(->marked), cast_byte(~LJ_GC_BLACK), DISPATCH_GL(gc.grayagain), DISPATCH_GL(gc.grayagain), Dt6(->gclist));
     break;
 
   case BC_TSETM:
-    dasm_put(Dst, 13729);
+    dasm_put(Dst, 13730);
     if (sse) {
-      dasm_put(Dst, 13734);
+      dasm_put(Dst, 13735);
     } else {
-      dasm_put(Dst, 13741);
+      dasm_put(Dst, 13742);
     }
-    dasm_put(Dst, 13753, Dt6(->marked), LJ_GC_BLACK, Dt6(->asize), Dt6(->array), Dt1(->base), Dt1(->base));
-    dasm_put(Dst, 13895, Dt6(->marked), cast_byte(~LJ_GC_BLACK), DISPATCH_GL(gc.grayagain), DISPATCH_GL(gc.grayagain), Dt6(->gclist));
+    dasm_put(Dst, 13754, Dt6(->marked), LJ_GC_BLACK, Dt6(->asize), Dt6(->array), Dt1(->base), Dt1(->base));
+    dasm_put(Dst, 13896, Dt6(->marked), cast_byte(~LJ_GC_BLACK), DISPATCH_GL(gc.grayagain), DISPATCH_GL(gc.grayagain), Dt6(->gclist));
     break;
 
   /* -- Calls and vararg handling ----------------------------------------- */
 
   case BC_CALL: case BC_CALLM:
-    dasm_put(Dst, 11396);
+    dasm_put(Dst, 11397);
     if (op == BC_CALLM) {
-      dasm_put(Dst, 13913);
+      dasm_put(Dst, 13914);
     }
-    dasm_put(Dst, 13918, LJ_TFUNC, Dt7(->pc));
+    dasm_put(Dst, 13919, LJ_TFUNC, Dt7(->pc));
     break;
 
   case BC_CALLMT:
-    dasm_put(Dst, 13913);
+    dasm_put(Dst, 13914);
     break;
   case BC_CALLT:
-    dasm_put(Dst, 13959, LJ_TFUNC, FRAME_TYPE, Dt7(->ffid), Dt7(->pc));
-    dasm_put(Dst, 14077, FRAME_TYPE, Dt7(->pc), PC2PROTO(k), FRAME_VARG, FRAME_TYPEP, FRAME_VARG);
+    dasm_put(Dst, 13960, LJ_TFUNC, FRAME_TYPE, Dt7(->ffid), Dt7(->pc));
+    dasm_put(Dst, 14078, FRAME_TYPE, Dt7(->pc), PC2PROTO(k), FRAME_VARG, FRAME_TYPEP, FRAME_VARG);
     break;
 
   case BC_ITERC:
-    dasm_put(Dst, 14147, LJ_TFUNC, 2+1, Dt7(->pc));
+    dasm_put(Dst, 14148, LJ_TFUNC, 2+1, Dt7(->pc));
     break;
 
   case BC_VARG:
-    dasm_put(Dst, 14227, Dt7(->pc), PC2PROTO(numparams), (8+FRAME_VARG), LJ_TNIL);
-    dasm_put(Dst, 14371, Dt1(->maxstack), Dt1(->base), Dt1(->top), Dt1(->base), Dt1(->top));
+    dasm_put(Dst, 14228, Dt7(->pc), PC2PROTO(numparams), (8+FRAME_VARG), LJ_TNIL);
+    dasm_put(Dst, 14372, Dt1(->maxstack), Dt1(->base), Dt1(->top), Dt1(->base), Dt1(->top));
     break;
 
   /* -- Returns ----------------------------------------------------------- */
 
   case BC_RETM:
-    dasm_put(Dst, 13913);
+    dasm_put(Dst, 13914);
     break;
 
   case BC_RET: case BC_RET0: case BC_RET1:
     if (op != BC_RET0) {
-      dasm_put(Dst, 14470);
+      dasm_put(Dst, 14471);
     }
-    dasm_put(Dst, 14474, FRAME_TYPE);
+    dasm_put(Dst, 14475, FRAME_TYPE);
     switch (op) {
     case BC_RET:
-      dasm_put(Dst, 14493);
+      dasm_put(Dst, 14494);
       break;
     case BC_RET1:
-      dasm_put(Dst, 14551);
+      dasm_put(Dst, 14552);
       /* fallthrough */
     case BC_RET0:
-      dasm_put(Dst, 14567);
+      dasm_put(Dst, 14568);
     default:
       break;
     }
-    dasm_put(Dst, 14578, Dt7(->pc), PC2PROTO(k));
+    dasm_put(Dst, 14579, Dt7(->pc), PC2PROTO(k));
     if (op == BC_RET) {
-      dasm_put(Dst, 14620, LJ_TNIL);
+      dasm_put(Dst, 14621, LJ_TNIL);
     } else {
-      dasm_put(Dst, 14629, LJ_TNIL);
+      dasm_put(Dst, 14630, LJ_TNIL);
     }
-    dasm_put(Dst, 14636, -FRAME_VARG, FRAME_TYPEP);
+    dasm_put(Dst, 14637, -FRAME_VARG, FRAME_TYPEP);
     if (op != BC_RET0) {
-      dasm_put(Dst, 14660);
+      dasm_put(Dst, 14661);
     }
     dasm_put(Dst, 4683);
     break;
@@ -2167,7 +2167,7 @@ static void build_ins(BuildCtx *ctx, BCOp op, int defop, int cmov, int sse)
 
   case BC_FORL:
 #if LJ_HASJIT
-    dasm_put(Dst, 14664, HOTCOUNT_PCMASK, GG_DISP2HOT);
+    dasm_put(Dst, 14665, HOTCOUNT_PCMASK, GG_DISP2HOT);
 #endif
     break;
 
@@ -2179,57 +2179,57 @@ static void build_ins(BuildCtx *ctx, BCOp op, int defop, int cmov, int sse)
   case BC_FORI:
   case BC_IFORL:
     vk = (op == BC_IFORL || op == BC_JFORL);
-    dasm_put(Dst, 14685);
+    dasm_put(Dst, 14686);
     if (!vk) {
-      dasm_put(Dst, 14689, LJ_TISNUM, LJ_TISNUM);
+      dasm_put(Dst, 14690, LJ_TISNUM, LJ_TISNUM);
     }
-    dasm_put(Dst, 14708);
+    dasm_put(Dst, 14709);
     if (!vk) {
-      dasm_put(Dst, 14712, LJ_TISNUM);
+      dasm_put(Dst, 14713, LJ_TISNUM);
     }
     if (sse) {
-      dasm_put(Dst, 14721);
+      dasm_put(Dst, 14722);
       if (vk) {
-       dasm_put(Dst, 14733);
+       dasm_put(Dst, 14734);
       } else {
-       dasm_put(Dst, 14752);
+       dasm_put(Dst, 14753);
       }
-      dasm_put(Dst, 14757);
+      dasm_put(Dst, 14758);
     } else {
-      dasm_put(Dst, 14770);
+      dasm_put(Dst, 14771);
       if (vk) {
-       dasm_put(Dst, 14776);
+       dasm_put(Dst, 14777);
       } else {
-       dasm_put(Dst, 14792);
+       dasm_put(Dst, 14793);
       }
-      dasm_put(Dst, 14800);
+      dasm_put(Dst, 14801);
       if (cmov) {
-      dasm_put(Dst, 10811);
+      dasm_put(Dst, 10812);
       } else {
-      dasm_put(Dst, 10817);
+      dasm_put(Dst, 10818);
       }
       if (!cmov) {
-       dasm_put(Dst, 14805);
+       dasm_put(Dst, 14806);
       }
     }
     if (op == BC_FORI) {
-      dasm_put(Dst, 14811, -BCBIAS_J*4);
+      dasm_put(Dst, 14812, -BCBIAS_J*4);
     } else if (op == BC_JFORI) {
-      dasm_put(Dst, 14821, -BCBIAS_J*4, BC_JLOOP);
+      dasm_put(Dst, 14822, -BCBIAS_J*4, BC_JLOOP);
     } else if (op == BC_IFORL) {
-      dasm_put(Dst, 14835, -BCBIAS_J*4);
+      dasm_put(Dst, 14836, -BCBIAS_J*4);
     } else {
-      dasm_put(Dst, 14831, BC_JLOOP);
+      dasm_put(Dst, 14832, BC_JLOOP);
     }
-    dasm_put(Dst, 10846);
+    dasm_put(Dst, 10847);
     if (sse) {
-      dasm_put(Dst, 14845);
+      dasm_put(Dst, 14846);
     }
     break;
 
   case BC_ITERL:
 #if LJ_HASJIT
-    dasm_put(Dst, 14664, HOTCOUNT_PCMASK, GG_DISP2HOT);
+    dasm_put(Dst, 14665, HOTCOUNT_PCMASK, GG_DISP2HOT);
 #endif
     break;
 
@@ -2238,33 +2238,33 @@ static void build_ins(BuildCtx *ctx, BCOp op, int defop, int cmov, int sse)
     break;
 #endif
   case BC_IITERL:
-    dasm_put(Dst, 14856, LJ_TNIL);
+    dasm_put(Dst, 14857, LJ_TNIL);
     if (op == BC_JITERL) {
-      dasm_put(Dst, 14871, BC_JLOOP);
+      dasm_put(Dst, 14872, BC_JLOOP);
     } else {
-      dasm_put(Dst, 14885, -BCBIAS_J*4);
+      dasm_put(Dst, 14886, -BCBIAS_J*4);
     }
-    dasm_put(Dst, 11143);
+    dasm_put(Dst, 11144);
     break;
 
   case BC_LOOP:
 #if LJ_HASJIT
-    dasm_put(Dst, 14664, HOTCOUNT_PCMASK, GG_DISP2HOT);
+    dasm_put(Dst, 14665, HOTCOUNT_PCMASK, GG_DISP2HOT);
 #endif
     break;
 
   case BC_ILOOP:
-    dasm_put(Dst, 10848);
+    dasm_put(Dst, 10849);
     break;
 
   case BC_JLOOP:
 #if LJ_HASJIT
-    dasm_put(Dst, 14901, DISPATCH_J(trace), DtD(->mcode), DISPATCH_GL(jit_base), DISPATCH_GL(jit_L));
+    dasm_put(Dst, 14902, DISPATCH_J(trace), DtD(->mcode), DISPATCH_GL(jit_base), DISPATCH_GL(jit_L));
 #endif
     break;
 
   case BC_JMP:
-    dasm_put(Dst, 14924, -BCBIAS_J*4);
+    dasm_put(Dst, 14925, -BCBIAS_J*4);
     break;
 
   /* -- Function headers -------------------------------------------------- */
@@ -2278,7 +2278,7 @@ static void build_ins(BuildCtx *ctx, BCOp op, int defop, int cmov, int sse)
 
   case BC_FUNCF:
 #if LJ_HASJIT
-    dasm_put(Dst, 14948, HOTCOUNT_PCMASK, GG_DISP2HOT);
+    dasm_put(Dst, 14949, HOTCOUNT_PCMASK, GG_DISP2HOT);
 #endif
   case BC_FUNCV:  /* NYI: compiled vararg functions. */
     break;
@@ -2288,47 +2288,47 @@ static void build_ins(BuildCtx *ctx, BCOp op, int defop, int cmov, int sse)
     break;
 #endif
   case BC_IFUNCF:
-    dasm_put(Dst, 14969, -4+PC2PROTO(k), Dt1(->maxstack), -4+PC2PROTO(numparams));
+    dasm_put(Dst, 14970, -4+PC2PROTO(k), Dt1(->maxstack), -4+PC2PROTO(numparams));
     if (op == BC_JFUNCF) {
-      dasm_put(Dst, 14999, BC_JLOOP);
+      dasm_put(Dst, 15000, BC_JLOOP);
     } else {
-      dasm_put(Dst, 10848);
+      dasm_put(Dst, 10849);
     }
-    dasm_put(Dst, 15008, LJ_TNIL);
+    dasm_put(Dst, 15009, LJ_TNIL);
     break;
 
   case BC_JFUNCV:
 #if !LJ_HASJIT
     break;
 #endif
-    dasm_put(Dst, 10246);
+    dasm_put(Dst, 10247);
     break;  /* NYI: compiled vararg functions. */
 
   case BC_IFUNCV:
-    dasm_put(Dst, 15030, FRAME_VARG, Dt1(->maxstack), -4+PC2PROTO(numparams), LJ_TNIL);
+    dasm_put(Dst, 15031, FRAME_VARG, Dt1(->maxstack), -4+PC2PROTO(numparams), LJ_TNIL);
     if (op == BC_JFUNCV) {
-      dasm_put(Dst, 14999, BC_JLOOP);
+      dasm_put(Dst, 15000, BC_JLOOP);
     } else {
-      dasm_put(Dst, 15121, -4+PC2PROTO(k));
+      dasm_put(Dst, 15122, -4+PC2PROTO(k));
     }
-    dasm_put(Dst, 15143, LJ_TNIL);
+    dasm_put(Dst, 15144, LJ_TNIL);
     break;
 
   case BC_FUNCC:
   case BC_FUNCCW:
-    dasm_put(Dst, 15165, Dt8(->f), Dt1(->base), 8*LUA_MINSTACK, Dt1(->maxstack), Dt1(->top));
+    dasm_put(Dst, 15166, Dt8(->f), Dt1(->base), 8*LUA_MINSTACK, Dt1(->maxstack), Dt1(->top));
     if (op == BC_FUNCC) {
-      dasm_put(Dst, 15194);
+      dasm_put(Dst, 15195);
     } else {
-      dasm_put(Dst, 15198);
+      dasm_put(Dst, 15199);
     }
-    dasm_put(Dst, 15206, DISPATCH_GL(vmstate), ~LJ_VMST_C);
+    dasm_put(Dst, 15207, DISPATCH_GL(vmstate), ~LJ_VMST_C);
     if (op == BC_FUNCC) {
-      dasm_put(Dst, 15215);
+      dasm_put(Dst, 15216);
     } else {
-      dasm_put(Dst, 15219, DISPATCH_GL(wrapf));
+      dasm_put(Dst, 15220, DISPATCH_GL(wrapf));
     }
-    dasm_put(Dst, 15224, DISPATCH_GL(vmstate), ~LJ_VMST_INTERP, Dt1(->base), Dt1(->top));
+    dasm_put(Dst, 15225, DISPATCH_GL(vmstate), ~LJ_VMST_INTERP, Dt1(->base), Dt1(->top));
     break;
 
   /* ---------------------------------------------------------------------- */
@@ -2356,7 +2356,7 @@ static int build_backend(BuildCtx *ctx)
 
   build_subroutines(ctx, cmov, sse);
 
-  dasm_put(Dst, 15249);
+  dasm_put(Dst, 15250);
   for (op = 0; op < BC__MAX; op++)
     build_ins(ctx, (BCOp)op, op, cmov, sse);
 
index c8ac5f86d93083c18769511caa4254b33a328793..9127b0d541d6bf3760843d5b3c61ff07d2029903 100644 (file)
@@ -218,7 +218,7 @@ LJLIB_ASM(tostring)         LJLIB_REC(.)
   L->top = o+1;  /* Only keep one argument. */
   if (!tvisnil(mo = lj_meta_lookup(L, o, MM_tostring))) {
     copyTV(L, L->base-1, mo);  /* Replace callable. */
-    return FFH_RETRY;
+    return FFH_TAILCALL;
   } else {
     GCstr *s;
     if (tvisnum(o)) {
index fd2b025ce2c0846aa3143481bfecaac5d42899a8..814c9739af427d9b383bab5bb41546cfd3ac1094 100644 (file)
@@ -28,6 +28,7 @@
 #define FFH_RETRY      0
 #define FFH_UNREACHABLE        FFH_RETRY
 #define FFH_RES(n)     ((n)+1)
+#define FFH_TAILCALL   (-1)
 
 LJ_FUNC TValue *lj_lib_checkany(lua_State *L, int narg);
 LJ_FUNC GCstr *lj_lib_checkstr(lua_State *L, int narg);