From 87a6c8a980edf4bd8ba6b2126269400a925b4d05 Mon Sep 17 00:00:00 2001 From: Mike Pall Date: Mon, 10 Jan 2011 20:50:34 +0100 Subject: [PATCH] FFI: Auto-detect __stdcall and fix up C function declarations. --- src/Makefile.dep | 3 +- src/buildvm_x64.h | 644 ++++++++++++++------------- src/buildvm_x64win.h | 1014 +++++++++++++++++++++--------------------- src/buildvm_x86.dasc | 6 + src/buildvm_x86.h | 847 ++++++++++++++++++----------------- src/lj_ccall.c | 10 +- src/lj_ctype.h | 1 + 7 files changed, 1281 insertions(+), 1244 deletions(-) diff --git a/src/Makefile.dep b/src/Makefile.dep index ba31804c..8cebc39d 100644 --- a/src/Makefile.dep +++ b/src/Makefile.dep @@ -58,7 +58,8 @@ lj_bc.o: lj_bc.c lj_obj.h lua.h luaconf.h lj_def.h lj_arch.h lj_bc.h \ lj_bcdef.h lj_ccall.o: lj_ccall.c lj_obj.h lua.h luaconf.h lj_def.h lj_arch.h \ lj_gc.h lj_err.h lj_errmsg.h lj_str.h lj_ctype.h lj_cconv.h lj_cdata.h \ - lj_ccall.h + lj_ccall.h lj_trace.h lj_jit.h lj_ir.h lj_dispatch.h lj_bc.h \ + lj_traceerr.h lj_cconv.o: lj_cconv.c lj_obj.h lua.h luaconf.h lj_def.h lj_arch.h \ lj_err.h lj_errmsg.h lj_tab.h lj_ctype.h lj_gc.h lj_cdata.h lj_cconv.h lj_cdata.o: lj_cdata.c lj_obj.h lua.h luaconf.h lj_def.h lj_arch.h \ diff --git a/src/buildvm_x64.h b/src/buildvm_x64.h index a80a39b8..16bcc65b 100644 --- a/src/buildvm_x64.h +++ b/src/buildvm_x64.h @@ -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[14436] = { +static const unsigned char build_actionlist[14438] = { 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, @@ -470,58 +470,58 @@ static const unsigned char build_actionlist[14436] = { 248,217,201,248,2,221,216,195,248,1,221,225,223,224,252,246,196,1,15,133, 244,248,217,201,248,2,221,216,195,255,248,155,137,252,248,83,15,162,137,6, 137,94,4,137,78,8,137,86,12,91,195,248,156,255,85,72,137,229,83,72,137,252, - 251,139,131,233,72,41,196,15,182,139,233,131,252,233,1,15,136,244,248,248, - 1,72,139,132,253,203,233,72,137,132,253,204,233,131,252,233,1,15,137,244, - 1,248,2,15,182,131,233,72,139,187,233,72,139,179,233,72,139,147,233,72,139, - 139,233,76,139,131,233,76,139,139,233,133,192,15,132,244,251,15,40,131,233, - 255,15,40,139,233,15,40,147,233,15,40,155,233,131,252,248,4,15,134,244,251, - 15,40,163,233,15,40,171,233,15,40,179,233,15,40,187,233,248,5,252,255,147, - 233,72,137,131,233,15,41,131,233,72,137,147,233,15,41,139,233,72,139,93,252, - 248,201,195,255,129,124,253,202,4,239,15,135,244,41,129,124,253,194,4,239, - 15,135,244,41,255,252,242,15,16,4,194,131,195,4,102,15,46,4,202,255,221,4, - 202,221,4,194,131,195,4,255,223,252,233,221,216,255,218,252,233,223,224,158, - 255,15,134,244,248,255,15,131,244,248,255,248,1,15,183,67,252,254,141,156, - 253,131,233,248,2,139,3,15,182,204,15,182,232,131,195,4,193,232,16,65,252, - 255,36,252,238,255,139,108,194,4,131,195,4,129,252,253,239,15,135,244,251, - 129,124,253,202,4,239,15,135,244,251,255,252,242,15,16,4,194,102,15,46,4, - 202,255,221,4,202,221,4,194,255,15,138,244,248,15,133,244,248,255,15,138, - 244,248,15,132,244,247,255,248,1,15,183,67,252,254,141,156,253,131,233,248, - 2,255,248,2,15,183,67,252,254,141,156,253,131,233,248,1,255,248,5,57,108, - 202,4,15,133,244,2,129,252,253,239,15,131,244,1,139,12,202,139,4,194,57,193, - 15,132,244,1,129,252,253,239,15,135,244,2,139,169,233,133,252,237,15,132, - 244,2,252,246,133,233,235,15,133,244,2,255,49,252,237,255,189,1,0,0,0,255, - 252,233,244,45,255,72,252,247,208,131,195,4,129,124,253,202,4,239,15,133, - 244,248,139,12,202,65,59,12,135,255,131,195,4,129,124,253,202,4,239,15,135, - 244,248,255,252,242,65,15,16,4,199,102,15,46,4,202,255,221,4,202,65,221,4, - 199,255,72,252,247,208,131,195,4,57,68,202,4,255,139,108,194,4,131,195,4, - 129,252,253,239,255,15,131,244,247,255,15,130,244,247,255,137,108,202,4,139, - 44,194,137,44,202,255,15,183,67,252,254,141,156,253,131,233,248,1,139,3,15, - 182,204,15,182,232,131,195,4,193,232,16,65,252,255,36,252,238,255,72,139, - 44,194,72,137,44,202,139,3,15,182,204,15,182,232,131,195,4,193,232,16,65, - 252,255,36,252,238,255,49,252,237,129,124,253,194,4,239,129,213,239,137,108, - 202,4,139,3,15,182,204,15,182,232,131,195,4,193,232,16,65,252,255,36,252, - 238,255,129,124,253,194,4,239,15,135,244,48,255,252,242,15,16,4,194,72,184, - 237,237,102,72,15,110,200,15,87,193,252,242,15,17,4,202,255,221,4,194,217, - 224,221,28,202,255,129,124,253,194,4,239,15,133,244,248,139,4,194,255,15, - 87,192,252,242,15,42,128,233,248,1,252,242,15,17,4,202,255,219,128,233,248, - 1,221,28,202,255,139,3,15,182,204,15,182,232,131,195,4,193,232,16,65,252, - 255,36,252,238,248,2,129,124,253,194,4,239,15,133,244,50,139,60,194,137,213, - 232,251,1,18,255,252,242,15,42,192,137,252,234,255,15,182,75,252,253,252, - 233,244,1,255,15,182,252,236,15,182,192,255,129,124,253,252,234,4,239,15, - 135,244,46,255,252,242,15,16,4,252,234,252,242,65,15,88,4,199,255,221,4,252, - 234,65,220,4,199,255,129,124,253,252,234,4,239,15,135,244,47,255,252,242, - 65,15,16,4,199,252,242,15,88,4,252,234,255,65,221,4,199,220,4,252,234,255, - 129,124,253,252,234,4,239,15,135,244,49,129,124,253,194,4,239,15,135,244, - 49,255,252,242,15,16,4,252,234,252,242,15,88,4,194,255,221,4,252,234,220, - 4,194,255,252,242,15,16,4,252,234,252,242,65,15,92,4,199,255,221,4,252,234, - 65,220,36,199,255,252,242,65,15,16,4,199,252,242,15,92,4,252,234,255,65,221, - 4,199,220,36,252,234,255,252,242,15,16,4,252,234,252,242,15,92,4,194,255, - 221,4,252,234,220,36,194,255,252,242,15,16,4,252,234,252,242,65,15,89,4,199, - 255,221,4,252,234,65,220,12,199,255,252,242,65,15,16,4,199,252,242,15,89, - 4,252,234,255,65,221,4,199,220,12,252,234,255,252,242,15,16,4,252,234,252, - 242,15,89,4,194,255,221,4,252,234,220,12,194,255,252,242,15,16,4,252,234, - 252,242,65,15,94,4,199,255,221,4,252,234,65,220,52,199,255,252,242,65,15, - 16,4,199,252,242,15,94,4,252,234,255,65,221,4,199,220,52,252,234,255,252, + 251,139,131,233,72,41,196,255,15,182,139,233,131,252,233,1,15,136,244,248, + 248,1,72,139,132,253,203,233,72,137,132,253,204,233,131,252,233,1,15,137, + 244,1,248,2,15,182,131,233,72,139,187,233,72,139,179,233,72,139,147,233,72, + 139,139,233,76,139,131,233,76,139,139,233,133,192,15,132,244,251,15,40,131, + 233,15,40,139,233,255,15,40,147,233,15,40,155,233,131,252,248,4,15,134,244, + 251,15,40,163,233,15,40,171,233,15,40,179,233,15,40,187,233,248,5,252,255, + 147,233,72,137,131,233,15,41,131,233,72,137,147,233,15,41,139,233,255,72, + 139,93,252,248,201,195,255,129,124,253,202,4,239,15,135,244,41,129,124,253, + 194,4,239,15,135,244,41,255,252,242,15,16,4,194,131,195,4,102,15,46,4,202, + 255,221,4,202,221,4,194,131,195,4,255,223,252,233,221,216,255,218,252,233, + 223,224,158,255,15,134,244,248,255,15,131,244,248,255,248,1,15,183,67,252, + 254,141,156,253,131,233,248,2,139,3,15,182,204,15,182,232,131,195,4,193,232, + 16,65,252,255,36,252,238,255,139,108,194,4,131,195,4,129,252,253,239,15,135, + 244,251,129,124,253,202,4,239,15,135,244,251,255,252,242,15,16,4,194,102, + 15,46,4,202,255,221,4,202,221,4,194,255,15,138,244,248,15,133,244,248,255, + 15,138,244,248,15,132,244,247,255,248,1,15,183,67,252,254,141,156,253,131, + 233,248,2,255,248,2,15,183,67,252,254,141,156,253,131,233,248,1,255,248,5, + 57,108,202,4,15,133,244,2,129,252,253,239,15,131,244,1,139,12,202,139,4,194, + 57,193,15,132,244,1,129,252,253,239,15,135,244,2,139,169,233,133,252,237, + 15,132,244,2,252,246,133,233,235,15,133,244,2,255,49,252,237,255,189,1,0, + 0,0,255,252,233,244,45,255,72,252,247,208,131,195,4,129,124,253,202,4,239, + 15,133,244,248,139,12,202,65,59,12,135,255,131,195,4,129,124,253,202,4,239, + 15,135,244,248,255,252,242,65,15,16,4,199,102,15,46,4,202,255,221,4,202,65, + 221,4,199,255,72,252,247,208,131,195,4,57,68,202,4,255,139,108,194,4,131, + 195,4,129,252,253,239,255,15,131,244,247,255,15,130,244,247,255,137,108,202, + 4,139,44,194,137,44,202,255,15,183,67,252,254,141,156,253,131,233,248,1,139, + 3,15,182,204,15,182,232,131,195,4,193,232,16,65,252,255,36,252,238,255,72, + 139,44,194,72,137,44,202,139,3,15,182,204,15,182,232,131,195,4,193,232,16, + 65,252,255,36,252,238,255,49,252,237,129,124,253,194,4,239,129,213,239,137, + 108,202,4,139,3,15,182,204,15,182,232,131,195,4,193,232,16,65,252,255,36, + 252,238,255,129,124,253,194,4,239,15,135,244,48,255,252,242,15,16,4,194,72, + 184,237,237,102,72,15,110,200,15,87,193,252,242,15,17,4,202,255,221,4,194, + 217,224,221,28,202,255,129,124,253,194,4,239,15,133,244,248,139,4,194,255, + 15,87,192,252,242,15,42,128,233,248,1,252,242,15,17,4,202,255,219,128,233, + 248,1,221,28,202,255,139,3,15,182,204,15,182,232,131,195,4,193,232,16,65, + 252,255,36,252,238,248,2,129,124,253,194,4,239,15,133,244,50,139,60,194,137, + 213,232,251,1,18,255,252,242,15,42,192,137,252,234,255,15,182,75,252,253, + 252,233,244,1,255,15,182,252,236,15,182,192,255,129,124,253,252,234,4,239, + 15,135,244,46,255,252,242,15,16,4,252,234,252,242,65,15,88,4,199,255,221, + 4,252,234,65,220,4,199,255,129,124,253,252,234,4,239,15,135,244,47,255,252, + 242,65,15,16,4,199,252,242,15,88,4,252,234,255,65,221,4,199,220,4,252,234, + 255,129,124,253,252,234,4,239,15,135,244,49,129,124,253,194,4,239,15,135, + 244,49,255,252,242,15,16,4,252,234,252,242,15,88,4,194,255,221,4,252,234, + 220,4,194,255,252,242,15,16,4,252,234,252,242,65,15,92,4,199,255,221,4,252, + 234,65,220,36,199,255,252,242,65,15,16,4,199,252,242,15,92,4,252,234,255, + 65,221,4,199,220,36,252,234,255,252,242,15,16,4,252,234,252,242,15,92,4,194, + 255,221,4,252,234,220,36,194,255,252,242,15,16,4,252,234,252,242,65,15,89, + 4,199,255,221,4,252,234,65,220,12,199,255,252,242,65,15,16,4,199,252,242, + 15,89,4,252,234,255,65,221,4,199,220,12,252,234,255,252,242,15,16,4,252,234, + 252,242,15,89,4,194,255,221,4,252,234,220,12,194,255,252,242,15,16,4,252, + 234,252,242,65,15,94,4,199,255,221,4,252,234,65,220,52,199,255,252,242,65, + 15,16,4,199,252,242,15,94,4,252,234,255,65,221,4,199,220,52,252,234,255,252, 242,15,16,4,252,234,252,242,15,94,4,194,255,221,4,252,234,220,52,194,255, 252,242,15,16,4,252,234,252,242,65,15,16,12,199,255,221,4,252,234,65,221, 4,199,255,252,242,65,15,16,4,199,252,242,15,16,12,252,234,255,65,221,4,199, @@ -1455,8 +1455,14 @@ static void build_subroutines(BuildCtx *ctx, int cmov, int sse) dasm_put(Dst, 9407); #if LJ_HASFFI #define DtE(_V) (int)(ptrdiff_t)&(((CCallState *)0)_V) - dasm_put(Dst, 9431, DtE(->spadj), DtE(->nsp), offsetof(CCallState, stack), CCALL_SPS_EXTRA*8, DtE(->nfpr), DtE(->gpr[0]), DtE(->gpr[1]), DtE(->gpr[2]), DtE(->gpr[3]), DtE(->gpr[4]), DtE(->gpr[5]), DtE(->fpr[0])); - dasm_put(Dst, 9521, DtE(->fpr[1]), DtE(->fpr[2]), DtE(->fpr[3]), DtE(->fpr[4]), DtE(->fpr[5]), DtE(->fpr[6]), DtE(->fpr[7]), DtE(->func), DtE(->gpr[0]), DtE(->fpr[0]), DtE(->gpr[1]), DtE(->fpr[1])); + dasm_put(Dst, 9431, DtE(->spadj)); +#if LJ_TARGET_WINDOWS +#endif + dasm_put(Dst, 9447, DtE(->nsp), offsetof(CCallState, stack), CCALL_SPS_EXTRA*8, DtE(->nfpr), DtE(->gpr[0]), DtE(->gpr[1]), DtE(->gpr[2]), DtE(->gpr[3]), DtE(->gpr[4]), DtE(->gpr[5]), DtE(->fpr[0]), DtE(->fpr[1])); + dasm_put(Dst, 9526, DtE(->fpr[2]), DtE(->fpr[3]), DtE(->fpr[4]), DtE(->fpr[5]), DtE(->fpr[6]), DtE(->fpr[7]), DtE(->func), DtE(->gpr[0]), DtE(->fpr[0]), DtE(->gpr[1]), DtE(->fpr[1])); +#if LJ_TARGET_WINDOWS +#endif + dasm_put(Dst, 9581); #endif } @@ -1473,20 +1479,20 @@ 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, 9587, LJ_TISNUM, LJ_TISNUM); + dasm_put(Dst, 9589, LJ_TISNUM, LJ_TISNUM); if (sse) { - dasm_put(Dst, 9608); + dasm_put(Dst, 9610); } else { - dasm_put(Dst, 9623); + dasm_put(Dst, 9625); if (cmov) { - dasm_put(Dst, 9633); + dasm_put(Dst, 9635); } else { - dasm_put(Dst, 9639); + dasm_put(Dst, 9641); } } switch (op) { case BC_ISLT: - dasm_put(Dst, 9646); + dasm_put(Dst, 9648); break; case BC_ISGE: dasm_put(Dst, 9287); @@ -1495,599 +1501,599 @@ static void build_ins(BuildCtx *ctx, BCOp op, int defop, int cmov, int sse) dasm_put(Dst, 5894); break; case BC_ISGT: - dasm_put(Dst, 9651); + dasm_put(Dst, 9653); break; default: break; /* Shut up GCC. */ } - dasm_put(Dst, 9656, -BCBIAS_J*4); + dasm_put(Dst, 9658, -BCBIAS_J*4); break; case BC_ISEQV: case BC_ISNEV: vk = op == BC_ISEQV; - dasm_put(Dst, 9691, LJ_TISNUM, LJ_TISNUM); + dasm_put(Dst, 9693, LJ_TISNUM, LJ_TISNUM); if (sse) { - dasm_put(Dst, 9717); + dasm_put(Dst, 9719); } else { - dasm_put(Dst, 9729); + dasm_put(Dst, 9731); if (cmov) { - dasm_put(Dst, 9633); + dasm_put(Dst, 9635); } else { - dasm_put(Dst, 9639); + dasm_put(Dst, 9641); } } iseqne_fp: if (vk) { - dasm_put(Dst, 9736); + dasm_put(Dst, 9738); } else { - dasm_put(Dst, 9745); + dasm_put(Dst, 9747); } iseqne_end: if (vk) { - dasm_put(Dst, 9754, -BCBIAS_J*4); + dasm_put(Dst, 9756, -BCBIAS_J*4); } else { - dasm_put(Dst, 9769, -BCBIAS_J*4); + dasm_put(Dst, 9771, -BCBIAS_J*4); } - dasm_put(Dst, 9670); + dasm_put(Dst, 9672); if (op == BC_ISEQV || op == BC_ISNEV) { - dasm_put(Dst, 9784, LJ_TISPRI, LJ_TISTABUD, Dt6(->metatable), Dt6(->nomm), 1<metatable), Dt6(->nomm), 1<>32)); + dasm_put(Dst, 10074, (unsigned int)(U64x(80000000,00000000)), (unsigned int)((U64x(80000000,00000000))>>32)); } else { - dasm_put(Dst, 10097); + dasm_put(Dst, 10099); } - dasm_put(Dst, 9670); + dasm_put(Dst, 9672); break; case BC_LEN: - dasm_put(Dst, 10106, LJ_TSTR); + dasm_put(Dst, 10108, LJ_TSTR); if (sse) { - dasm_put(Dst, 10120, Dt5(->len)); + dasm_put(Dst, 10122, Dt5(->len)); } else { - dasm_put(Dst, 10138, Dt5(->len)); + dasm_put(Dst, 10140, Dt5(->len)); } - dasm_put(Dst, 10147, LJ_TTAB); + dasm_put(Dst, 10149, LJ_TTAB); if (sse) { - dasm_put(Dst, 10189); + dasm_put(Dst, 10191); } else { } - dasm_put(Dst, 10198); + dasm_put(Dst, 10200); break; /* -- Binary ops -------------------------------------------------------- */ case BC_ADDVN: case BC_ADDNV: case BC_ADDVV: - dasm_put(Dst, 10208); + dasm_put(Dst, 10210); vk = ((int)op - BC_ADDVN) / (BC_ADDNV-BC_ADDVN); switch (vk) { case 0: - dasm_put(Dst, 10216, LJ_TISNUM); + dasm_put(Dst, 10218, LJ_TISNUM); if (sse) { - dasm_put(Dst, 10228); + dasm_put(Dst, 10230); } else { - dasm_put(Dst, 10243); + dasm_put(Dst, 10245); } break; case 1: - dasm_put(Dst, 10252, LJ_TISNUM); + dasm_put(Dst, 10254, LJ_TISNUM); if (sse) { - dasm_put(Dst, 10264); + dasm_put(Dst, 10266); } else { - dasm_put(Dst, 10279); + dasm_put(Dst, 10281); } break; default: - dasm_put(Dst, 10288, LJ_TISNUM, LJ_TISNUM); + dasm_put(Dst, 10290, LJ_TISNUM, LJ_TISNUM); if (sse) { - dasm_put(Dst, 10310); + dasm_put(Dst, 10312); } else { - dasm_put(Dst, 10324); + dasm_put(Dst, 10326); } break; } if (sse) { - dasm_put(Dst, 10090); + dasm_put(Dst, 10092); } else { - dasm_put(Dst, 10102); + dasm_put(Dst, 10104); } - dasm_put(Dst, 9670); + dasm_put(Dst, 9672); break; case BC_SUBVN: case BC_SUBNV: case BC_SUBVV: - dasm_put(Dst, 10208); + dasm_put(Dst, 10210); vk = ((int)op - BC_ADDVN) / (BC_ADDNV-BC_ADDVN); switch (vk) { case 0: - dasm_put(Dst, 10216, LJ_TISNUM); + dasm_put(Dst, 10218, LJ_TISNUM); if (sse) { - dasm_put(Dst, 10332); + dasm_put(Dst, 10334); } else { - dasm_put(Dst, 10347); + dasm_put(Dst, 10349); } break; case 1: - dasm_put(Dst, 10252, LJ_TISNUM); + dasm_put(Dst, 10254, LJ_TISNUM); if (sse) { - dasm_put(Dst, 10356); + dasm_put(Dst, 10358); } else { - dasm_put(Dst, 10371); + dasm_put(Dst, 10373); } break; default: - dasm_put(Dst, 10288, LJ_TISNUM, LJ_TISNUM); + dasm_put(Dst, 10290, LJ_TISNUM, LJ_TISNUM); if (sse) { - dasm_put(Dst, 10380); + dasm_put(Dst, 10382); } else { - dasm_put(Dst, 10394); + dasm_put(Dst, 10396); } break; } if (sse) { - dasm_put(Dst, 10090); + dasm_put(Dst, 10092); } else { - dasm_put(Dst, 10102); + dasm_put(Dst, 10104); } - dasm_put(Dst, 9670); + dasm_put(Dst, 9672); break; case BC_MULVN: case BC_MULNV: case BC_MULVV: - dasm_put(Dst, 10208); + dasm_put(Dst, 10210); vk = ((int)op - BC_ADDVN) / (BC_ADDNV-BC_ADDVN); switch (vk) { case 0: - dasm_put(Dst, 10216, LJ_TISNUM); + dasm_put(Dst, 10218, LJ_TISNUM); if (sse) { - dasm_put(Dst, 10402); + dasm_put(Dst, 10404); } else { - dasm_put(Dst, 10417); + dasm_put(Dst, 10419); } break; case 1: - dasm_put(Dst, 10252, LJ_TISNUM); + dasm_put(Dst, 10254, LJ_TISNUM); if (sse) { - dasm_put(Dst, 10426); + dasm_put(Dst, 10428); } else { - dasm_put(Dst, 10441); + dasm_put(Dst, 10443); } break; default: - dasm_put(Dst, 10288, LJ_TISNUM, LJ_TISNUM); + dasm_put(Dst, 10290, LJ_TISNUM, LJ_TISNUM); if (sse) { - dasm_put(Dst, 10450); + dasm_put(Dst, 10452); } else { - dasm_put(Dst, 10464); + dasm_put(Dst, 10466); } break; } if (sse) { - dasm_put(Dst, 10090); + dasm_put(Dst, 10092); } else { - dasm_put(Dst, 10102); + dasm_put(Dst, 10104); } - dasm_put(Dst, 9670); + dasm_put(Dst, 9672); break; case BC_DIVVN: case BC_DIVNV: case BC_DIVVV: - dasm_put(Dst, 10208); + dasm_put(Dst, 10210); vk = ((int)op - BC_ADDVN) / (BC_ADDNV-BC_ADDVN); switch (vk) { case 0: - dasm_put(Dst, 10216, LJ_TISNUM); + dasm_put(Dst, 10218, LJ_TISNUM); if (sse) { - dasm_put(Dst, 10472); + dasm_put(Dst, 10474); } else { - dasm_put(Dst, 10487); + dasm_put(Dst, 10489); } break; case 1: - dasm_put(Dst, 10252, LJ_TISNUM); + dasm_put(Dst, 10254, LJ_TISNUM); if (sse) { - dasm_put(Dst, 10496); + dasm_put(Dst, 10498); } else { - dasm_put(Dst, 10511); + dasm_put(Dst, 10513); } break; default: - dasm_put(Dst, 10288, LJ_TISNUM, LJ_TISNUM); + dasm_put(Dst, 10290, LJ_TISNUM, LJ_TISNUM); if (sse) { - dasm_put(Dst, 10520); + dasm_put(Dst, 10522); } else { - dasm_put(Dst, 10534); + dasm_put(Dst, 10536); } break; } if (sse) { - dasm_put(Dst, 10090); + dasm_put(Dst, 10092); } else { - dasm_put(Dst, 10102); + dasm_put(Dst, 10104); } - dasm_put(Dst, 9670); + dasm_put(Dst, 9672); break; case BC_MODVN: - dasm_put(Dst, 10208); + dasm_put(Dst, 10210); vk = ((int)op - BC_ADDVN) / (BC_ADDNV-BC_ADDVN); switch (vk) { case 0: - dasm_put(Dst, 10216, LJ_TISNUM); + dasm_put(Dst, 10218, LJ_TISNUM); if (sse) { - dasm_put(Dst, 10542); + dasm_put(Dst, 10544); } else { - dasm_put(Dst, 10557); + dasm_put(Dst, 10559); } break; case 1: - dasm_put(Dst, 10252, LJ_TISNUM); + dasm_put(Dst, 10254, LJ_TISNUM); if (sse) { - dasm_put(Dst, 10566); + dasm_put(Dst, 10568); } else { - dasm_put(Dst, 10581); + dasm_put(Dst, 10583); } break; default: - dasm_put(Dst, 10288, LJ_TISNUM, LJ_TISNUM); + dasm_put(Dst, 10290, LJ_TISNUM, LJ_TISNUM); if (sse) { - dasm_put(Dst, 10590); + dasm_put(Dst, 10592); } else { - dasm_put(Dst, 10604); + dasm_put(Dst, 10606); } break; } - dasm_put(Dst, 10612); + dasm_put(Dst, 10614); if (sse) { - dasm_put(Dst, 10090); + dasm_put(Dst, 10092); } else { - dasm_put(Dst, 10102); + dasm_put(Dst, 10104); } - dasm_put(Dst, 9670); + dasm_put(Dst, 9672); break; case BC_MODNV: case BC_MODVV: - dasm_put(Dst, 10208); + dasm_put(Dst, 10210); vk = ((int)op - BC_ADDVN) / (BC_ADDNV-BC_ADDVN); switch (vk) { case 0: - dasm_put(Dst, 10216, LJ_TISNUM); + dasm_put(Dst, 10218, LJ_TISNUM); if (sse) { - dasm_put(Dst, 10542); + dasm_put(Dst, 10544); } else { - dasm_put(Dst, 10557); + dasm_put(Dst, 10559); } break; case 1: - dasm_put(Dst, 10252, LJ_TISNUM); + dasm_put(Dst, 10254, LJ_TISNUM); if (sse) { - dasm_put(Dst, 10566); + dasm_put(Dst, 10568); } else { - dasm_put(Dst, 10581); + dasm_put(Dst, 10583); } break; default: - dasm_put(Dst, 10288, LJ_TISNUM, LJ_TISNUM); + dasm_put(Dst, 10290, LJ_TISNUM, LJ_TISNUM); if (sse) { - dasm_put(Dst, 10590); + dasm_put(Dst, 10592); } else { - dasm_put(Dst, 10604); + dasm_put(Dst, 10606); } break; } - dasm_put(Dst, 10618); + dasm_put(Dst, 10620); break; case BC_POW: - dasm_put(Dst, 10208); + dasm_put(Dst, 10210); vk = ((int)op - BC_ADDVN) / (BC_ADDNV-BC_ADDVN); switch (vk) { case 0: - dasm_put(Dst, 10216, LJ_TISNUM); + dasm_put(Dst, 10218, LJ_TISNUM); if (sse) { - dasm_put(Dst, 10542); + dasm_put(Dst, 10544); } else { - dasm_put(Dst, 10557); + dasm_put(Dst, 10559); } break; case 1: - dasm_put(Dst, 10252, LJ_TISNUM); + dasm_put(Dst, 10254, LJ_TISNUM); if (sse) { - dasm_put(Dst, 10566); + dasm_put(Dst, 10568); } else { - dasm_put(Dst, 10581); + dasm_put(Dst, 10583); } break; default: - dasm_put(Dst, 10288, LJ_TISNUM, LJ_TISNUM); + dasm_put(Dst, 10290, LJ_TISNUM, LJ_TISNUM); if (sse) { - dasm_put(Dst, 10590); + dasm_put(Dst, 10592); } else { - dasm_put(Dst, 10604); + dasm_put(Dst, 10606); } break; } - dasm_put(Dst, 10623); + dasm_put(Dst, 10625); if (sse) { - dasm_put(Dst, 10090); + dasm_put(Dst, 10092); } else { - dasm_put(Dst, 10102); + dasm_put(Dst, 10104); } - dasm_put(Dst, 9670); + dasm_put(Dst, 9672); break; case BC_CAT: - dasm_put(Dst, 10627, Dt1(->base), Dt1(->base)); + dasm_put(Dst, 10629, Dt1(->base), Dt1(->base)); break; /* -- Constant ops ------------------------------------------------------ */ case BC_KSTR: - dasm_put(Dst, 10711, LJ_TSTR); + dasm_put(Dst, 10713, LJ_TSTR); break; case BC_KCDATA: #if LJ_HASFFI - dasm_put(Dst, 10711, LJ_TCDATA); + dasm_put(Dst, 10713, LJ_TCDATA); #endif break; case BC_KSHORT: if (sse) { - dasm_put(Dst, 10748); + dasm_put(Dst, 10750); } else { - dasm_put(Dst, 10763); + dasm_put(Dst, 10765); } - dasm_put(Dst, 9670); + dasm_put(Dst, 9672); break; case BC_KNUM: if (sse) { - dasm_put(Dst, 10771); + dasm_put(Dst, 10773); } else { - dasm_put(Dst, 10785); + dasm_put(Dst, 10787); } - dasm_put(Dst, 9670); + dasm_put(Dst, 9672); break; case BC_KPRI: - dasm_put(Dst, 10793); + dasm_put(Dst, 10795); break; case BC_KNIL: - dasm_put(Dst, 10822, LJ_TNIL); + dasm_put(Dst, 10824, LJ_TNIL); break; /* -- Upvalue and function ops ------------------------------------------ */ case BC_UGET: - dasm_put(Dst, 10870, offsetof(GCfuncL, uvptr), DtA(->v)); + dasm_put(Dst, 10872, offsetof(GCfuncL, uvptr), DtA(->v)); break; case BC_USETV: #define TV2MARKOFS \ ((int32_t)offsetof(GCupval, marked)-(int32_t)offsetof(GCupval, tv)) - dasm_put(Dst, 10911, 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, 11007); + dasm_put(Dst, 10913, 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, 11009); break; #undef TV2MARKOFS case BC_USETS: - dasm_put(Dst, 11019, 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, 11021, 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, 11115); + dasm_put(Dst, 11117); if (sse) { - dasm_put(Dst, 11120); + dasm_put(Dst, 11122); } else { - dasm_put(Dst, 9912); + dasm_put(Dst, 9914); } - dasm_put(Dst, 11128, offsetof(GCfuncL, uvptr), DtA(->v)); + dasm_put(Dst, 11130, offsetof(GCfuncL, uvptr), DtA(->v)); if (sse) { - dasm_put(Dst, 11137); + dasm_put(Dst, 11139); } else { - dasm_put(Dst, 11143); + dasm_put(Dst, 11145); } - dasm_put(Dst, 9670); + dasm_put(Dst, 9672); break; case BC_USETP: - dasm_put(Dst, 11146, offsetof(GCfuncL, uvptr), DtA(->v)); + dasm_put(Dst, 11148, offsetof(GCfuncL, uvptr), DtA(->v)); break; case BC_UCLO: - dasm_put(Dst, 11186, -BCBIAS_J*4, Dt1(->openupval), Dt1(->base), Dt1(->base)); + dasm_put(Dst, 11188, -BCBIAS_J*4, Dt1(->openupval), Dt1(->base), Dt1(->base)); break; case BC_FNEW: - dasm_put(Dst, 11242, Dt1(->base), Dt1(->base), LJ_TFUNC); + dasm_put(Dst, 11244, Dt1(->base), Dt1(->base), LJ_TFUNC); break; /* -- Table ops --------------------------------------------------------- */ case BC_TNEW: - dasm_put(Dst, 11309, Dt1(->base), DISPATCH_GL(gc.total), DISPATCH_GL(gc.threshold), Dt1(->base), LJ_TTAB); + dasm_put(Dst, 11311, Dt1(->base), DISPATCH_GL(gc.total), DISPATCH_GL(gc.threshold), Dt1(->base), LJ_TTAB); break; case BC_TDUP: - dasm_put(Dst, 11433, DISPATCH_GL(gc.total), DISPATCH_GL(gc.threshold), Dt1(->base), Dt1(->base), LJ_TTAB); + dasm_put(Dst, 11435, DISPATCH_GL(gc.total), DISPATCH_GL(gc.threshold), Dt1(->base), Dt1(->base), LJ_TTAB); break; case BC_GGET: - dasm_put(Dst, 11532, Dt7(->env)); + dasm_put(Dst, 11534, Dt7(->env)); break; case BC_GSET: - dasm_put(Dst, 11552, Dt7(->env)); + dasm_put(Dst, 11554, Dt7(->env)); break; case BC_TGETV: - dasm_put(Dst, 11572, LJ_TTAB, LJ_TISNUM); + dasm_put(Dst, 11574, LJ_TTAB, LJ_TISNUM); if (sse) { - dasm_put(Dst, 11605); + dasm_put(Dst, 11607); } else { } - dasm_put(Dst, 11626, Dt6(->asize), Dt6(->array), LJ_TNIL, Dt6(->metatable), Dt6(->metatable), Dt6(->nomm), 1<asize), Dt6(->array), LJ_TNIL, Dt6(->metatable), Dt6(->metatable), Dt6(->nomm), 1<hmask), Dt5(->hash), sizeof(Node), Dt6(->node), DtB(->key.it), LJ_TSTR, DtB(->key.gcr), LJ_TNIL); - dasm_put(Dst, 11825, LJ_TNIL, DtB(->next), Dt6(->metatable), Dt6(->nomm), 1<hmask), Dt5(->hash), sizeof(Node), Dt6(->node), DtB(->key.it), LJ_TSTR, DtB(->key.gcr), LJ_TNIL); + dasm_put(Dst, 11827, LJ_TNIL, DtB(->next), Dt6(->metatable), Dt6(->nomm), 1<asize), Dt6(->array), LJ_TNIL, Dt6(->metatable), Dt6(->metatable), Dt6(->nomm), 1<asize), Dt6(->array), LJ_TNIL, Dt6(->metatable), Dt6(->metatable), Dt6(->nomm), 1<asize), Dt6(->array), LJ_TNIL, Dt6(->marked), LJ_GC_BLACK, Dt6(->metatable), Dt6(->metatable)); - dasm_put(Dst, 12123, Dt6(->nomm), 1<marked), cast_byte(~LJ_GC_BLACK), DISPATCH_GL(gc.grayagain), DISPATCH_GL(gc.grayagain), Dt6(->gclist)); + dasm_put(Dst, 12045, Dt6(->asize), Dt6(->array), LJ_TNIL, Dt6(->marked), LJ_GC_BLACK, Dt6(->metatable), Dt6(->metatable)); + dasm_put(Dst, 12125, Dt6(->nomm), 1<marked), cast_byte(~LJ_GC_BLACK), DISPATCH_GL(gc.grayagain), DISPATCH_GL(gc.grayagain), Dt6(->gclist)); break; case BC_TSETS: - dasm_put(Dst, 12187, 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, 12264, Dt6(->marked), LJ_GC_BLACK, Dt6(->metatable), Dt6(->metatable), Dt6(->nomm), 1<next)); - dasm_put(Dst, 12351, Dt6(->metatable), Dt6(->nomm), 1<base), Dt1(->base), Dt6(->marked), cast_byte(~LJ_GC_BLACK), DISPATCH_GL(gc.grayagain), DISPATCH_GL(gc.grayagain), Dt6(->gclist)); + dasm_put(Dst, 12189, 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, 12266, Dt6(->marked), LJ_GC_BLACK, Dt6(->metatable), Dt6(->metatable), Dt6(->nomm), 1<next)); + dasm_put(Dst, 12353, Dt6(->metatable), Dt6(->nomm), 1<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, 12443, LJ_TTAB, Dt6(->asize), Dt6(->array), LJ_TNIL, Dt6(->marked), LJ_GC_BLACK, Dt6(->metatable)); - dasm_put(Dst, 12538, Dt6(->metatable), Dt6(->nomm), 1<marked), cast_byte(~LJ_GC_BLACK), DISPATCH_GL(gc.grayagain), DISPATCH_GL(gc.grayagain), Dt6(->gclist)); + dasm_put(Dst, 12445, LJ_TTAB, Dt6(->asize), Dt6(->array), LJ_TNIL, Dt6(->marked), LJ_GC_BLACK, Dt6(->metatable)); + dasm_put(Dst, 12540, Dt6(->metatable), Dt6(->nomm), 1<marked), cast_byte(~LJ_GC_BLACK), DISPATCH_GL(gc.grayagain), DISPATCH_GL(gc.grayagain), Dt6(->gclist)); break; case BC_TSETM: - dasm_put(Dst, 12586, Dt6(->marked), LJ_GC_BLACK, Dt6(->asize), Dt6(->array), Dt1(->base), Dt1(->base)); - dasm_put(Dst, 12736, Dt6(->marked), cast_byte(~LJ_GC_BLACK), DISPATCH_GL(gc.grayagain), DISPATCH_GL(gc.grayagain), Dt6(->gclist)); + dasm_put(Dst, 12588, Dt6(->marked), LJ_GC_BLACK, Dt6(->asize), Dt6(->array), Dt1(->base), Dt1(->base)); + dasm_put(Dst, 12738, 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, 10212); + dasm_put(Dst, 10214); if (op == BC_CALLM) { - dasm_put(Dst, 12756); + dasm_put(Dst, 12758); } - dasm_put(Dst, 12761, LJ_TFUNC, Dt7(->pc)); + dasm_put(Dst, 12763, LJ_TFUNC, Dt7(->pc)); break; case BC_CALLMT: - dasm_put(Dst, 12756); + dasm_put(Dst, 12758); break; case BC_CALLT: - dasm_put(Dst, 12804, LJ_TFUNC, FRAME_TYPE, Dt7(->ffid), Dt7(->pc)); - dasm_put(Dst, 12922, FRAME_TYPE, Dt7(->pc), PC2PROTO(k), FRAME_VARG, FRAME_TYPEP, FRAME_VARG); + dasm_put(Dst, 12806, LJ_TFUNC, FRAME_TYPE, Dt7(->ffid), Dt7(->pc)); + dasm_put(Dst, 12924, FRAME_TYPE, Dt7(->pc), PC2PROTO(k), FRAME_VARG, FRAME_TYPEP, FRAME_VARG); break; case BC_ITERC: - dasm_put(Dst, 12996, LJ_TFUNC, 2+1, Dt7(->pc)); + dasm_put(Dst, 12998, LJ_TFUNC, 2+1, Dt7(->pc)); break; case BC_ITERN: #if LJ_HASJIT #endif - dasm_put(Dst, 13068, Dt6(->asize), Dt6(->array), LJ_TNIL); + dasm_put(Dst, 13070, Dt6(->asize), Dt6(->array), LJ_TNIL); if (sse) { - dasm_put(Dst, 13120); + dasm_put(Dst, 13122); } else { - dasm_put(Dst, 13126); + dasm_put(Dst, 13128); } - dasm_put(Dst, 13132); + dasm_put(Dst, 13134); if (sse) { - dasm_put(Dst, 10090); + dasm_put(Dst, 10092); } else { - dasm_put(Dst, 10102); + dasm_put(Dst, 10104); } - dasm_put(Dst, 13145, -BCBIAS_J*4); + dasm_put(Dst, 13147, -BCBIAS_J*4); if (!sse) { - dasm_put(Dst, 13199); + dasm_put(Dst, 13201); } - dasm_put(Dst, 13205, Dt6(->hmask), sizeof(Node), Dt6(->node), DtB(->val.it), LJ_TNIL, DtB(->key), DtB(->val)); + dasm_put(Dst, 13207, Dt6(->hmask), sizeof(Node), Dt6(->node), DtB(->val.it), LJ_TNIL, DtB(->key), DtB(->val)); break; case BC_ISNEXT: - dasm_put(Dst, 13284, LJ_TFUNC, LJ_TTAB, LJ_TNIL, Dt8(->ffid), FF_next_N, -BCBIAS_J*4, BC_JMP, -BCBIAS_J*4, BC_ITERC); + dasm_put(Dst, 13286, LJ_TFUNC, LJ_TTAB, LJ_TNIL, Dt8(->ffid), FF_next_N, -BCBIAS_J*4, BC_JMP, -BCBIAS_J*4, BC_ITERC); break; case BC_VARG: - dasm_put(Dst, 13385, (8+FRAME_VARG), LJ_TNIL, Dt1(->maxstack)); - dasm_put(Dst, 13552, Dt1(->base), Dt1(->top), Dt1(->base), Dt1(->top)); + dasm_put(Dst, 13387, (8+FRAME_VARG), LJ_TNIL, Dt1(->maxstack)); + dasm_put(Dst, 13554, Dt1(->base), Dt1(->top), Dt1(->base), Dt1(->top)); break; /* -- Returns ----------------------------------------------------------- */ case BC_RETM: - dasm_put(Dst, 12756); + dasm_put(Dst, 12758); break; case BC_RET: case BC_RET0: case BC_RET1: if (op != BC_RET0) { - dasm_put(Dst, 13622); + dasm_put(Dst, 13624); } - dasm_put(Dst, 13626, FRAME_TYPE); + dasm_put(Dst, 13628, FRAME_TYPE); switch (op) { case BC_RET: - dasm_put(Dst, 13645); + dasm_put(Dst, 13647); break; case BC_RET1: - dasm_put(Dst, 13699); + dasm_put(Dst, 13701); /* fallthrough */ case BC_RET0: - dasm_put(Dst, 13709); + dasm_put(Dst, 13711); default: break; } - dasm_put(Dst, 13720, Dt7(->pc), PC2PROTO(k)); + dasm_put(Dst, 13722, Dt7(->pc), PC2PROTO(k)); if (op == BC_RET) { - dasm_put(Dst, 13768, LJ_TNIL); + dasm_put(Dst, 13770, LJ_TNIL); } else { - dasm_put(Dst, 13779, LJ_TNIL); + dasm_put(Dst, 13781, LJ_TNIL); } - dasm_put(Dst, 13786, -FRAME_VARG, FRAME_TYPEP); + dasm_put(Dst, 13788, -FRAME_VARG, FRAME_TYPEP); if (op != BC_RET0) { - dasm_put(Dst, 13810); + dasm_put(Dst, 13812); } dasm_put(Dst, 4546); break; @@ -2097,7 +2103,7 @@ static void build_ins(BuildCtx *ctx, BCOp op, int defop, int cmov, int sse) case BC_FORL: #if LJ_HASJIT - dasm_put(Dst, 13814, HOTCOUNT_PCMASK, GG_DISP2HOT); + dasm_put(Dst, 13816, HOTCOUNT_PCMASK, GG_DISP2HOT); #endif break; @@ -2109,57 +2115,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, 13835); + dasm_put(Dst, 13837); if (!vk) { - dasm_put(Dst, 13839, LJ_TISNUM, LJ_TISNUM); + dasm_put(Dst, 13841, LJ_TISNUM, LJ_TISNUM); } - dasm_put(Dst, 13858); + dasm_put(Dst, 13860); if (!vk) { - dasm_put(Dst, 13862, LJ_TISNUM); + dasm_put(Dst, 13864, LJ_TISNUM); } if (sse) { - dasm_put(Dst, 13871); + dasm_put(Dst, 13873); if (vk) { - dasm_put(Dst, 13883); + dasm_put(Dst, 13885); } else { - dasm_put(Dst, 13902); + dasm_put(Dst, 13904); } - dasm_put(Dst, 13907); + dasm_put(Dst, 13909); } else { - dasm_put(Dst, 13920); + dasm_put(Dst, 13922); if (vk) { - dasm_put(Dst, 13926); + dasm_put(Dst, 13928); } else { - dasm_put(Dst, 13942); + dasm_put(Dst, 13944); } - dasm_put(Dst, 13950); + dasm_put(Dst, 13952); if (cmov) { - dasm_put(Dst, 9633); + dasm_put(Dst, 9635); } else { - dasm_put(Dst, 9639); + dasm_put(Dst, 9641); } if (!cmov) { - dasm_put(Dst, 13955); + dasm_put(Dst, 13957); } } if (op == BC_FORI) { - dasm_put(Dst, 13961, -BCBIAS_J*4); + dasm_put(Dst, 13963, -BCBIAS_J*4); } else if (op == BC_JFORI) { - dasm_put(Dst, 13971, -BCBIAS_J*4, BC_JLOOP); + dasm_put(Dst, 13973, -BCBIAS_J*4, BC_JLOOP); } else if (op == BC_IFORL) { - dasm_put(Dst, 13985, -BCBIAS_J*4); + dasm_put(Dst, 13987, -BCBIAS_J*4); } else { - dasm_put(Dst, 13981, BC_JLOOP); + dasm_put(Dst, 13983, BC_JLOOP); } - dasm_put(Dst, 9668); + dasm_put(Dst, 9670); if (sse) { - dasm_put(Dst, 13995); + dasm_put(Dst, 13997); } break; case BC_ITERL: #if LJ_HASJIT - dasm_put(Dst, 13814, HOTCOUNT_PCMASK, GG_DISP2HOT); + dasm_put(Dst, 13816, HOTCOUNT_PCMASK, GG_DISP2HOT); #endif break; @@ -2168,33 +2174,33 @@ static void build_ins(BuildCtx *ctx, BCOp op, int defop, int cmov, int sse) break; #endif case BC_IITERL: - dasm_put(Dst, 14006, LJ_TNIL); + dasm_put(Dst, 14008, LJ_TNIL); if (op == BC_JITERL) { - dasm_put(Dst, 14021, BC_JLOOP); + dasm_put(Dst, 14023, BC_JLOOP); } else { - dasm_put(Dst, 14035, -BCBIAS_J*4); + dasm_put(Dst, 14037, -BCBIAS_J*4); } - dasm_put(Dst, 9972); + dasm_put(Dst, 9974); break; case BC_LOOP: #if LJ_HASJIT - dasm_put(Dst, 13814, HOTCOUNT_PCMASK, GG_DISP2HOT); + dasm_put(Dst, 13816, HOTCOUNT_PCMASK, GG_DISP2HOT); #endif break; case BC_ILOOP: - dasm_put(Dst, 9670); + dasm_put(Dst, 9672); break; case BC_JLOOP: #if LJ_HASJIT - dasm_put(Dst, 14051, DISPATCH_J(trace), DtD(->mcode), DISPATCH_GL(jit_base), DISPATCH_GL(jit_L)); + dasm_put(Dst, 14053, DISPATCH_J(trace), DtD(->mcode), DISPATCH_GL(jit_base), DISPATCH_GL(jit_L)); #endif break; case BC_JMP: - dasm_put(Dst, 14092, -BCBIAS_J*4); + dasm_put(Dst, 14094, -BCBIAS_J*4); break; /* -- Function headers -------------------------------------------------- */ @@ -2208,7 +2214,7 @@ static void build_ins(BuildCtx *ctx, BCOp op, int defop, int cmov, int sse) case BC_FUNCF: #if LJ_HASJIT - dasm_put(Dst, 14118, HOTCOUNT_PCMASK, GG_DISP2HOT); + dasm_put(Dst, 14120, HOTCOUNT_PCMASK, GG_DISP2HOT); #endif case BC_FUNCV: /* NYI: compiled vararg functions. */ break; @@ -2218,13 +2224,13 @@ static void build_ins(BuildCtx *ctx, BCOp op, int defop, int cmov, int sse) break; #endif case BC_IFUNCF: - dasm_put(Dst, 14139, -4+PC2PROTO(k), Dt1(->maxstack), -4+PC2PROTO(numparams)); + dasm_put(Dst, 14141, -4+PC2PROTO(k), Dt1(->maxstack), -4+PC2PROTO(numparams)); if (op == BC_JFUNCF) { - dasm_put(Dst, 14170, BC_JLOOP); + dasm_put(Dst, 14172, BC_JLOOP); } else { - dasm_put(Dst, 9670); + dasm_put(Dst, 9672); } - dasm_put(Dst, 14179, LJ_TNIL); + dasm_put(Dst, 14181, LJ_TNIL); break; case BC_JFUNCV: @@ -2235,30 +2241,30 @@ static void build_ins(BuildCtx *ctx, BCOp op, int defop, int cmov, int sse) break; /* NYI: compiled vararg functions. */ case BC_IFUNCV: - dasm_put(Dst, 14201, FRAME_VARG, Dt1(->maxstack), -4+PC2PROTO(numparams), LJ_TNIL); + dasm_put(Dst, 14203, FRAME_VARG, Dt1(->maxstack), -4+PC2PROTO(numparams), LJ_TNIL); if (op == BC_JFUNCV) { - dasm_put(Dst, 14170, BC_JLOOP); + dasm_put(Dst, 14172, BC_JLOOP); } else { - dasm_put(Dst, 14298, -4+PC2PROTO(k)); + dasm_put(Dst, 14300, -4+PC2PROTO(k)); } - dasm_put(Dst, 14323, LJ_TNIL); + dasm_put(Dst, 14325, LJ_TNIL); break; case BC_FUNCC: case BC_FUNCCW: - dasm_put(Dst, 14345, Dt8(->f), Dt1(->base), 8*LUA_MINSTACK, Dt1(->maxstack), Dt1(->top)); + dasm_put(Dst, 14347, Dt8(->f), Dt1(->base), 8*LUA_MINSTACK, Dt1(->maxstack), Dt1(->top)); if (op == BC_FUNCC) { - dasm_put(Dst, 14375); + dasm_put(Dst, 14377); } else { - dasm_put(Dst, 14379); + dasm_put(Dst, 14381); } - dasm_put(Dst, 14387, DISPATCH_GL(vmstate), ~LJ_VMST_C); + dasm_put(Dst, 14389, DISPATCH_GL(vmstate), ~LJ_VMST_C); if (op == BC_FUNCC) { - dasm_put(Dst, 14397); + dasm_put(Dst, 14399); } else { - dasm_put(Dst, 14402, DISPATCH_GL(wrapf)); + dasm_put(Dst, 14404, DISPATCH_GL(wrapf)); } - dasm_put(Dst, 14408, DISPATCH_GL(vmstate), ~LJ_VMST_INTERP, Dt1(->base), Dt1(->top)); + dasm_put(Dst, 14410, DISPATCH_GL(vmstate), ~LJ_VMST_INTERP, Dt1(->base), Dt1(->top)); break; /* ---------------------------------------------------------------------- */ @@ -2286,7 +2292,7 @@ static int build_backend(BuildCtx *ctx) build_subroutines(ctx, cmov, sse); - dasm_put(Dst, 14434); + dasm_put(Dst, 14436); for (op = 0; op < BC__MAX; op++) build_ins(ctx, (BCOp)op, op, cmov, sse); diff --git a/src/buildvm_x64win.h b/src/buildvm_x64win.h index 19a703c8..a0cad3b6 100644 --- a/src/buildvm_x64win.h +++ b/src/buildvm_x64win.h @@ -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[14340] = { +static const unsigned char build_actionlist[14342] = { 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, @@ -472,244 +472,244 @@ static const unsigned char build_actionlist[14340] = { 2,221,216,195,248,1,221,225,223,224,252,246,196,1,15,133,244,248,217,201, 248,2,221,216,195,255,248,155,137,200,86,72,137,214,83,15,162,137,6,137,94, 4,137,78,8,137,86,12,91,94,195,248,156,255,85,72,137,229,83,72,137,203,139, - 131,233,72,41,196,15,182,139,233,131,252,233,1,15,136,244,248,248,1,72,139, - 132,253,203,233,72,137,132,253,204,233,131,252,233,1,15,137,244,1,248,2,15, - 182,131,233,72,139,139,233,72,139,147,233,76,139,131,233,76,139,139,233,133, - 192,15,132,244,251,15,40,131,233,15,40,139,233,15,40,147,233,255,15,40,155, - 233,248,5,252,255,147,233,72,137,131,233,15,41,131,233,72,139,93,252,248, - 201,195,255,129,124,253,202,4,239,15,135,244,41,129,124,253,194,4,239,15, - 135,244,41,255,252,242,15,16,4,194,131,198,4,102,15,46,4,202,255,221,4,202, - 221,4,194,131,198,4,255,223,252,233,221,216,255,218,252,233,223,224,158,255, - 15,134,244,248,255,15,131,244,248,255,248,1,15,183,70,252,254,141,180,253, - 134,233,248,2,139,6,15,182,204,15,182,232,131,198,4,193,232,16,252,255,36, - 252,235,255,139,108,194,4,131,198,4,129,252,253,239,15,135,244,251,129,124, - 253,202,4,239,15,135,244,251,255,252,242,15,16,4,194,102,15,46,4,202,255, - 221,4,202,221,4,194,255,15,138,244,248,15,133,244,248,255,15,138,244,248, - 15,132,244,247,255,248,1,15,183,70,252,254,141,180,253,134,233,248,2,255, - 248,2,15,183,70,252,254,141,180,253,134,233,248,1,255,248,5,57,108,202,4, - 15,133,244,2,129,252,253,239,15,131,244,1,139,12,202,139,4,194,57,193,15, - 132,244,1,129,252,253,239,15,135,244,2,139,169,233,133,252,237,15,132,244, - 2,252,246,133,233,235,15,133,244,2,255,49,252,237,255,189,1,0,0,0,255,252, - 233,244,45,255,72,252,247,208,131,198,4,129,124,253,202,4,239,15,133,244, - 248,139,12,202,59,12,135,255,131,198,4,129,124,253,202,4,239,15,135,244,248, - 255,252,242,15,16,4,199,102,15,46,4,202,255,221,4,202,221,4,199,255,72,252, - 247,208,131,198,4,57,68,202,4,255,139,108,194,4,131,198,4,129,252,253,239, - 255,15,131,244,247,255,15,130,244,247,255,137,108,202,4,139,44,194,137,44, - 202,255,15,183,70,252,254,141,180,253,134,233,248,1,139,6,15,182,204,15,182, - 232,131,198,4,193,232,16,252,255,36,252,235,255,72,139,44,194,72,137,44,202, - 139,6,15,182,204,15,182,232,131,198,4,193,232,16,252,255,36,252,235,255,49, - 252,237,129,124,253,194,4,239,129,213,239,137,108,202,4,139,6,15,182,204, - 15,182,232,131,198,4,193,232,16,252,255,36,252,235,255,129,124,253,194,4, - 239,15,135,244,48,255,252,242,15,16,4,194,72,184,237,237,102,72,15,110,200, - 15,87,193,252,242,15,17,4,202,255,221,4,194,217,224,221,28,202,255,129,124, - 253,194,4,239,15,133,244,248,139,4,194,255,15,87,192,252,242,15,42,128,233, - 248,1,252,242,15,17,4,202,255,219,128,233,248,1,221,28,202,255,139,6,15,182, - 204,15,182,232,131,198,4,193,232,16,252,255,36,252,235,248,2,129,124,253, - 194,4,239,15,133,244,50,139,12,194,137,213,232,251,1,18,255,252,242,15,42, - 192,137,252,234,255,15,182,78,252,253,252,233,244,1,255,15,182,252,236,15, - 182,192,255,129,124,253,252,234,4,239,15,135,244,46,255,252,242,15,16,4,252, - 234,252,242,15,88,4,199,255,221,4,252,234,220,4,199,255,129,124,253,252,234, - 4,239,15,135,244,47,255,252,242,15,16,4,199,252,242,15,88,4,252,234,255,221, - 4,199,220,4,252,234,255,129,124,253,252,234,4,239,15,135,244,49,129,124,253, - 194,4,239,15,135,244,49,255,252,242,15,16,4,252,234,252,242,15,88,4,194,255, - 221,4,252,234,220,4,194,255,252,242,15,16,4,252,234,252,242,15,92,4,199,255, - 221,4,252,234,220,36,199,255,252,242,15,16,4,199,252,242,15,92,4,252,234, - 255,221,4,199,220,36,252,234,255,252,242,15,16,4,252,234,252,242,15,92,4, - 194,255,221,4,252,234,220,36,194,255,252,242,15,16,4,252,234,252,242,15,89, - 4,199,255,221,4,252,234,220,12,199,255,252,242,15,16,4,199,252,242,15,89, - 4,252,234,255,221,4,199,220,12,252,234,255,252,242,15,16,4,252,234,252,242, - 15,89,4,194,255,221,4,252,234,220,12,194,255,252,242,15,16,4,252,234,252, - 242,15,94,4,199,255,221,4,252,234,220,52,199,255,252,242,15,16,4,199,252, - 242,15,94,4,252,234,255,221,4,199,220,52,252,234,255,252,242,15,16,4,252, - 234,252,242,15,94,4,194,255,221,4,252,234,220,52,194,255,252,242,15,16,4, - 252,234,252,242,15,16,12,199,255,221,4,252,234,221,4,199,255,252,242,15,16, - 4,199,252,242,15,16,12,252,234,255,221,4,199,221,4,252,234,255,252,242,15, - 16,4,252,234,252,242,15,16,12,194,255,221,4,252,234,221,4,194,255,248,157, - 232,244,148,255,252,233,244,157,255,232,244,107,255,15,182,252,236,15,182, - 192,139,76,36,96,137,145,233,141,20,194,65,137,192,65,41,232,248,33,137,205, - 137,116,36,100,232,251,1,25,139,149,233,133,192,15,133,244,42,15,182,110, - 252,255,15,182,78,252,253,72,139,4,252,234,72,137,4,202,139,6,15,182,204, - 15,182,232,131,198,4,193,232,16,252,255,36,252,235,255,72,252,247,208,139, - 4,135,199,68,202,4,237,137,4,202,139,6,15,182,204,15,182,232,131,198,4,193, - 232,16,252,255,36,252,235,255,15,191,192,252,242,15,42,192,252,242,15,17, - 4,202,255,223,70,252,254,221,28,202,255,252,242,15,16,4,199,252,242,15,17, - 4,202,255,221,4,199,221,28,202,255,72,252,247,208,137,68,202,4,139,6,15,182, - 204,15,182,232,131,198,4,193,232,16,252,255,36,252,235,255,141,76,202,12, - 141,68,194,4,189,237,137,105,252,248,248,1,137,41,131,193,8,57,193,15,134, - 244,1,139,6,15,182,204,15,182,232,131,198,4,193,232,16,252,255,36,252,235, - 255,139,106,252,248,139,172,253,133,233,139,173,233,72,139,69,0,72,137,4, - 202,139,6,15,182,204,15,182,232,131,198,4,193,232,16,252,255,36,252,235,255, - 139,106,252,248,139,172,253,141,233,128,189,233,0,139,173,233,139,12,194, - 139,68,194,4,137,77,0,137,69,4,15,132,244,247,252,246,133,233,235,15,133, - 244,248,248,1,139,6,15,182,204,15,182,232,131,198,4,193,232,16,252,255,36, - 252,235,248,2,129,232,239,129,252,248,239,15,134,244,1,252,246,129,233,235, - 15,132,244,1,135,213,141,139,233,255,232,251,1,26,137,252,234,252,233,244, - 1,255,72,252,247,208,139,106,252,248,139,172,253,141,233,139,12,135,139,133, - 233,137,8,199,64,4,237,252,246,133,233,235,15,133,244,248,248,1,139,6,15, - 182,204,15,182,232,131,198,4,193,232,16,252,255,36,252,235,248,2,252,246, - 129,233,235,15,132,244,1,128,189,233,0,15,132,244,1,137,213,137,194,141,139, - 233,232,251,1,26,137,252,234,252,233,244,1,255,139,106,252,248,255,252,242, - 15,16,4,199,255,139,172,253,141,233,139,141,233,255,252,242,15,17,1,255,221, - 25,255,72,252,247,208,139,106,252,248,139,172,253,141,233,139,141,233,137, - 65,4,139,6,15,182,204,15,182,232,131,198,4,193,232,16,252,255,36,252,235, - 255,141,180,253,134,233,139,108,36,96,131,189,233,0,15,132,244,247,137,149, - 233,141,20,202,137,252,233,232,251,1,27,139,149,233,248,1,139,6,15,182,204, - 15,182,232,131,198,4,193,232,16,252,255,36,252,235,255,72,252,247,208,139, - 108,36,96,137,149,233,68,139,66,252,248,139,20,135,137,252,233,137,116,36, - 100,232,251,1,28,139,149,233,15,182,78,252,253,137,4,202,199,68,202,4,237, - 139,6,15,182,204,15,182,232,131,198,4,193,232,16,252,255,36,252,235,255,139, - 108,36,96,137,149,233,139,139,233,59,139,233,137,116,36,100,15,131,244,251, - 248,1,65,137,192,37,252,255,7,0,0,65,193,232,11,61,252,255,7,0,0,15,132,244, - 249,248,2,137,252,233,137,194,232,251,1,29,139,149,233,15,182,78,252,253, - 137,4,202,199,68,202,4,237,139,6,15,182,204,15,182,232,131,198,4,193,232, - 16,252,255,36,252,235,248,3,184,1,8,0,0,252,233,244,2,248,5,137,252,233,232, - 251,1,30,15,183,70,252,254,252,233,244,1,255,72,252,247,208,139,108,36,96, - 139,139,233,137,116,36,100,59,139,233,137,149,233,15,131,244,249,248,2,139, - 20,135,137,252,233,232,251,1,31,139,149,233,15,182,78,252,253,137,4,202,199, - 68,202,4,237,139,6,15,182,204,15,182,232,131,198,4,193,232,16,252,255,36, - 252,235,248,3,137,252,233,232,251,1,30,15,183,70,252,254,72,252,247,208,252, - 233,244,2,255,72,252,247,208,139,106,252,248,139,173,233,139,4,135,252,233, - 244,158,255,72,252,247,208,139,106,252,248,139,173,233,139,4,135,252,233, - 244,159,255,15,182,252,236,15,182,192,129,124,253,252,234,4,239,15,133,244, - 36,139,44,252,234,129,124,253,194,4,239,15,135,244,251,255,252,242,15,16, - 4,194,252,242,15,45,192,252,242,15,42,200,102,15,46,193,255,15,133,244,36, - 59,133,233,15,131,244,36,193,224,3,3,133,233,129,120,253,4,239,15,132,244, - 248,72,139,40,72,137,44,202,248,1,139,6,15,182,204,15,182,232,131,198,4,193, - 232,16,252,255,36,252,235,248,2,131,189,233,0,15,132,244,249,139,141,233, - 252,246,129,233,235,15,132,244,36,15,182,78,252,253,248,3,255,199,68,202, - 4,237,252,233,244,1,248,5,129,124,253,194,4,239,15,133,244,36,139,4,194,252, - 233,244,158,255,15,182,252,236,15,182,192,72,252,247,208,139,4,135,129,124, - 253,252,234,4,239,15,133,244,34,139,44,252,234,248,158,139,141,233,35,136, - 233,105,201,239,3,141,233,248,1,129,185,233,239,15,133,244,250,57,129,233, - 15,133,244,250,129,121,253,4,239,15,132,244,251,15,182,70,252,253,72,139, - 41,72,137,44,194,248,2,255,139,6,15,182,204,15,182,232,131,198,4,193,232, - 16,252,255,36,252,235,248,3,15,182,70,252,253,199,68,194,4,237,252,233,244, - 2,248,4,139,137,233,133,201,15,133,244,1,248,5,139,141,233,133,201,15,132, - 244,3,252,246,129,233,235,15,133,244,3,252,233,244,34,255,15,182,252,236, - 15,182,192,129,124,253,252,234,4,239,15,133,244,35,139,44,252,234,59,133, - 233,15,131,244,35,193,224,3,3,133,233,129,120,253,4,239,15,132,244,248,72, - 139,40,72,137,44,202,248,1,139,6,15,182,204,15,182,232,131,198,4,193,232, - 16,252,255,36,252,235,248,2,131,189,233,0,15,132,244,249,139,141,233,252, - 246,129,233,235,15,132,244,35,255,15,182,78,252,253,248,3,199,68,202,4,237, - 252,233,244,1,255,15,182,252,236,15,182,192,129,124,253,252,234,4,239,15, - 133,244,39,139,44,252,234,129,124,253,194,4,239,15,135,244,251,255,15,133, - 244,39,59,133,233,15,131,244,39,193,224,3,3,133,233,129,120,253,4,239,15, - 132,244,249,248,1,252,246,133,233,235,15,133,244,253,248,2,72,139,44,202, - 72,137,40,139,6,15,182,204,15,182,232,131,198,4,193,232,16,252,255,36,252, - 235,248,3,131,189,233,0,15,132,244,1,139,141,233,255,252,246,129,233,235, - 15,132,244,39,15,182,78,252,253,252,233,244,1,248,5,129,124,253,194,4,239, - 15,133,244,39,139,4,194,252,233,244,159,248,7,128,165,233,235,139,139,233, - 137,171,233,137,141,233,15,182,78,252,253,252,233,244,2,255,15,182,252,236, - 15,182,192,72,252,247,208,139,4,135,129,124,253,252,234,4,239,15,133,244, - 37,139,44,252,234,248,159,139,141,233,35,136,233,105,201,239,198,133,233, - 0,3,141,233,248,1,129,185,233,239,15,133,244,251,57,129,233,15,133,244,251, - 129,121,253,4,239,15,132,244,250,248,2,255,252,246,133,233,235,15,133,244, - 253,248,3,15,182,70,252,253,72,139,44,194,72,137,41,139,6,15,182,204,15,182, - 232,131,198,4,193,232,16,252,255,36,252,235,248,4,131,189,233,0,15,132,244, - 2,137,76,36,80,139,141,233,252,246,129,233,235,15,132,244,37,139,76,36,80, - 252,233,244,2,248,5,139,137,233,133,201,15,133,244,1,255,139,141,233,133, - 201,15,132,244,252,252,246,129,233,235,15,132,244,37,248,6,137,68,36,80,199, - 68,36,84,237,137,108,36,32,139,76,36,96,137,145,233,76,141,68,36,80,137,252, - 234,137,205,137,116,36,100,232,251,1,32,139,149,233,139,108,36,32,137,193, - 252,233,244,2,248,7,128,165,233,235,139,131,233,137,171,233,137,133,233,252, - 233,244,3,255,15,182,252,236,15,182,192,129,124,253,252,234,4,239,15,133, - 244,38,139,44,252,234,59,133,233,15,131,244,38,193,224,3,3,133,233,129,120, + 131,233,72,41,196,255,15,182,139,233,131,252,233,1,15,136,244,248,248,1,72, + 139,132,253,203,233,72,137,132,253,204,233,131,252,233,1,15,137,244,1,248, + 2,15,182,131,233,72,139,139,233,72,139,147,233,76,139,131,233,76,139,139, + 233,133,192,15,132,244,251,15,40,131,233,15,40,139,233,15,40,147,233,15,40, + 155,233,248,5,255,252,255,147,233,72,137,131,233,15,41,131,233,255,72,139, + 93,252,248,201,195,255,129,124,253,202,4,239,15,135,244,41,129,124,253,194, + 4,239,15,135,244,41,255,252,242,15,16,4,194,131,198,4,102,15,46,4,202,255, + 221,4,202,221,4,194,131,198,4,255,223,252,233,221,216,255,218,252,233,223, + 224,158,255,15,134,244,248,255,15,131,244,248,255,248,1,15,183,70,252,254, + 141,180,253,134,233,248,2,139,6,15,182,204,15,182,232,131,198,4,193,232,16, + 252,255,36,252,235,255,139,108,194,4,131,198,4,129,252,253,239,15,135,244, + 251,129,124,253,202,4,239,15,135,244,251,255,252,242,15,16,4,194,102,15,46, + 4,202,255,221,4,202,221,4,194,255,15,138,244,248,15,133,244,248,255,15,138, + 244,248,15,132,244,247,255,248,1,15,183,70,252,254,141,180,253,134,233,248, + 2,255,248,2,15,183,70,252,254,141,180,253,134,233,248,1,255,248,5,57,108, + 202,4,15,133,244,2,129,252,253,239,15,131,244,1,139,12,202,139,4,194,57,193, + 15,132,244,1,129,252,253,239,15,135,244,2,139,169,233,133,252,237,15,132, + 244,2,252,246,133,233,235,15,133,244,2,255,49,252,237,255,189,1,0,0,0,255, + 252,233,244,45,255,72,252,247,208,131,198,4,129,124,253,202,4,239,15,133, + 244,248,139,12,202,59,12,135,255,131,198,4,129,124,253,202,4,239,15,135,244, + 248,255,252,242,15,16,4,199,102,15,46,4,202,255,221,4,202,221,4,199,255,72, + 252,247,208,131,198,4,57,68,202,4,255,139,108,194,4,131,198,4,129,252,253, + 239,255,15,131,244,247,255,15,130,244,247,255,137,108,202,4,139,44,194,137, + 44,202,255,15,183,70,252,254,141,180,253,134,233,248,1,139,6,15,182,204,15, + 182,232,131,198,4,193,232,16,252,255,36,252,235,255,72,139,44,194,72,137, + 44,202,139,6,15,182,204,15,182,232,131,198,4,193,232,16,252,255,36,252,235, + 255,49,252,237,129,124,253,194,4,239,129,213,239,137,108,202,4,139,6,15,182, + 204,15,182,232,131,198,4,193,232,16,252,255,36,252,235,255,129,124,253,194, + 4,239,15,135,244,48,255,252,242,15,16,4,194,72,184,237,237,102,72,15,110, + 200,15,87,193,252,242,15,17,4,202,255,221,4,194,217,224,221,28,202,255,129, + 124,253,194,4,239,15,133,244,248,139,4,194,255,15,87,192,252,242,15,42,128, + 233,248,1,252,242,15,17,4,202,255,219,128,233,248,1,221,28,202,255,139,6, + 15,182,204,15,182,232,131,198,4,193,232,16,252,255,36,252,235,248,2,129,124, + 253,194,4,239,15,133,244,50,139,12,194,137,213,232,251,1,18,255,252,242,15, + 42,192,137,252,234,255,15,182,78,252,253,252,233,244,1,255,15,182,252,236, + 15,182,192,255,129,124,253,252,234,4,239,15,135,244,46,255,252,242,15,16, + 4,252,234,252,242,15,88,4,199,255,221,4,252,234,220,4,199,255,129,124,253, + 252,234,4,239,15,135,244,47,255,252,242,15,16,4,199,252,242,15,88,4,252,234, + 255,221,4,199,220,4,252,234,255,129,124,253,252,234,4,239,15,135,244,49,129, + 124,253,194,4,239,15,135,244,49,255,252,242,15,16,4,252,234,252,242,15,88, + 4,194,255,221,4,252,234,220,4,194,255,252,242,15,16,4,252,234,252,242,15, + 92,4,199,255,221,4,252,234,220,36,199,255,252,242,15,16,4,199,252,242,15, + 92,4,252,234,255,221,4,199,220,36,252,234,255,252,242,15,16,4,252,234,252, + 242,15,92,4,194,255,221,4,252,234,220,36,194,255,252,242,15,16,4,252,234, + 252,242,15,89,4,199,255,221,4,252,234,220,12,199,255,252,242,15,16,4,199, + 252,242,15,89,4,252,234,255,221,4,199,220,12,252,234,255,252,242,15,16,4, + 252,234,252,242,15,89,4,194,255,221,4,252,234,220,12,194,255,252,242,15,16, + 4,252,234,252,242,15,94,4,199,255,221,4,252,234,220,52,199,255,252,242,15, + 16,4,199,252,242,15,94,4,252,234,255,221,4,199,220,52,252,234,255,252,242, + 15,16,4,252,234,252,242,15,94,4,194,255,221,4,252,234,220,52,194,255,252, + 242,15,16,4,252,234,252,242,15,16,12,199,255,221,4,252,234,221,4,199,255, + 252,242,15,16,4,199,252,242,15,16,12,252,234,255,221,4,199,221,4,252,234, + 255,252,242,15,16,4,252,234,252,242,15,16,12,194,255,221,4,252,234,221,4, + 194,255,248,157,232,244,148,255,252,233,244,157,255,232,244,107,255,15,182, + 252,236,15,182,192,139,76,36,96,137,145,233,141,20,194,65,137,192,65,41,232, + 248,33,137,205,137,116,36,100,232,251,1,25,139,149,233,133,192,15,133,244, + 42,15,182,110,252,255,15,182,78,252,253,72,139,4,252,234,72,137,4,202,139, + 6,15,182,204,15,182,232,131,198,4,193,232,16,252,255,36,252,235,255,72,252, + 247,208,139,4,135,199,68,202,4,237,137,4,202,139,6,15,182,204,15,182,232, + 131,198,4,193,232,16,252,255,36,252,235,255,15,191,192,252,242,15,42,192, + 252,242,15,17,4,202,255,223,70,252,254,221,28,202,255,252,242,15,16,4,199, + 252,242,15,17,4,202,255,221,4,199,221,28,202,255,72,252,247,208,137,68,202, + 4,139,6,15,182,204,15,182,232,131,198,4,193,232,16,252,255,36,252,235,255, + 141,76,202,12,141,68,194,4,189,237,137,105,252,248,248,1,137,41,131,193,8, + 57,193,15,134,244,1,139,6,15,182,204,15,182,232,131,198,4,193,232,16,252, + 255,36,252,235,255,139,106,252,248,139,172,253,133,233,139,173,233,72,139, + 69,0,72,137,4,202,139,6,15,182,204,15,182,232,131,198,4,193,232,16,252,255, + 36,252,235,255,139,106,252,248,139,172,253,141,233,128,189,233,0,139,173, + 233,139,12,194,139,68,194,4,137,77,0,137,69,4,15,132,244,247,252,246,133, + 233,235,15,133,244,248,248,1,139,6,15,182,204,15,182,232,131,198,4,193,232, + 16,252,255,36,252,235,248,2,129,232,239,129,252,248,239,15,134,244,1,252, + 246,129,233,235,15,132,244,1,135,213,141,139,233,255,232,251,1,26,137,252, + 234,252,233,244,1,255,72,252,247,208,139,106,252,248,139,172,253,141,233, + 139,12,135,139,133,233,137,8,199,64,4,237,252,246,133,233,235,15,133,244, + 248,248,1,139,6,15,182,204,15,182,232,131,198,4,193,232,16,252,255,36,252, + 235,248,2,252,246,129,233,235,15,132,244,1,128,189,233,0,15,132,244,1,137, + 213,137,194,141,139,233,232,251,1,26,137,252,234,252,233,244,1,255,139,106, + 252,248,255,252,242,15,16,4,199,255,139,172,253,141,233,139,141,233,255,252, + 242,15,17,1,255,221,25,255,72,252,247,208,139,106,252,248,139,172,253,141, + 233,139,141,233,137,65,4,139,6,15,182,204,15,182,232,131,198,4,193,232,16, + 252,255,36,252,235,255,141,180,253,134,233,139,108,36,96,131,189,233,0,15, + 132,244,247,137,149,233,141,20,202,137,252,233,232,251,1,27,139,149,233,248, + 1,139,6,15,182,204,15,182,232,131,198,4,193,232,16,252,255,36,252,235,255, + 72,252,247,208,139,108,36,96,137,149,233,68,139,66,252,248,139,20,135,137, + 252,233,137,116,36,100,232,251,1,28,139,149,233,15,182,78,252,253,137,4,202, + 199,68,202,4,237,139,6,15,182,204,15,182,232,131,198,4,193,232,16,252,255, + 36,252,235,255,139,108,36,96,137,149,233,139,139,233,59,139,233,137,116,36, + 100,15,131,244,251,248,1,65,137,192,37,252,255,7,0,0,65,193,232,11,61,252, + 255,7,0,0,15,132,244,249,248,2,137,252,233,137,194,232,251,1,29,139,149,233, + 15,182,78,252,253,137,4,202,199,68,202,4,237,139,6,15,182,204,15,182,232, + 131,198,4,193,232,16,252,255,36,252,235,248,3,184,1,8,0,0,252,233,244,2,248, + 5,137,252,233,232,251,1,30,15,183,70,252,254,252,233,244,1,255,72,252,247, + 208,139,108,36,96,139,139,233,137,116,36,100,59,139,233,137,149,233,15,131, + 244,249,248,2,139,20,135,137,252,233,232,251,1,31,139,149,233,15,182,78,252, + 253,137,4,202,199,68,202,4,237,139,6,15,182,204,15,182,232,131,198,4,193, + 232,16,252,255,36,252,235,248,3,137,252,233,232,251,1,30,15,183,70,252,254, + 72,252,247,208,252,233,244,2,255,72,252,247,208,139,106,252,248,139,173,233, + 139,4,135,252,233,244,158,255,72,252,247,208,139,106,252,248,139,173,233, + 139,4,135,252,233,244,159,255,15,182,252,236,15,182,192,129,124,253,252,234, + 4,239,15,133,244,36,139,44,252,234,129,124,253,194,4,239,15,135,244,251,255, + 252,242,15,16,4,194,252,242,15,45,192,252,242,15,42,200,102,15,46,193,255, + 15,133,244,36,59,133,233,15,131,244,36,193,224,3,3,133,233,129,120,253,4, + 239,15,132,244,248,72,139,40,72,137,44,202,248,1,139,6,15,182,204,15,182, + 232,131,198,4,193,232,16,252,255,36,252,235,248,2,131,189,233,0,15,132,244, + 249,139,141,233,252,246,129,233,235,15,132,244,36,15,182,78,252,253,248,3, + 255,199,68,202,4,237,252,233,244,1,248,5,129,124,253,194,4,239,15,133,244, + 36,139,4,194,252,233,244,158,255,15,182,252,236,15,182,192,72,252,247,208, + 139,4,135,129,124,253,252,234,4,239,15,133,244,34,139,44,252,234,248,158, + 139,141,233,35,136,233,105,201,239,3,141,233,248,1,129,185,233,239,15,133, + 244,250,57,129,233,15,133,244,250,129,121,253,4,239,15,132,244,251,15,182, + 70,252,253,72,139,41,72,137,44,194,248,2,255,139,6,15,182,204,15,182,232, + 131,198,4,193,232,16,252,255,36,252,235,248,3,15,182,70,252,253,199,68,194, + 4,237,252,233,244,2,248,4,139,137,233,133,201,15,133,244,1,248,5,139,141, + 233,133,201,15,132,244,3,252,246,129,233,235,15,133,244,3,252,233,244,34, + 255,15,182,252,236,15,182,192,129,124,253,252,234,4,239,15,133,244,35,139, + 44,252,234,59,133,233,15,131,244,35,193,224,3,3,133,233,129,120,253,4,239, + 15,132,244,248,72,139,40,72,137,44,202,248,1,139,6,15,182,204,15,182,232, + 131,198,4,193,232,16,252,255,36,252,235,248,2,131,189,233,0,15,132,244,249, + 139,141,233,252,246,129,233,235,15,132,244,35,255,15,182,78,252,253,248,3, + 199,68,202,4,237,252,233,244,1,255,15,182,252,236,15,182,192,129,124,253, + 252,234,4,239,15,133,244,39,139,44,252,234,129,124,253,194,4,239,15,135,244, + 251,255,15,133,244,39,59,133,233,15,131,244,39,193,224,3,3,133,233,129,120, 253,4,239,15,132,244,249,248,1,252,246,133,233,235,15,133,244,253,248,2,72, - 139,12,202,72,137,8,139,6,15,182,204,15,182,232,131,198,4,193,232,16,252, - 255,36,252,235,248,3,131,189,233,0,15,132,244,1,255,139,141,233,252,246,129, - 233,235,15,132,244,38,15,182,78,252,253,252,233,244,1,248,7,128,165,233,235, - 139,139,233,137,171,233,137,141,233,15,182,78,252,253,252,233,244,2,255,137, - 124,36,80,139,60,199,248,1,141,12,202,139,105,252,248,252,246,133,233,235, - 15,133,244,253,248,2,139,68,36,84,131,232,1,15,132,244,250,1,252,248,59,133, - 233,15,135,244,251,41,252,248,193,231,3,3,189,233,248,3,72,139,41,131,193, - 8,72,137,47,131,199,8,131,232,1,15,133,244,3,248,4,139,124,36,80,139,6,15, - 182,204,15,182,232,131,198,4,193,232,16,252,255,36,252,235,248,5,139,76,36, - 96,137,145,233,137,252,234,65,137,192,137,205,137,116,36,100,232,251,1,33, - 139,149,233,15,182,78,252,253,252,233,244,1,248,7,255,128,165,233,235,139, - 131,233,137,171,233,137,133,233,252,233,244,2,255,3,68,36,84,255,129,124, - 253,202,4,239,139,44,202,15,133,244,51,141,84,202,8,137,114,252,252,139,181, - 233,139,14,15,182,252,233,15,182,205,131,198,4,252,255,36,252,235,255,141, - 76,202,8,137,215,139,105,252,248,129,121,253,252,252,239,15,133,244,28,248, - 52,139,114,252,252,252,247,198,237,15,133,244,253,248,1,137,106,252,248,137, - 68,36,84,131,232,1,15,132,244,249,248,2,72,139,41,131,193,8,72,137,47,131, - 199,8,131,232,1,15,133,244,2,139,106,252,248,248,3,139,68,36,84,128,189,233, - 1,15,135,244,251,248,4,139,181,233,139,14,15,182,252,233,15,182,205,131,198, - 4,252,255,36,252,235,248,5,255,252,247,198,237,15,133,244,4,15,182,78,252, - 253,72,252,247,209,141,12,202,139,121,252,248,139,191,233,139,191,233,252, - 233,244,4,248,7,129,252,238,239,252,247,198,237,15,133,244,254,41,252,242, - 137,215,139,114,252,252,252,233,244,1,248,8,129,198,239,252,233,244,1,255, - 141,76,202,8,72,139,105,232,72,139,65,252,240,72,137,41,72,137,65,8,139,105, - 224,139,65,228,137,105,252,248,137,65,252,252,129,252,248,239,184,237,15, - 133,244,28,137,202,137,114,252,252,139,181,233,139,14,15,182,252,233,15,182, - 205,131,198,4,252,255,36,252,235,255,137,124,36,80,137,92,36,84,139,108,202, - 252,240,139,68,202,252,248,139,157,233,131,198,4,139,189,233,248,1,57,216, - 15,131,244,251,129,124,253,199,4,239,15,132,244,250,255,252,242,15,42,192, - 255,219,68,202,252,248,255,72,139,44,199,72,137,108,202,8,131,192,1,255,137, - 68,202,252,248,248,2,15,183,70,252,254,141,180,253,134,233,248,3,139,92,36, - 84,139,124,36,80,139,6,15,182,204,15,182,232,131,198,4,193,232,16,252,255, - 36,252,235,248,4,131,192,1,255,137,68,202,252,248,255,252,233,244,1,248,5, - 41,216,248,6,59,133,233,15,135,244,3,105,252,248,239,3,189,233,129,191,233, - 239,15,132,244,253,141,92,24,1,72,139,175,233,72,139,135,233,72,137,44,202, - 72,137,68,202,8,137,92,202,252,248,252,233,244,2,248,7,131,192,1,252,233, - 244,6,255,129,124,253,202,252,236,239,15,133,244,251,139,108,202,232,129, - 124,253,202,252,244,239,15,133,244,251,129,124,253,202,252,252,239,15,133, - 244,251,128,189,233,235,15,133,244,251,141,180,253,134,233,199,68,202,252, - 248,0,0,0,0,248,1,139,6,15,182,204,15,182,232,131,198,4,193,232,16,252,255, - 36,252,235,248,5,198,70,252,252,235,141,180,253,134,233,198,6,235,252,233, - 244,1,255,15,182,252,236,15,182,192,137,124,36,80,141,188,253,194,233,141, - 12,202,43,122,252,252,133,252,237,15,132,244,251,141,108,252,233,252,248, - 57,215,15,131,244,248,248,1,72,139,71,252,248,131,199,8,72,137,1,131,193, - 8,57,252,233,15,131,244,249,57,215,15,130,244,1,248,2,199,65,4,237,131,193, - 8,57,252,233,15,130,244,2,248,3,139,124,36,80,139,6,15,182,204,15,182,232, - 131,198,4,193,232,16,252,255,36,252,235,248,5,199,68,36,84,1,0,0,0,137,208, - 41,252,248,15,134,244,3,137,197,193,252,237,3,131,197,1,137,108,36,84,139, - 108,36,96,1,200,59,133,233,15,135,244,253,248,6,255,72,139,71,252,248,131, - 199,8,72,137,1,131,193,8,57,215,15,130,244,6,252,233,244,3,248,7,137,149, - 233,137,141,233,137,116,36,100,41,215,139,84,36,84,131,252,234,1,137,252, - 233,232,251,1,0,139,149,233,139,141,233,1,215,252,233,244,6,255,193,225,3, - 255,248,1,139,114,252,252,137,68,36,84,252,247,198,237,15,133,244,253,255, - 248,13,137,215,131,232,1,15,132,244,249,248,2,72,139,44,15,72,137,111,252, - 248,131,199,8,131,232,1,15,133,244,2,248,3,139,68,36,84,15,182,110,252,255, - 248,5,57,197,15,135,244,252,255,72,139,44,10,72,137,106,252,248,255,248,5, - 56,70,252,255,15,135,244,252,255,15,182,78,252,253,72,252,247,209,141,20, - 202,139,122,252,248,139,191,233,139,191,233,139,6,15,182,204,15,182,232,131, - 198,4,193,232,16,252,255,36,252,235,248,6,255,199,71,252,252,237,131,199, - 8,255,199,68,194,252,244,237,255,131,192,1,252,233,244,5,248,7,141,174,233, - 252,247,197,237,15,133,244,14,41,252,234,255,1,252,233,255,137,252,245,209, - 252,237,129,229,239,102,131,172,253,43,233,1,15,132,244,140,255,141,12,202, - 255,129,121,253,4,239,15,135,244,53,129,121,253,12,239,15,135,244,53,255, - 139,105,20,255,129,252,253,239,15,135,244,53,255,252,242,15,16,1,252,242, - 15,16,73,8,255,252,242,15,88,65,16,252,242,15,17,1,133,252,237,15,136,244, - 249,255,15,140,244,249,255,102,15,46,200,248,1,252,242,15,17,65,24,255,221, - 65,8,221,1,255,220,65,16,221,17,221,81,24,133,252,237,15,136,244,247,255, - 221,81,24,15,140,244,247,255,217,201,248,1,255,15,183,70,252,254,255,15,131, - 244,248,141,180,253,134,233,255,141,180,253,134,233,15,183,70,252,254,15, - 131,245,255,15,130,244,248,141,180,253,134,233,255,248,3,102,15,46,193,252, - 233,244,1,255,141,12,202,139,105,4,129,252,253,239,15,132,244,247,255,137, - 105,252,252,139,41,137,105,252,248,252,233,245,255,141,180,253,134,233,139, - 1,137,105,252,252,137,65,252,248,255,139,139,233,139,4,129,72,139,128,233, - 139,108,36,96,137,147,233,137,171,233,76,137,100,36,80,76,137,108,36,32,76, - 137,116,36,24,76,137,124,36,16,72,137,225,72,129,252,236,239,102,15,127,49, - 102,15,127,185,233,102,68,15,127,129,233,102,68,15,127,137,233,102,68,15, - 127,145,233,102,68,15,127,153,233,102,68,15,127,161,233,102,68,15,127,169, - 233,102,68,15,127,177,233,102,68,15,127,185,233,252,255,224,255,141,180,253, - 134,233,139,6,15,182,204,15,182,232,131,198,4,193,232,16,252,255,36,252,235, - 255,137,252,245,209,252,237,129,229,239,102,131,172,253,43,233,1,15,132,244, - 142,255,139,190,233,139,108,36,96,141,12,202,59,141,233,15,135,244,23,15, - 182,142,233,57,200,15,134,244,249,248,2,255,15,183,70,252,254,252,233,245, - 255,248,3,199,68,194,252,252,237,131,192,1,57,200,15,134,244,3,252,233,244, - 2,255,141,44,197,237,141,4,194,139,122,252,248,137,104,252,252,137,120,252, - 248,139,108,36,96,141,12,200,59,141,233,15,135,244,22,137,209,137,194,15, - 182,174,233,133,252,237,15,132,244,248,248,1,131,193,8,57,209,15,131,244, - 249,139,121,252,248,137,56,139,121,252,252,137,120,4,131,192,8,199,65,252, - 252,237,131,252,237,1,15,133,244,1,248,2,255,139,190,233,139,6,15,182,204, - 15,182,232,131,198,4,193,232,16,252,255,36,252,235,255,248,3,199,64,4,237, - 131,192,8,131,252,237,1,15,133,244,3,252,233,244,2,255,139,106,252,248,72, - 139,189,233,139,108,36,96,141,68,194,252,248,137,149,233,141,136,233,59,141, - 233,137,133,233,255,137,252,233,255,72,137,252,250,137,252,233,255,15,135, - 244,21,199,131,233,237,255,252,255,215,255,252,255,147,233,255,199,131,233, - 237,139,149,233,141,12,194,252,247,217,3,141,233,139,114,252,252,252,233, - 244,12,255,254,0 + 139,44,202,72,137,40,139,6,15,182,204,15,182,232,131,198,4,193,232,16,252, + 255,36,252,235,248,3,131,189,233,0,15,132,244,1,139,141,233,255,252,246,129, + 233,235,15,132,244,39,15,182,78,252,253,252,233,244,1,248,5,129,124,253,194, + 4,239,15,133,244,39,139,4,194,252,233,244,159,248,7,128,165,233,235,139,139, + 233,137,171,233,137,141,233,15,182,78,252,253,252,233,244,2,255,15,182,252, + 236,15,182,192,72,252,247,208,139,4,135,129,124,253,252,234,4,239,15,133, + 244,37,139,44,252,234,248,159,139,141,233,35,136,233,105,201,239,198,133, + 233,0,3,141,233,248,1,129,185,233,239,15,133,244,251,57,129,233,15,133,244, + 251,129,121,253,4,239,15,132,244,250,248,2,255,252,246,133,233,235,15,133, + 244,253,248,3,15,182,70,252,253,72,139,44,194,72,137,41,139,6,15,182,204, + 15,182,232,131,198,4,193,232,16,252,255,36,252,235,248,4,131,189,233,0,15, + 132,244,2,137,76,36,80,139,141,233,252,246,129,233,235,15,132,244,37,139, + 76,36,80,252,233,244,2,248,5,139,137,233,133,201,15,133,244,1,255,139,141, + 233,133,201,15,132,244,252,252,246,129,233,235,15,132,244,37,248,6,137,68, + 36,80,199,68,36,84,237,137,108,36,32,139,76,36,96,137,145,233,76,141,68,36, + 80,137,252,234,137,205,137,116,36,100,232,251,1,32,139,149,233,139,108,36, + 32,137,193,252,233,244,2,248,7,128,165,233,235,139,131,233,137,171,233,137, + 133,233,252,233,244,3,255,15,182,252,236,15,182,192,129,124,253,252,234,4, + 239,15,133,244,38,139,44,252,234,59,133,233,15,131,244,38,193,224,3,3,133, + 233,129,120,253,4,239,15,132,244,249,248,1,252,246,133,233,235,15,133,244, + 253,248,2,72,139,12,202,72,137,8,139,6,15,182,204,15,182,232,131,198,4,193, + 232,16,252,255,36,252,235,248,3,131,189,233,0,15,132,244,1,255,139,141,233, + 252,246,129,233,235,15,132,244,38,15,182,78,252,253,252,233,244,1,248,7,128, + 165,233,235,139,139,233,137,171,233,137,141,233,15,182,78,252,253,252,233, + 244,2,255,137,124,36,80,139,60,199,248,1,141,12,202,139,105,252,248,252,246, + 133,233,235,15,133,244,253,248,2,139,68,36,84,131,232,1,15,132,244,250,1, + 252,248,59,133,233,15,135,244,251,41,252,248,193,231,3,3,189,233,248,3,72, + 139,41,131,193,8,72,137,47,131,199,8,131,232,1,15,133,244,3,248,4,139,124, + 36,80,139,6,15,182,204,15,182,232,131,198,4,193,232,16,252,255,36,252,235, + 248,5,139,76,36,96,137,145,233,137,252,234,65,137,192,137,205,137,116,36, + 100,232,251,1,33,139,149,233,15,182,78,252,253,252,233,244,1,248,7,255,128, + 165,233,235,139,131,233,137,171,233,137,133,233,252,233,244,2,255,3,68,36, + 84,255,129,124,253,202,4,239,139,44,202,15,133,244,51,141,84,202,8,137,114, + 252,252,139,181,233,139,14,15,182,252,233,15,182,205,131,198,4,252,255,36, + 252,235,255,141,76,202,8,137,215,139,105,252,248,129,121,253,252,252,239, + 15,133,244,28,248,52,139,114,252,252,252,247,198,237,15,133,244,253,248,1, + 137,106,252,248,137,68,36,84,131,232,1,15,132,244,249,248,2,72,139,41,131, + 193,8,72,137,47,131,199,8,131,232,1,15,133,244,2,139,106,252,248,248,3,139, + 68,36,84,128,189,233,1,15,135,244,251,248,4,139,181,233,139,14,15,182,252, + 233,15,182,205,131,198,4,252,255,36,252,235,248,5,255,252,247,198,237,15, + 133,244,4,15,182,78,252,253,72,252,247,209,141,12,202,139,121,252,248,139, + 191,233,139,191,233,252,233,244,4,248,7,129,252,238,239,252,247,198,237,15, + 133,244,254,41,252,242,137,215,139,114,252,252,252,233,244,1,248,8,129,198, + 239,252,233,244,1,255,141,76,202,8,72,139,105,232,72,139,65,252,240,72,137, + 41,72,137,65,8,139,105,224,139,65,228,137,105,252,248,137,65,252,252,129, + 252,248,239,184,237,15,133,244,28,137,202,137,114,252,252,139,181,233,139, + 14,15,182,252,233,15,182,205,131,198,4,252,255,36,252,235,255,137,124,36, + 80,137,92,36,84,139,108,202,252,240,139,68,202,252,248,139,157,233,131,198, + 4,139,189,233,248,1,57,216,15,131,244,251,129,124,253,199,4,239,15,132,244, + 250,255,252,242,15,42,192,255,219,68,202,252,248,255,72,139,44,199,72,137, + 108,202,8,131,192,1,255,137,68,202,252,248,248,2,15,183,70,252,254,141,180, + 253,134,233,248,3,139,92,36,84,139,124,36,80,139,6,15,182,204,15,182,232, + 131,198,4,193,232,16,252,255,36,252,235,248,4,131,192,1,255,137,68,202,252, + 248,255,252,233,244,1,248,5,41,216,248,6,59,133,233,15,135,244,3,105,252, + 248,239,3,189,233,129,191,233,239,15,132,244,253,141,92,24,1,72,139,175,233, + 72,139,135,233,72,137,44,202,72,137,68,202,8,137,92,202,252,248,252,233,244, + 2,248,7,131,192,1,252,233,244,6,255,129,124,253,202,252,236,239,15,133,244, + 251,139,108,202,232,129,124,253,202,252,244,239,15,133,244,251,129,124,253, + 202,252,252,239,15,133,244,251,128,189,233,235,15,133,244,251,141,180,253, + 134,233,199,68,202,252,248,0,0,0,0,248,1,139,6,15,182,204,15,182,232,131, + 198,4,193,232,16,252,255,36,252,235,248,5,198,70,252,252,235,141,180,253, + 134,233,198,6,235,252,233,244,1,255,15,182,252,236,15,182,192,137,124,36, + 80,141,188,253,194,233,141,12,202,43,122,252,252,133,252,237,15,132,244,251, + 141,108,252,233,252,248,57,215,15,131,244,248,248,1,72,139,71,252,248,131, + 199,8,72,137,1,131,193,8,57,252,233,15,131,244,249,57,215,15,130,244,1,248, + 2,199,65,4,237,131,193,8,57,252,233,15,130,244,2,248,3,139,124,36,80,139, + 6,15,182,204,15,182,232,131,198,4,193,232,16,252,255,36,252,235,248,5,199, + 68,36,84,1,0,0,0,137,208,41,252,248,15,134,244,3,137,197,193,252,237,3,131, + 197,1,137,108,36,84,139,108,36,96,1,200,59,133,233,15,135,244,253,248,6,255, + 72,139,71,252,248,131,199,8,72,137,1,131,193,8,57,215,15,130,244,6,252,233, + 244,3,248,7,137,149,233,137,141,233,137,116,36,100,41,215,139,84,36,84,131, + 252,234,1,137,252,233,232,251,1,0,139,149,233,139,141,233,1,215,252,233,244, + 6,255,193,225,3,255,248,1,139,114,252,252,137,68,36,84,252,247,198,237,15, + 133,244,253,255,248,13,137,215,131,232,1,15,132,244,249,248,2,72,139,44,15, + 72,137,111,252,248,131,199,8,131,232,1,15,133,244,2,248,3,139,68,36,84,15, + 182,110,252,255,248,5,57,197,15,135,244,252,255,72,139,44,10,72,137,106,252, + 248,255,248,5,56,70,252,255,15,135,244,252,255,15,182,78,252,253,72,252,247, + 209,141,20,202,139,122,252,248,139,191,233,139,191,233,139,6,15,182,204,15, + 182,232,131,198,4,193,232,16,252,255,36,252,235,248,6,255,199,71,252,252, + 237,131,199,8,255,199,68,194,252,244,237,255,131,192,1,252,233,244,5,248, + 7,141,174,233,252,247,197,237,15,133,244,14,41,252,234,255,1,252,233,255, + 137,252,245,209,252,237,129,229,239,102,131,172,253,43,233,1,15,132,244,140, + 255,141,12,202,255,129,121,253,4,239,15,135,244,53,129,121,253,12,239,15, + 135,244,53,255,139,105,20,255,129,252,253,239,15,135,244,53,255,252,242,15, + 16,1,252,242,15,16,73,8,255,252,242,15,88,65,16,252,242,15,17,1,133,252,237, + 15,136,244,249,255,15,140,244,249,255,102,15,46,200,248,1,252,242,15,17,65, + 24,255,221,65,8,221,1,255,220,65,16,221,17,221,81,24,133,252,237,15,136,244, + 247,255,221,81,24,15,140,244,247,255,217,201,248,1,255,15,183,70,252,254, + 255,15,131,244,248,141,180,253,134,233,255,141,180,253,134,233,15,183,70, + 252,254,15,131,245,255,15,130,244,248,141,180,253,134,233,255,248,3,102,15, + 46,193,252,233,244,1,255,141,12,202,139,105,4,129,252,253,239,15,132,244, + 247,255,137,105,252,252,139,41,137,105,252,248,252,233,245,255,141,180,253, + 134,233,139,1,137,105,252,252,137,65,252,248,255,139,139,233,139,4,129,72, + 139,128,233,139,108,36,96,137,147,233,137,171,233,76,137,100,36,80,76,137, + 108,36,32,76,137,116,36,24,76,137,124,36,16,72,137,225,72,129,252,236,239, + 102,15,127,49,102,15,127,185,233,102,68,15,127,129,233,102,68,15,127,137, + 233,102,68,15,127,145,233,102,68,15,127,153,233,102,68,15,127,161,233,102, + 68,15,127,169,233,102,68,15,127,177,233,102,68,15,127,185,233,252,255,224, + 255,141,180,253,134,233,139,6,15,182,204,15,182,232,131,198,4,193,232,16, + 252,255,36,252,235,255,137,252,245,209,252,237,129,229,239,102,131,172,253, + 43,233,1,15,132,244,142,255,139,190,233,139,108,36,96,141,12,202,59,141,233, + 15,135,244,23,15,182,142,233,57,200,15,134,244,249,248,2,255,15,183,70,252, + 254,252,233,245,255,248,3,199,68,194,252,252,237,131,192,1,57,200,15,134, + 244,3,252,233,244,2,255,141,44,197,237,141,4,194,139,122,252,248,137,104, + 252,252,137,120,252,248,139,108,36,96,141,12,200,59,141,233,15,135,244,22, + 137,209,137,194,15,182,174,233,133,252,237,15,132,244,248,248,1,131,193,8, + 57,209,15,131,244,249,139,121,252,248,137,56,139,121,252,252,137,120,4,131, + 192,8,199,65,252,252,237,131,252,237,1,15,133,244,1,248,2,255,139,190,233, + 139,6,15,182,204,15,182,232,131,198,4,193,232,16,252,255,36,252,235,255,248, + 3,199,64,4,237,131,192,8,131,252,237,1,15,133,244,3,252,233,244,2,255,139, + 106,252,248,72,139,189,233,139,108,36,96,141,68,194,252,248,137,149,233,141, + 136,233,59,141,233,137,133,233,255,137,252,233,255,72,137,252,250,137,252, + 233,255,15,135,244,21,199,131,233,237,255,252,255,215,255,252,255,147,233, + 255,199,131,233,237,139,149,233,141,12,194,252,247,217,3,141,233,139,114, + 252,252,252,233,244,12,255,254,0 }; enum { @@ -1455,8 +1455,14 @@ static void build_subroutines(BuildCtx *ctx, int cmov, int sse) dasm_put(Dst, 9413); #if LJ_HASFFI #define DtE(_V) (int)(ptrdiff_t)&(((CCallState *)0)_V) - dasm_put(Dst, 9441, DtE(->spadj), DtE(->nsp), offsetof(CCallState, stack), CCALL_SPS_EXTRA*8, DtE(->nfpr), DtE(->gpr[0]), DtE(->gpr[1]), DtE(->gpr[2]), DtE(->gpr[3]), DtE(->fpr[0]), DtE(->fpr[1]), DtE(->fpr[2])); - dasm_put(Dst, 9530, DtE(->fpr[3]), DtE(->func), DtE(->gpr[0]), DtE(->fpr[0])); + dasm_put(Dst, 9441, DtE(->spadj)); +#if LJ_TARGET_WINDOWS +#endif + dasm_put(Dst, 9456, DtE(->nsp), offsetof(CCallState, stack), CCALL_SPS_EXTRA*8, DtE(->nfpr), DtE(->gpr[0]), DtE(->gpr[1]), DtE(->gpr[2]), DtE(->gpr[3]), DtE(->fpr[0]), DtE(->fpr[1]), DtE(->fpr[2]), DtE(->fpr[3])); + dasm_put(Dst, 9537, DtE(->func), DtE(->gpr[0]), DtE(->fpr[0])); +#if LJ_TARGET_WINDOWS +#endif + dasm_put(Dst, 9550); #endif } @@ -1473,20 +1479,20 @@ 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, 9556, LJ_TISNUM, LJ_TISNUM); + dasm_put(Dst, 9558, LJ_TISNUM, LJ_TISNUM); if (sse) { - dasm_put(Dst, 9577); + dasm_put(Dst, 9579); } else { - dasm_put(Dst, 9592); + dasm_put(Dst, 9594); if (cmov) { - dasm_put(Dst, 9602); + dasm_put(Dst, 9604); } else { - dasm_put(Dst, 9608); + dasm_put(Dst, 9610); } } switch (op) { case BC_ISLT: - dasm_put(Dst, 9615); + dasm_put(Dst, 9617); break; case BC_ISGE: dasm_put(Dst, 9293); @@ -1495,599 +1501,599 @@ static void build_ins(BuildCtx *ctx, BCOp op, int defop, int cmov, int sse) dasm_put(Dst, 5854); break; case BC_ISGT: - dasm_put(Dst, 9620); + dasm_put(Dst, 9622); break; default: break; /* Shut up GCC. */ } - dasm_put(Dst, 9625, -BCBIAS_J*4); + dasm_put(Dst, 9627, -BCBIAS_J*4); break; case BC_ISEQV: case BC_ISNEV: vk = op == BC_ISEQV; - dasm_put(Dst, 9659, LJ_TISNUM, LJ_TISNUM); + dasm_put(Dst, 9661, LJ_TISNUM, LJ_TISNUM); if (sse) { - dasm_put(Dst, 9685); + dasm_put(Dst, 9687); } else { - dasm_put(Dst, 9697); + dasm_put(Dst, 9699); if (cmov) { - dasm_put(Dst, 9602); + dasm_put(Dst, 9604); } else { - dasm_put(Dst, 9608); + dasm_put(Dst, 9610); } } iseqne_fp: if (vk) { - dasm_put(Dst, 9704); + dasm_put(Dst, 9706); } else { - dasm_put(Dst, 9713); + dasm_put(Dst, 9715); } iseqne_end: if (vk) { - dasm_put(Dst, 9722, -BCBIAS_J*4); + dasm_put(Dst, 9724, -BCBIAS_J*4); } else { - dasm_put(Dst, 9737, -BCBIAS_J*4); + dasm_put(Dst, 9739, -BCBIAS_J*4); } - dasm_put(Dst, 9639); + dasm_put(Dst, 9641); if (op == BC_ISEQV || op == BC_ISNEV) { - dasm_put(Dst, 9752, LJ_TISPRI, LJ_TISTABUD, Dt6(->metatable), Dt6(->nomm), 1<metatable), Dt6(->nomm), 1<>32)); + dasm_put(Dst, 10036, (unsigned int)(U64x(80000000,00000000)), (unsigned int)((U64x(80000000,00000000))>>32)); } else { - dasm_put(Dst, 10059); + dasm_put(Dst, 10061); } - dasm_put(Dst, 9639); + dasm_put(Dst, 9641); break; case BC_LEN: - dasm_put(Dst, 10068, LJ_TSTR); + dasm_put(Dst, 10070, LJ_TSTR); if (sse) { - dasm_put(Dst, 10082, Dt5(->len)); + dasm_put(Dst, 10084, Dt5(->len)); } else { - dasm_put(Dst, 10100, Dt5(->len)); + dasm_put(Dst, 10102, Dt5(->len)); } - dasm_put(Dst, 10109, LJ_TTAB); + dasm_put(Dst, 10111, LJ_TTAB); if (sse) { - dasm_put(Dst, 10150); + dasm_put(Dst, 10152); } else { } - dasm_put(Dst, 10159); + dasm_put(Dst, 10161); break; /* -- Binary ops -------------------------------------------------------- */ case BC_ADDVN: case BC_ADDNV: case BC_ADDVV: - dasm_put(Dst, 10169); + dasm_put(Dst, 10171); vk = ((int)op - BC_ADDVN) / (BC_ADDNV-BC_ADDVN); switch (vk) { case 0: - dasm_put(Dst, 10177, LJ_TISNUM); + dasm_put(Dst, 10179, LJ_TISNUM); if (sse) { - dasm_put(Dst, 10189); + dasm_put(Dst, 10191); } else { - dasm_put(Dst, 10203); + dasm_put(Dst, 10205); } break; case 1: - dasm_put(Dst, 10211, LJ_TISNUM); + dasm_put(Dst, 10213, LJ_TISNUM); if (sse) { - dasm_put(Dst, 10223); + dasm_put(Dst, 10225); } else { - dasm_put(Dst, 10237); + dasm_put(Dst, 10239); } break; default: - dasm_put(Dst, 10245, LJ_TISNUM, LJ_TISNUM); + dasm_put(Dst, 10247, LJ_TISNUM, LJ_TISNUM); if (sse) { - dasm_put(Dst, 10267); + dasm_put(Dst, 10269); } else { - dasm_put(Dst, 10281); + dasm_put(Dst, 10283); } break; } if (sse) { - dasm_put(Dst, 10052); + dasm_put(Dst, 10054); } else { - dasm_put(Dst, 10064); + dasm_put(Dst, 10066); } - dasm_put(Dst, 9639); + dasm_put(Dst, 9641); break; case BC_SUBVN: case BC_SUBNV: case BC_SUBVV: - dasm_put(Dst, 10169); + dasm_put(Dst, 10171); vk = ((int)op - BC_ADDVN) / (BC_ADDNV-BC_ADDVN); switch (vk) { case 0: - dasm_put(Dst, 10177, LJ_TISNUM); + dasm_put(Dst, 10179, LJ_TISNUM); if (sse) { - dasm_put(Dst, 10289); + dasm_put(Dst, 10291); } else { - dasm_put(Dst, 10303); + dasm_put(Dst, 10305); } break; case 1: - dasm_put(Dst, 10211, LJ_TISNUM); + dasm_put(Dst, 10213, LJ_TISNUM); if (sse) { - dasm_put(Dst, 10311); + dasm_put(Dst, 10313); } else { - dasm_put(Dst, 10325); + dasm_put(Dst, 10327); } break; default: - dasm_put(Dst, 10245, LJ_TISNUM, LJ_TISNUM); + dasm_put(Dst, 10247, LJ_TISNUM, LJ_TISNUM); if (sse) { - dasm_put(Dst, 10333); + dasm_put(Dst, 10335); } else { - dasm_put(Dst, 10347); + dasm_put(Dst, 10349); } break; } if (sse) { - dasm_put(Dst, 10052); + dasm_put(Dst, 10054); } else { - dasm_put(Dst, 10064); + dasm_put(Dst, 10066); } - dasm_put(Dst, 9639); + dasm_put(Dst, 9641); break; case BC_MULVN: case BC_MULNV: case BC_MULVV: - dasm_put(Dst, 10169); + dasm_put(Dst, 10171); vk = ((int)op - BC_ADDVN) / (BC_ADDNV-BC_ADDVN); switch (vk) { case 0: - dasm_put(Dst, 10177, LJ_TISNUM); + dasm_put(Dst, 10179, LJ_TISNUM); if (sse) { - dasm_put(Dst, 10355); + dasm_put(Dst, 10357); } else { - dasm_put(Dst, 10369); + dasm_put(Dst, 10371); } break; case 1: - dasm_put(Dst, 10211, LJ_TISNUM); + dasm_put(Dst, 10213, LJ_TISNUM); if (sse) { - dasm_put(Dst, 10377); + dasm_put(Dst, 10379); } else { - dasm_put(Dst, 10391); + dasm_put(Dst, 10393); } break; default: - dasm_put(Dst, 10245, LJ_TISNUM, LJ_TISNUM); + dasm_put(Dst, 10247, LJ_TISNUM, LJ_TISNUM); if (sse) { - dasm_put(Dst, 10399); + dasm_put(Dst, 10401); } else { - dasm_put(Dst, 10413); + dasm_put(Dst, 10415); } break; } if (sse) { - dasm_put(Dst, 10052); + dasm_put(Dst, 10054); } else { - dasm_put(Dst, 10064); + dasm_put(Dst, 10066); } - dasm_put(Dst, 9639); + dasm_put(Dst, 9641); break; case BC_DIVVN: case BC_DIVNV: case BC_DIVVV: - dasm_put(Dst, 10169); + dasm_put(Dst, 10171); vk = ((int)op - BC_ADDVN) / (BC_ADDNV-BC_ADDVN); switch (vk) { case 0: - dasm_put(Dst, 10177, LJ_TISNUM); + dasm_put(Dst, 10179, LJ_TISNUM); if (sse) { - dasm_put(Dst, 10421); + dasm_put(Dst, 10423); } else { - dasm_put(Dst, 10435); + dasm_put(Dst, 10437); } break; case 1: - dasm_put(Dst, 10211, LJ_TISNUM); + dasm_put(Dst, 10213, LJ_TISNUM); if (sse) { - dasm_put(Dst, 10443); + dasm_put(Dst, 10445); } else { - dasm_put(Dst, 10457); + dasm_put(Dst, 10459); } break; default: - dasm_put(Dst, 10245, LJ_TISNUM, LJ_TISNUM); + dasm_put(Dst, 10247, LJ_TISNUM, LJ_TISNUM); if (sse) { - dasm_put(Dst, 10465); + dasm_put(Dst, 10467); } else { - dasm_put(Dst, 10479); + dasm_put(Dst, 10481); } break; } if (sse) { - dasm_put(Dst, 10052); + dasm_put(Dst, 10054); } else { - dasm_put(Dst, 10064); + dasm_put(Dst, 10066); } - dasm_put(Dst, 9639); + dasm_put(Dst, 9641); break; case BC_MODVN: - dasm_put(Dst, 10169); + dasm_put(Dst, 10171); vk = ((int)op - BC_ADDVN) / (BC_ADDNV-BC_ADDVN); switch (vk) { case 0: - dasm_put(Dst, 10177, LJ_TISNUM); + dasm_put(Dst, 10179, LJ_TISNUM); if (sse) { - dasm_put(Dst, 10487); + dasm_put(Dst, 10489); } else { - dasm_put(Dst, 10501); + dasm_put(Dst, 10503); } break; case 1: - dasm_put(Dst, 10211, LJ_TISNUM); + dasm_put(Dst, 10213, LJ_TISNUM); if (sse) { - dasm_put(Dst, 10509); + dasm_put(Dst, 10511); } else { - dasm_put(Dst, 10523); + dasm_put(Dst, 10525); } break; default: - dasm_put(Dst, 10245, LJ_TISNUM, LJ_TISNUM); + dasm_put(Dst, 10247, LJ_TISNUM, LJ_TISNUM); if (sse) { - dasm_put(Dst, 10531); + dasm_put(Dst, 10533); } else { - dasm_put(Dst, 10545); + dasm_put(Dst, 10547); } break; } - dasm_put(Dst, 10553); + dasm_put(Dst, 10555); if (sse) { - dasm_put(Dst, 10052); + dasm_put(Dst, 10054); } else { - dasm_put(Dst, 10064); + dasm_put(Dst, 10066); } - dasm_put(Dst, 9639); + dasm_put(Dst, 9641); break; case BC_MODNV: case BC_MODVV: - dasm_put(Dst, 10169); + dasm_put(Dst, 10171); vk = ((int)op - BC_ADDVN) / (BC_ADDNV-BC_ADDVN); switch (vk) { case 0: - dasm_put(Dst, 10177, LJ_TISNUM); + dasm_put(Dst, 10179, LJ_TISNUM); if (sse) { - dasm_put(Dst, 10487); + dasm_put(Dst, 10489); } else { - dasm_put(Dst, 10501); + dasm_put(Dst, 10503); } break; case 1: - dasm_put(Dst, 10211, LJ_TISNUM); + dasm_put(Dst, 10213, LJ_TISNUM); if (sse) { - dasm_put(Dst, 10509); + dasm_put(Dst, 10511); } else { - dasm_put(Dst, 10523); + dasm_put(Dst, 10525); } break; default: - dasm_put(Dst, 10245, LJ_TISNUM, LJ_TISNUM); + dasm_put(Dst, 10247, LJ_TISNUM, LJ_TISNUM); if (sse) { - dasm_put(Dst, 10531); + dasm_put(Dst, 10533); } else { - dasm_put(Dst, 10545); + dasm_put(Dst, 10547); } break; } - dasm_put(Dst, 10559); + dasm_put(Dst, 10561); break; case BC_POW: - dasm_put(Dst, 10169); + dasm_put(Dst, 10171); vk = ((int)op - BC_ADDVN) / (BC_ADDNV-BC_ADDVN); switch (vk) { case 0: - dasm_put(Dst, 10177, LJ_TISNUM); + dasm_put(Dst, 10179, LJ_TISNUM); if (sse) { - dasm_put(Dst, 10487); + dasm_put(Dst, 10489); } else { - dasm_put(Dst, 10501); + dasm_put(Dst, 10503); } break; case 1: - dasm_put(Dst, 10211, LJ_TISNUM); + dasm_put(Dst, 10213, LJ_TISNUM); if (sse) { - dasm_put(Dst, 10509); + dasm_put(Dst, 10511); } else { - dasm_put(Dst, 10523); + dasm_put(Dst, 10525); } break; default: - dasm_put(Dst, 10245, LJ_TISNUM, LJ_TISNUM); + dasm_put(Dst, 10247, LJ_TISNUM, LJ_TISNUM); if (sse) { - dasm_put(Dst, 10531); + dasm_put(Dst, 10533); } else { - dasm_put(Dst, 10545); + dasm_put(Dst, 10547); } break; } - dasm_put(Dst, 10564); + dasm_put(Dst, 10566); if (sse) { - dasm_put(Dst, 10052); + dasm_put(Dst, 10054); } else { - dasm_put(Dst, 10064); + dasm_put(Dst, 10066); } - dasm_put(Dst, 9639); + dasm_put(Dst, 9641); break; case BC_CAT: - dasm_put(Dst, 10568, Dt1(->base), Dt1(->base)); + dasm_put(Dst, 10570, Dt1(->base), Dt1(->base)); break; /* -- Constant ops ------------------------------------------------------ */ case BC_KSTR: - dasm_put(Dst, 10651, LJ_TSTR); + dasm_put(Dst, 10653, LJ_TSTR); break; case BC_KCDATA: #if LJ_HASFFI - dasm_put(Dst, 10651, LJ_TCDATA); + dasm_put(Dst, 10653, LJ_TCDATA); #endif break; case BC_KSHORT: if (sse) { - dasm_put(Dst, 10686); + dasm_put(Dst, 10688); } else { - dasm_put(Dst, 10701); + dasm_put(Dst, 10703); } - dasm_put(Dst, 9639); + dasm_put(Dst, 9641); break; case BC_KNUM: if (sse) { - dasm_put(Dst, 10709); + dasm_put(Dst, 10711); } else { - dasm_put(Dst, 10722); + dasm_put(Dst, 10724); } - dasm_put(Dst, 9639); + dasm_put(Dst, 9641); break; case BC_KPRI: - dasm_put(Dst, 10729); + dasm_put(Dst, 10731); break; case BC_KNIL: - dasm_put(Dst, 10757, LJ_TNIL); + dasm_put(Dst, 10759, LJ_TNIL); break; /* -- Upvalue and function ops ------------------------------------------ */ case BC_UGET: - dasm_put(Dst, 10804, offsetof(GCfuncL, uvptr), DtA(->v)); + dasm_put(Dst, 10806, offsetof(GCfuncL, uvptr), DtA(->v)); break; case BC_USETV: #define TV2MARKOFS \ ((int32_t)offsetof(GCupval, marked)-(int32_t)offsetof(GCupval, tv)) - dasm_put(Dst, 10844, 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, 10935); + dasm_put(Dst, 10846, 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, 10937); break; #undef TV2MARKOFS case BC_USETS: - dasm_put(Dst, 10947, 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, 10949, 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, 11040); + dasm_put(Dst, 11042); if (sse) { - dasm_put(Dst, 11045); + dasm_put(Dst, 11047); } else { - dasm_put(Dst, 9878); + dasm_put(Dst, 9880); } - dasm_put(Dst, 11052, offsetof(GCfuncL, uvptr), DtA(->v)); + dasm_put(Dst, 11054, offsetof(GCfuncL, uvptr), DtA(->v)); if (sse) { - dasm_put(Dst, 11061); + dasm_put(Dst, 11063); } else { - dasm_put(Dst, 11067); + dasm_put(Dst, 11069); } - dasm_put(Dst, 9639); + dasm_put(Dst, 9641); break; case BC_USETP: - dasm_put(Dst, 11070, offsetof(GCfuncL, uvptr), DtA(->v)); + dasm_put(Dst, 11072, offsetof(GCfuncL, uvptr), DtA(->v)); break; case BC_UCLO: - dasm_put(Dst, 11109, -BCBIAS_J*4, Dt1(->openupval), Dt1(->base), Dt1(->base)); + dasm_put(Dst, 11111, -BCBIAS_J*4, Dt1(->openupval), Dt1(->base), Dt1(->base)); break; case BC_FNEW: - dasm_put(Dst, 11164, Dt1(->base), Dt1(->base), LJ_TFUNC); + dasm_put(Dst, 11166, Dt1(->base), Dt1(->base), LJ_TFUNC); break; /* -- Table ops --------------------------------------------------------- */ case BC_TNEW: - dasm_put(Dst, 11230, Dt1(->base), DISPATCH_GL(gc.total), DISPATCH_GL(gc.threshold), Dt1(->base), LJ_TTAB); + dasm_put(Dst, 11232, Dt1(->base), DISPATCH_GL(gc.total), DISPATCH_GL(gc.threshold), Dt1(->base), LJ_TTAB); break; case BC_TDUP: - dasm_put(Dst, 11352, DISPATCH_GL(gc.total), DISPATCH_GL(gc.threshold), Dt1(->base), Dt1(->base), LJ_TTAB); + dasm_put(Dst, 11354, DISPATCH_GL(gc.total), DISPATCH_GL(gc.threshold), Dt1(->base), Dt1(->base), LJ_TTAB); break; case BC_GGET: - dasm_put(Dst, 11447, Dt7(->env)); + dasm_put(Dst, 11449, Dt7(->env)); break; case BC_GSET: - dasm_put(Dst, 11466, Dt7(->env)); + dasm_put(Dst, 11468, Dt7(->env)); break; case BC_TGETV: - dasm_put(Dst, 11485, LJ_TTAB, LJ_TISNUM); + dasm_put(Dst, 11487, LJ_TTAB, LJ_TISNUM); if (sse) { - dasm_put(Dst, 11518); + dasm_put(Dst, 11520); } else { } - dasm_put(Dst, 11539, Dt6(->asize), Dt6(->array), LJ_TNIL, Dt6(->metatable), Dt6(->metatable), Dt6(->nomm), 1<asize), Dt6(->array), LJ_TNIL, Dt6(->metatable), Dt6(->metatable), Dt6(->nomm), 1<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<hmask), Dt5(->hash), sizeof(Node), Dt6(->node), DtB(->key.it), LJ_TSTR, DtB(->key.gcr), LJ_TNIL); + dasm_put(Dst, 11738, LJ_TNIL, DtB(->next), Dt6(->metatable), Dt6(->nomm), 1<asize), Dt6(->array), LJ_TNIL, Dt6(->metatable), Dt6(->metatable), Dt6(->nomm), 1<asize), Dt6(->array), LJ_TNIL, Dt6(->metatable), Dt6(->metatable), Dt6(->nomm), 1<asize), Dt6(->array), LJ_TNIL, Dt6(->marked), LJ_GC_BLACK, Dt6(->metatable), Dt6(->metatable)); - dasm_put(Dst, 12031, Dt6(->nomm), 1<marked), cast_byte(~LJ_GC_BLACK), DISPATCH_GL(gc.grayagain), DISPATCH_GL(gc.grayagain), Dt6(->gclist)); + dasm_put(Dst, 11954, Dt6(->asize), Dt6(->array), LJ_TNIL, Dt6(->marked), LJ_GC_BLACK, Dt6(->metatable), Dt6(->metatable)); + dasm_put(Dst, 12033, Dt6(->nomm), 1<marked), cast_byte(~LJ_GC_BLACK), DISPATCH_GL(gc.grayagain), DISPATCH_GL(gc.grayagain), Dt6(->gclist)); break; case BC_TSETS: - 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, 12169, Dt6(->marked), LJ_GC_BLACK, Dt6(->metatable), Dt6(->metatable), Dt6(->nomm), 1<next)); - dasm_put(Dst, 12257, Dt6(->metatable), Dt6(->nomm), 1<base), Dt1(->base), Dt6(->marked), cast_byte(~LJ_GC_BLACK), DISPATCH_GL(gc.grayagain), DISPATCH_GL(gc.grayagain), Dt6(->gclist)); + dasm_put(Dst, 12095, 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, 12171, Dt6(->marked), LJ_GC_BLACK, Dt6(->metatable), Dt6(->metatable), Dt6(->nomm), 1<next)); + dasm_put(Dst, 12259, Dt6(->metatable), Dt6(->nomm), 1<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, 12348, LJ_TTAB, Dt6(->asize), Dt6(->array), LJ_TNIL, Dt6(->marked), LJ_GC_BLACK, Dt6(->metatable)); - dasm_put(Dst, 12442, Dt6(->metatable), Dt6(->nomm), 1<marked), cast_byte(~LJ_GC_BLACK), DISPATCH_GL(gc.grayagain), DISPATCH_GL(gc.grayagain), Dt6(->gclist)); + dasm_put(Dst, 12350, LJ_TTAB, Dt6(->asize), Dt6(->array), LJ_TNIL, Dt6(->marked), LJ_GC_BLACK, Dt6(->metatable)); + dasm_put(Dst, 12444, Dt6(->metatable), Dt6(->nomm), 1<marked), cast_byte(~LJ_GC_BLACK), DISPATCH_GL(gc.grayagain), DISPATCH_GL(gc.grayagain), Dt6(->gclist)); break; case BC_TSETM: - dasm_put(Dst, 12488, Dt6(->marked), LJ_GC_BLACK, Dt6(->asize), Dt6(->array), Dt1(->base), Dt1(->base)); - dasm_put(Dst, 12631, Dt6(->marked), cast_byte(~LJ_GC_BLACK), DISPATCH_GL(gc.grayagain), DISPATCH_GL(gc.grayagain), Dt6(->gclist)); + dasm_put(Dst, 12490, Dt6(->marked), LJ_GC_BLACK, Dt6(->asize), Dt6(->array), Dt1(->base), Dt1(->base)); + dasm_put(Dst, 12633, 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, 10173); + dasm_put(Dst, 10175); if (op == BC_CALLM) { - dasm_put(Dst, 12649); + dasm_put(Dst, 12651); } - dasm_put(Dst, 12654, LJ_TFUNC, Dt7(->pc)); + dasm_put(Dst, 12656, LJ_TFUNC, Dt7(->pc)); break; case BC_CALLMT: - dasm_put(Dst, 12649); + dasm_put(Dst, 12651); break; case BC_CALLT: - dasm_put(Dst, 12696, LJ_TFUNC, FRAME_TYPE, Dt7(->ffid), Dt7(->pc)); - dasm_put(Dst, 12811, FRAME_TYPE, Dt7(->pc), PC2PROTO(k), FRAME_VARG, FRAME_TYPEP, FRAME_VARG); + dasm_put(Dst, 12698, LJ_TFUNC, FRAME_TYPE, Dt7(->ffid), Dt7(->pc)); + dasm_put(Dst, 12813, FRAME_TYPE, Dt7(->pc), PC2PROTO(k), FRAME_VARG, FRAME_TYPEP, FRAME_VARG); break; case BC_ITERC: - dasm_put(Dst, 12882, LJ_TFUNC, 2+1, Dt7(->pc)); + dasm_put(Dst, 12884, LJ_TFUNC, 2+1, Dt7(->pc)); break; case BC_ITERN: #if LJ_HASJIT #endif - dasm_put(Dst, 12953, Dt6(->asize), Dt6(->array), LJ_TNIL); + dasm_put(Dst, 12955, Dt6(->asize), Dt6(->array), LJ_TNIL); if (sse) { - dasm_put(Dst, 12999); + dasm_put(Dst, 13001); } else { - dasm_put(Dst, 13005); + dasm_put(Dst, 13007); } - dasm_put(Dst, 13011); + dasm_put(Dst, 13013); if (sse) { - dasm_put(Dst, 10052); + dasm_put(Dst, 10054); } else { - dasm_put(Dst, 10064); + dasm_put(Dst, 10066); } - dasm_put(Dst, 13024, -BCBIAS_J*4); + dasm_put(Dst, 13026, -BCBIAS_J*4); if (!sse) { - dasm_put(Dst, 13076); + dasm_put(Dst, 13078); } - dasm_put(Dst, 13082, Dt6(->hmask), sizeof(Node), Dt6(->node), DtB(->val.it), LJ_TNIL, DtB(->key), DtB(->val)); + dasm_put(Dst, 13084, Dt6(->hmask), sizeof(Node), Dt6(->node), DtB(->val.it), LJ_TNIL, DtB(->key), DtB(->val)); break; case BC_ISNEXT: - dasm_put(Dst, 13154, LJ_TFUNC, LJ_TTAB, LJ_TNIL, Dt8(->ffid), FF_next_N, -BCBIAS_J*4, BC_JMP, -BCBIAS_J*4, BC_ITERC); + dasm_put(Dst, 13156, LJ_TFUNC, LJ_TTAB, LJ_TNIL, Dt8(->ffid), FF_next_N, -BCBIAS_J*4, BC_JMP, -BCBIAS_J*4, BC_ITERC); break; case BC_VARG: - dasm_put(Dst, 13254, (8+FRAME_VARG), LJ_TNIL, Dt1(->maxstack)); - dasm_put(Dst, 13414, Dt1(->base), Dt1(->top), Dt1(->base), Dt1(->top)); + dasm_put(Dst, 13256, (8+FRAME_VARG), LJ_TNIL, Dt1(->maxstack)); + dasm_put(Dst, 13416, Dt1(->base), Dt1(->top), Dt1(->base), Dt1(->top)); break; /* -- Returns ----------------------------------------------------------- */ case BC_RETM: - dasm_put(Dst, 12649); + dasm_put(Dst, 12651); break; case BC_RET: case BC_RET0: case BC_RET1: if (op != BC_RET0) { - dasm_put(Dst, 13480); + dasm_put(Dst, 13482); } - dasm_put(Dst, 13484, FRAME_TYPE); + dasm_put(Dst, 13486, FRAME_TYPE); switch (op) { case BC_RET: - dasm_put(Dst, 13503); + dasm_put(Dst, 13505); break; case BC_RET1: - dasm_put(Dst, 13555); + dasm_put(Dst, 13557); /* fallthrough */ case BC_RET0: - dasm_put(Dst, 13565); + dasm_put(Dst, 13567); default: break; } - dasm_put(Dst, 13576, Dt7(->pc), PC2PROTO(k)); + dasm_put(Dst, 13578, Dt7(->pc), PC2PROTO(k)); if (op == BC_RET) { - dasm_put(Dst, 13620, LJ_TNIL); + dasm_put(Dst, 13622, LJ_TNIL); } else { - dasm_put(Dst, 13629, LJ_TNIL); + dasm_put(Dst, 13631, LJ_TNIL); } - dasm_put(Dst, 13636, -FRAME_VARG, FRAME_TYPEP); + dasm_put(Dst, 13638, -FRAME_VARG, FRAME_TYPEP); if (op != BC_RET0) { - dasm_put(Dst, 13660); + dasm_put(Dst, 13662); } dasm_put(Dst, 4522); break; @@ -2097,7 +2103,7 @@ static void build_ins(BuildCtx *ctx, BCOp op, int defop, int cmov, int sse) case BC_FORL: #if LJ_HASJIT - dasm_put(Dst, 13664, HOTCOUNT_PCMASK, GG_DISP2HOT); + dasm_put(Dst, 13666, HOTCOUNT_PCMASK, GG_DISP2HOT); #endif break; @@ -2109,57 +2115,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, 13685); + dasm_put(Dst, 13687); if (!vk) { - dasm_put(Dst, 13689, LJ_TISNUM, LJ_TISNUM); + dasm_put(Dst, 13691, LJ_TISNUM, LJ_TISNUM); } - dasm_put(Dst, 13708); + dasm_put(Dst, 13710); if (!vk) { - dasm_put(Dst, 13712, LJ_TISNUM); + dasm_put(Dst, 13714, LJ_TISNUM); } if (sse) { - dasm_put(Dst, 13721); + dasm_put(Dst, 13723); if (vk) { - dasm_put(Dst, 13733); + dasm_put(Dst, 13735); } else { - dasm_put(Dst, 13752); + dasm_put(Dst, 13754); } - dasm_put(Dst, 13757); + dasm_put(Dst, 13759); } else { - dasm_put(Dst, 13770); + dasm_put(Dst, 13772); if (vk) { - dasm_put(Dst, 13776); + dasm_put(Dst, 13778); } else { - dasm_put(Dst, 13792); + dasm_put(Dst, 13794); } - dasm_put(Dst, 13800); + dasm_put(Dst, 13802); if (cmov) { - dasm_put(Dst, 9602); + dasm_put(Dst, 9604); } else { - dasm_put(Dst, 9608); + dasm_put(Dst, 9610); } if (!cmov) { - dasm_put(Dst, 13805); + dasm_put(Dst, 13807); } } if (op == BC_FORI) { - dasm_put(Dst, 13811, -BCBIAS_J*4); + dasm_put(Dst, 13813, -BCBIAS_J*4); } else if (op == BC_JFORI) { - dasm_put(Dst, 13821, -BCBIAS_J*4, BC_JLOOP); + dasm_put(Dst, 13823, -BCBIAS_J*4, BC_JLOOP); } else if (op == BC_IFORL) { - dasm_put(Dst, 13835, -BCBIAS_J*4); + dasm_put(Dst, 13837, -BCBIAS_J*4); } else { - dasm_put(Dst, 13831, BC_JLOOP); + dasm_put(Dst, 13833, BC_JLOOP); } - dasm_put(Dst, 9637); + dasm_put(Dst, 9639); if (sse) { - dasm_put(Dst, 13845); + dasm_put(Dst, 13847); } break; case BC_ITERL: #if LJ_HASJIT - dasm_put(Dst, 13664, HOTCOUNT_PCMASK, GG_DISP2HOT); + dasm_put(Dst, 13666, HOTCOUNT_PCMASK, GG_DISP2HOT); #endif break; @@ -2168,33 +2174,33 @@ static void build_ins(BuildCtx *ctx, BCOp op, int defop, int cmov, int sse) break; #endif case BC_IITERL: - dasm_put(Dst, 13856, LJ_TNIL); + dasm_put(Dst, 13858, LJ_TNIL); if (op == BC_JITERL) { - dasm_put(Dst, 13871, BC_JLOOP); + dasm_put(Dst, 13873, BC_JLOOP); } else { - dasm_put(Dst, 13885, -BCBIAS_J*4); + dasm_put(Dst, 13887, -BCBIAS_J*4); } - dasm_put(Dst, 9937); + dasm_put(Dst, 9939); break; case BC_LOOP: #if LJ_HASJIT - dasm_put(Dst, 13664, HOTCOUNT_PCMASK, GG_DISP2HOT); + dasm_put(Dst, 13666, HOTCOUNT_PCMASK, GG_DISP2HOT); #endif break; case BC_ILOOP: - dasm_put(Dst, 9639); + dasm_put(Dst, 9641); break; case BC_JLOOP: #if LJ_HASJIT - dasm_put(Dst, 13901, 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, 13903, 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, 14010, -BCBIAS_J*4); + dasm_put(Dst, 14012, -BCBIAS_J*4); break; /* -- Function headers -------------------------------------------------- */ @@ -2208,7 +2214,7 @@ static void build_ins(BuildCtx *ctx, BCOp op, int defop, int cmov, int sse) case BC_FUNCF: #if LJ_HASJIT - dasm_put(Dst, 14035, HOTCOUNT_PCMASK, GG_DISP2HOT); + dasm_put(Dst, 14037, HOTCOUNT_PCMASK, GG_DISP2HOT); #endif case BC_FUNCV: /* NYI: compiled vararg functions. */ break; @@ -2218,13 +2224,13 @@ static void build_ins(BuildCtx *ctx, BCOp op, int defop, int cmov, int sse) break; #endif case BC_IFUNCF: - dasm_put(Dst, 14056, -4+PC2PROTO(k), Dt1(->maxstack), -4+PC2PROTO(numparams)); + dasm_put(Dst, 14058, -4+PC2PROTO(k), Dt1(->maxstack), -4+PC2PROTO(numparams)); if (op == BC_JFUNCF) { - dasm_put(Dst, 14086, BC_JLOOP); + dasm_put(Dst, 14088, BC_JLOOP); } else { - dasm_put(Dst, 9639); + dasm_put(Dst, 9641); } - dasm_put(Dst, 14095, LJ_TNIL); + dasm_put(Dst, 14097, LJ_TNIL); break; case BC_JFUNCV: @@ -2235,30 +2241,30 @@ static void build_ins(BuildCtx *ctx, BCOp op, int defop, int cmov, int sse) break; /* NYI: compiled vararg functions. */ case BC_IFUNCV: - dasm_put(Dst, 14117, FRAME_VARG, Dt1(->maxstack), -4+PC2PROTO(numparams), LJ_TNIL); + dasm_put(Dst, 14119, FRAME_VARG, Dt1(->maxstack), -4+PC2PROTO(numparams), LJ_TNIL); if (op == BC_JFUNCV) { - dasm_put(Dst, 14086, BC_JLOOP); + dasm_put(Dst, 14088, BC_JLOOP); } else { - dasm_put(Dst, 14208, -4+PC2PROTO(k)); + dasm_put(Dst, 14210, -4+PC2PROTO(k)); } - dasm_put(Dst, 14231, LJ_TNIL); + dasm_put(Dst, 14233, LJ_TNIL); break; case BC_FUNCC: case BC_FUNCCW: - dasm_put(Dst, 14253, Dt8(->f), Dt1(->base), 8*LUA_MINSTACK, Dt1(->maxstack), Dt1(->top)); + dasm_put(Dst, 14255, Dt8(->f), Dt1(->base), 8*LUA_MINSTACK, Dt1(->maxstack), Dt1(->top)); if (op == BC_FUNCC) { - dasm_put(Dst, 14283); + dasm_put(Dst, 14285); } else { - dasm_put(Dst, 14287); + dasm_put(Dst, 14289); } - dasm_put(Dst, 14295, DISPATCH_GL(vmstate), ~LJ_VMST_C); + dasm_put(Dst, 14297, DISPATCH_GL(vmstate), ~LJ_VMST_C); if (op == BC_FUNCC) { - dasm_put(Dst, 14304); + dasm_put(Dst, 14306); } else { - dasm_put(Dst, 14308, DISPATCH_GL(wrapf)); + dasm_put(Dst, 14310, DISPATCH_GL(wrapf)); } - dasm_put(Dst, 14313, DISPATCH_GL(vmstate), ~LJ_VMST_INTERP, Dt1(->base), Dt1(->top)); + dasm_put(Dst, 14315, DISPATCH_GL(vmstate), ~LJ_VMST_INTERP, Dt1(->base), Dt1(->top)); break; /* ---------------------------------------------------------------------- */ @@ -2286,7 +2292,7 @@ static int build_backend(BuildCtx *ctx) build_subroutines(ctx, cmov, sse); - dasm_put(Dst, 14338); + dasm_put(Dst, 14340); for (op = 0; op < BC__MAX; op++) build_ins(ctx, (BCOp)op, op, cmov, sse); diff --git a/src/buildvm_x86.dasc b/src/buildvm_x86.dasc index e88039b9..9666dfca 100644 --- a/src/buildvm_x86.dasc +++ b/src/buildvm_x86.dasc @@ -3428,6 +3428,9 @@ static void build_subroutines(BuildCtx *ctx, int cmov, int sse) | sub rsp, rax |.else | sub esp, CCSTATE->spadj +#if LJ_TARGET_WINDOWS + | mov CCSTATE->spadj, esp +#endif |.endif | | // Copy stack slots. @@ -3494,6 +3497,9 @@ static void build_subroutines(BuildCtx *ctx, int cmov, int sse) |6: | fstp dword CCSTATE->fpr[0].f[0] |7: +#if LJ_TARGET_WINDOWS + | sub CCSTATE->spadj, esp +#endif |.endif | |.if X64 diff --git a/src/buildvm_x86.h b/src/buildvm_x86.h index 4d1aa660..ef8ba886 100644 --- a/src/buildvm_x86.h +++ b/src/buildvm_x86.h @@ -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[15684] = { +static const unsigned char build_actionlist[15694] = { 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, @@ -533,149 +533,150 @@ static const unsigned char build_actionlist[15684] = { 244,248,217,201,248,2,221,216,195,255,248,155,156,90,137,209,129,252,242, 0,0,32,0,82,157,156,90,49,192,57,209,15,132,244,247,139,68,36,4,87,83,15, 162,139,124,36,16,137,7,137,95,4,137,79,8,137,87,12,91,95,248,1,195,248,156, - 255,85,137,229,83,137,203,43,163,233,15,182,139,233,131,252,233,1,15,136, - 244,248,248,1,139,132,253,139,233,137,4,140,131,252,233,1,15,137,244,1,248, - 2,139,139,233,139,147,233,252,255,147,233,137,131,233,137,147,233,128,187, - 233,1,15,130,244,253,15,132,244,252,221,155,233,255,252,233,244,253,248,6, - 217,155,233,248,7,139,93,252,252,201,195,255,249,255,129,124,253,202,4,239, - 15,135,244,41,129,124,253,194,4,239,15,135,244,41,255,252,242,15,16,4,194, - 131,198,4,102,15,46,4,202,255,221,4,202,221,4,194,131,198,4,255,223,252,233, - 221,216,255,218,252,233,223,224,158,255,15,134,244,248,255,15,131,244,248, - 255,248,1,15,183,70,252,254,141,180,253,134,233,248,2,139,6,15,182,204,15, - 182,232,131,198,4,193,232,16,252,255,36,171,255,139,108,194,4,131,198,4,129, - 252,253,239,15,135,244,251,129,124,253,202,4,239,15,135,244,251,255,252,242, - 15,16,4,194,102,15,46,4,202,255,221,4,202,221,4,194,255,15,138,244,248,15, - 133,244,248,255,15,138,244,248,15,132,244,247,255,248,1,15,183,70,252,254, - 141,180,253,134,233,248,2,255,248,2,15,183,70,252,254,141,180,253,134,233, - 248,1,255,248,5,57,108,202,4,15,133,244,2,129,252,253,239,15,131,244,1,139, - 12,202,139,4,194,57,193,15,132,244,1,129,252,253,239,15,135,244,2,139,169, - 233,133,252,237,15,132,244,2,252,246,133,233,235,15,133,244,2,255,49,252, - 237,255,189,1,0,0,0,255,252,233,244,45,255,252,247,208,131,198,4,129,124, - 253,202,4,239,15,133,244,248,139,12,202,59,12,135,255,131,198,4,129,124,253, - 202,4,239,15,135,244,248,255,252,242,15,16,4,199,102,15,46,4,202,255,221, - 4,202,221,4,199,255,252,247,208,131,198,4,57,68,202,4,255,139,108,194,4,131, - 198,4,129,252,253,239,255,15,131,244,247,255,15,130,244,247,255,137,108,202, - 4,139,44,194,137,44,202,255,15,183,70,252,254,141,180,253,134,233,248,1,139, - 6,15,182,204,15,182,232,131,198,4,193,232,16,252,255,36,171,255,139,108,194, - 4,139,4,194,137,108,202,4,137,4,202,139,6,15,182,204,15,182,232,131,198,4, - 193,232,16,252,255,36,171,255,49,252,237,129,124,253,194,4,239,129,213,239, - 137,108,202,4,139,6,15,182,204,15,182,232,131,198,4,193,232,16,252,255,36, - 171,255,129,124,253,194,4,239,15,135,244,48,255,252,242,15,16,4,194,184,0, - 0,0,128,102,15,110,200,102,15,112,201,81,15,87,193,252,242,15,17,4,202,255, - 221,4,194,217,224,221,28,202,255,129,124,253,194,4,239,15,133,244,248,139, - 4,194,255,15,87,192,252,242,15,42,128,233,248,1,252,242,15,17,4,202,255,219, - 128,233,248,1,221,28,202,255,139,6,15,182,204,15,182,232,131,198,4,193,232, - 16,252,255,36,171,248,2,129,124,253,194,4,239,15,133,244,50,139,12,194,137, - 213,232,251,1,18,255,252,242,15,42,192,137,252,234,255,137,4,36,137,252,234, - 219,4,36,255,15,182,78,252,253,252,233,244,1,255,15,182,252,236,15,182,192, - 255,129,124,253,252,234,4,239,15,135,244,46,255,252,242,15,16,4,252,234,252, - 242,15,88,4,199,255,221,4,252,234,220,4,199,255,129,124,253,252,234,4,239, - 15,135,244,47,255,252,242,15,16,4,199,252,242,15,88,4,252,234,255,221,4,199, - 220,4,252,234,255,129,124,253,252,234,4,239,15,135,244,49,129,124,253,194, - 4,239,15,135,244,49,255,252,242,15,16,4,252,234,252,242,15,88,4,194,255,221, - 4,252,234,220,4,194,255,252,242,15,16,4,252,234,252,242,15,92,4,199,255,221, - 4,252,234,220,36,199,255,252,242,15,16,4,199,252,242,15,92,4,252,234,255, - 221,4,199,220,36,252,234,255,252,242,15,16,4,252,234,252,242,15,92,4,194, - 255,221,4,252,234,220,36,194,255,252,242,15,16,4,252,234,252,242,15,89,4, - 199,255,221,4,252,234,220,12,199,255,252,242,15,16,4,199,252,242,15,89,4, - 252,234,255,221,4,199,220,12,252,234,255,252,242,15,16,4,252,234,252,242, - 15,89,4,194,255,221,4,252,234,220,12,194,255,252,242,15,16,4,252,234,252, - 242,15,94,4,199,255,221,4,252,234,220,52,199,255,252,242,15,16,4,199,252, - 242,15,94,4,252,234,255,221,4,199,220,52,252,234,255,252,242,15,16,4,252, - 234,252,242,15,94,4,194,255,221,4,252,234,220,52,194,255,252,242,15,16,4, - 252,234,252,242,15,16,12,199,255,221,4,252,234,221,4,199,255,252,242,15,16, - 4,199,252,242,15,16,12,252,234,255,221,4,199,221,4,252,234,255,252,242,15, - 16,4,252,234,252,242,15,16,12,194,255,221,4,252,234,221,4,194,255,248,157, - 232,244,148,255,252,233,244,157,255,232,244,107,255,15,182,252,236,15,182, - 192,141,12,194,41,232,137,76,36,4,137,68,36,8,248,33,139,108,36,48,137,44, - 36,137,149,233,137,116,36,24,232,251,1,25,139,149,233,133,192,15,133,244, - 42,15,182,110,252,255,15,182,78,252,253,139,68,252,234,4,139,44,252,234,137, - 68,202,4,137,44,202,139,6,15,182,204,15,182,232,131,198,4,193,232,16,252, - 255,36,171,255,252,247,208,139,4,135,199,68,202,4,237,137,4,202,139,6,15, - 182,204,15,182,232,131,198,4,193,232,16,252,255,36,171,255,15,191,192,252, - 242,15,42,192,252,242,15,17,4,202,255,223,70,252,254,221,28,202,255,252,242, - 15,16,4,199,252,242,15,17,4,202,255,221,4,199,221,28,202,255,252,247,208, - 137,68,202,4,139,6,15,182,204,15,182,232,131,198,4,193,232,16,252,255,36, - 171,255,141,76,202,12,141,68,194,4,189,237,137,105,252,248,248,1,137,41,131, - 193,8,57,193,15,134,244,1,139,6,15,182,204,15,182,232,131,198,4,193,232,16, - 252,255,36,171,255,139,106,252,248,139,172,253,133,233,139,173,233,139,69, - 4,139,109,0,137,68,202,4,137,44,202,139,6,15,182,204,15,182,232,131,198,4, - 193,232,16,252,255,36,171,255,139,106,252,248,139,172,253,141,233,128,189, - 233,0,139,173,233,139,12,194,139,68,194,4,137,77,0,137,69,4,15,132,244,247, - 252,246,133,233,235,15,133,244,248,248,1,139,6,15,182,204,15,182,232,131, - 198,4,193,232,16,252,255,36,171,248,2,129,232,239,129,252,248,239,15,134, - 244,1,252,246,129,233,235,15,132,244,1,135,213,141,139,233,255,232,251,1, - 26,137,252,234,252,233,244,1,255,252,247,208,139,106,252,248,139,172,253, - 141,233,139,12,135,139,133,233,137,8,199,64,4,237,252,246,133,233,235,15, - 133,244,248,248,1,139,6,15,182,204,15,182,232,131,198,4,193,232,16,252,255, - 36,171,248,2,252,246,129,233,235,15,132,244,1,128,189,233,0,15,132,244,1, - 137,213,137,194,141,139,233,232,251,1,26,137,252,234,252,233,244,1,255,139, - 106,252,248,255,252,242,15,16,4,199,255,139,172,253,141,233,139,141,233,255, - 252,242,15,17,1,255,221,25,255,252,247,208,139,106,252,248,139,172,253,141, - 233,139,141,233,137,65,4,139,6,15,182,204,15,182,232,131,198,4,193,232,16, - 252,255,36,171,255,141,180,253,134,233,139,108,36,48,131,189,233,0,15,132, - 244,247,137,149,233,141,20,202,137,252,233,232,251,1,27,139,149,233,248,1, - 139,6,15,182,204,15,182,232,131,198,4,193,232,16,252,255,36,171,255,252,247, - 208,139,74,252,248,139,4,135,139,108,36,48,137,76,36,8,137,68,36,4,137,44, - 36,137,149,233,137,116,36,24,232,251,1,28,139,149,233,15,182,78,252,253,137, - 4,202,199,68,202,4,237,139,6,15,182,204,15,182,232,131,198,4,193,232,16,252, - 255,36,171,255,139,108,36,48,137,149,233,139,139,233,59,139,233,137,116,36, - 24,15,131,244,251,248,1,137,193,37,252,255,7,0,0,193,252,233,11,137,76,36, - 8,61,252,255,7,0,0,15,132,244,249,248,2,137,44,36,137,68,36,4,232,251,1,29, - 139,149,233,15,182,78,252,253,137,4,202,199,68,202,4,237,139,6,15,182,204, - 15,182,232,131,198,4,193,232,16,252,255,36,171,248,3,184,1,8,0,0,252,233, - 244,2,248,5,137,252,233,232,251,1,30,15,183,70,252,254,252,233,244,1,255, - 252,247,208,139,108,36,48,139,139,233,137,116,36,24,59,139,233,137,149,233, - 15,131,244,249,248,2,139,20,135,137,252,233,232,251,1,31,139,149,233,15,182, - 78,252,253,137,4,202,199,68,202,4,237,139,6,15,182,204,15,182,232,131,198, - 4,193,232,16,252,255,36,171,248,3,137,252,233,232,251,1,30,15,183,70,252, - 254,252,247,208,252,233,244,2,255,252,247,208,139,106,252,248,139,173,233, - 139,4,135,252,233,244,158,255,252,247,208,139,106,252,248,139,173,233,139, - 4,135,252,233,244,159,255,15,182,252,236,15,182,192,129,124,253,252,234,4, - 239,15,133,244,36,139,44,252,234,129,124,253,194,4,239,15,135,244,251,255, - 252,242,15,16,4,194,252,242,15,45,192,252,242,15,42,200,102,15,46,193,255, - 221,4,194,219,20,36,219,4,36,255,15,133,244,36,59,133,233,15,131,244,36,193, - 224,3,3,133,233,129,120,253,4,239,15,132,244,248,139,40,139,64,4,137,44,202, - 137,68,202,4,248,1,139,6,15,182,204,15,182,232,131,198,4,193,232,16,252,255, - 36,171,248,2,131,189,233,0,15,132,244,249,139,141,233,252,246,129,233,235, - 15,132,244,36,15,182,78,252,253,248,3,255,199,68,202,4,237,252,233,244,1, - 248,5,129,124,253,194,4,239,15,133,244,36,139,4,194,252,233,244,158,255,15, - 182,252,236,15,182,192,252,247,208,139,4,135,129,124,253,252,234,4,239,15, - 133,244,34,139,44,252,234,248,158,139,141,233,35,136,233,105,201,239,3,141, - 233,248,1,129,185,233,239,15,133,244,250,57,129,233,15,133,244,250,129,121, - 253,4,239,15,132,244,251,15,182,70,252,253,139,41,139,73,4,137,44,194,137, - 76,194,4,248,2,255,139,6,15,182,204,15,182,232,131,198,4,193,232,16,252,255, - 36,171,248,3,15,182,70,252,253,199,68,194,4,237,252,233,244,2,248,4,139,137, - 233,133,201,15,133,244,1,248,5,139,141,233,133,201,15,132,244,3,252,246,129, - 233,235,15,133,244,3,252,233,244,34,255,15,182,252,236,15,182,192,129,124, - 253,252,234,4,239,15,133,244,35,139,44,252,234,59,133,233,15,131,244,35,193, - 224,3,3,133,233,129,120,253,4,239,15,132,244,248,139,40,139,64,4,137,44,202, - 137,68,202,4,248,1,139,6,15,182,204,15,182,232,131,198,4,193,232,16,252,255, - 36,171,248,2,131,189,233,0,15,132,244,249,139,141,233,252,246,129,233,235, - 15,132,244,35,255,15,182,78,252,253,248,3,199,68,202,4,237,252,233,244,1, - 255,15,182,252,236,15,182,192,129,124,253,252,234,4,239,15,133,244,39,139, - 44,252,234,129,124,253,194,4,239,15,135,244,251,255,15,133,244,39,59,133, - 233,15,131,244,39,193,224,3,3,133,233,129,120,253,4,239,15,132,244,249,248, - 1,252,246,133,233,235,15,133,244,253,248,2,139,108,202,4,139,12,202,137,104, - 4,137,8,139,6,15,182,204,15,182,232,131,198,4,193,232,16,252,255,36,171,248, - 3,131,189,233,0,15,132,244,1,139,141,233,255,252,246,129,233,235,15,132,244, - 39,15,182,78,252,253,252,233,244,1,248,5,129,124,253,194,4,239,15,133,244, - 39,139,4,194,252,233,244,159,248,7,128,165,233,235,139,139,233,137,171,233, - 137,141,233,15,182,78,252,253,252,233,244,2,255,15,182,252,236,15,182,192, - 252,247,208,139,4,135,129,124,253,252,234,4,239,15,133,244,37,139,44,252, - 234,248,159,139,141,233,35,136,233,105,201,239,198,133,233,0,3,141,233,248, - 1,129,185,233,239,15,133,244,251,57,129,233,15,133,244,251,129,121,253,4, - 239,15,132,244,250,248,2,255,252,246,133,233,235,15,133,244,253,248,3,15, - 182,70,252,253,139,108,194,4,139,4,194,137,105,4,137,1,139,6,15,182,204,15, - 182,232,131,198,4,193,232,16,252,255,36,171,248,4,131,189,233,0,15,132,244, - 2,137,76,36,16,139,141,233,252,246,129,233,235,15,132,244,37,139,76,36,16, - 252,233,244,2,248,5,139,137,233,133,201,15,133,244,1,255,139,141,233,133, - 201,15,132,244,252,252,246,129,233,235,15,132,244,37,248,6,137,68,36,16,199, - 68,36,20,237,137,108,36,12,141,68,36,16,137,108,36,4,139,108,36,48,137,68, - 36,8,137,44,36,137,149,233,137,116,36,24,232,251,1,32,139,149,233,139,108, - 36,12,137,193,252,233,244,2,248,7,128,165,233,235,139,131,233,137,171,233, - 137,133,233,252,233,244,3,255,15,182,252,236,15,182,192,129,124,253,252,234, - 4,239,15,133,244,38,139,44,252,234,59,133,233,15,131,244,38,193,224,3,3,133, + 255,85,137,229,83,137,203,43,163,233,255,137,163,233,255,15,182,139,233,131, + 252,233,1,15,136,244,248,248,1,139,132,253,139,233,137,4,140,131,252,233, + 1,15,137,244,1,248,2,139,139,233,139,147,233,252,255,147,233,137,131,233, + 137,147,233,128,187,233,1,15,130,244,253,15,132,244,252,221,155,233,252,233, + 244,253,248,6,255,217,155,233,248,7,255,41,163,233,255,139,93,252,252,201, + 195,255,249,255,129,124,253,202,4,239,15,135,244,41,129,124,253,194,4,239, + 15,135,244,41,255,252,242,15,16,4,194,131,198,4,102,15,46,4,202,255,221,4, + 202,221,4,194,131,198,4,255,223,252,233,221,216,255,218,252,233,223,224,158, + 255,15,134,244,248,255,15,131,244,248,255,248,1,15,183,70,252,254,141,180, + 253,134,233,248,2,139,6,15,182,204,15,182,232,131,198,4,193,232,16,252,255, + 36,171,255,139,108,194,4,131,198,4,129,252,253,239,15,135,244,251,129,124, + 253,202,4,239,15,135,244,251,255,252,242,15,16,4,194,102,15,46,4,202,255, + 221,4,202,221,4,194,255,15,138,244,248,15,133,244,248,255,15,138,244,248, + 15,132,244,247,255,248,1,15,183,70,252,254,141,180,253,134,233,248,2,255, + 248,2,15,183,70,252,254,141,180,253,134,233,248,1,255,248,5,57,108,202,4, + 15,133,244,2,129,252,253,239,15,131,244,1,139,12,202,139,4,194,57,193,15, + 132,244,1,129,252,253,239,15,135,244,2,139,169,233,133,252,237,15,132,244, + 2,252,246,133,233,235,15,133,244,2,255,49,252,237,255,189,1,0,0,0,255,252, + 233,244,45,255,252,247,208,131,198,4,129,124,253,202,4,239,15,133,244,248, + 139,12,202,59,12,135,255,131,198,4,129,124,253,202,4,239,15,135,244,248,255, + 252,242,15,16,4,199,102,15,46,4,202,255,221,4,202,221,4,199,255,252,247,208, + 131,198,4,57,68,202,4,255,139,108,194,4,131,198,4,129,252,253,239,255,15, + 131,244,247,255,15,130,244,247,255,137,108,202,4,139,44,194,137,44,202,255, + 15,183,70,252,254,141,180,253,134,233,248,1,139,6,15,182,204,15,182,232,131, + 198,4,193,232,16,252,255,36,171,255,139,108,194,4,139,4,194,137,108,202,4, + 137,4,202,139,6,15,182,204,15,182,232,131,198,4,193,232,16,252,255,36,171, + 255,49,252,237,129,124,253,194,4,239,129,213,239,137,108,202,4,139,6,15,182, + 204,15,182,232,131,198,4,193,232,16,252,255,36,171,255,129,124,253,194,4, + 239,15,135,244,48,255,252,242,15,16,4,194,184,0,0,0,128,102,15,110,200,102, + 15,112,201,81,15,87,193,252,242,15,17,4,202,255,221,4,194,217,224,221,28, + 202,255,129,124,253,194,4,239,15,133,244,248,139,4,194,255,15,87,192,252, + 242,15,42,128,233,248,1,252,242,15,17,4,202,255,219,128,233,248,1,221,28, + 202,255,139,6,15,182,204,15,182,232,131,198,4,193,232,16,252,255,36,171,248, + 2,129,124,253,194,4,239,15,133,244,50,139,12,194,137,213,232,251,1,18,255, + 252,242,15,42,192,137,252,234,255,137,4,36,137,252,234,219,4,36,255,15,182, + 78,252,253,252,233,244,1,255,15,182,252,236,15,182,192,255,129,124,253,252, + 234,4,239,15,135,244,46,255,252,242,15,16,4,252,234,252,242,15,88,4,199,255, + 221,4,252,234,220,4,199,255,129,124,253,252,234,4,239,15,135,244,47,255,252, + 242,15,16,4,199,252,242,15,88,4,252,234,255,221,4,199,220,4,252,234,255,129, + 124,253,252,234,4,239,15,135,244,49,129,124,253,194,4,239,15,135,244,49,255, + 252,242,15,16,4,252,234,252,242,15,88,4,194,255,221,4,252,234,220,4,194,255, + 252,242,15,16,4,252,234,252,242,15,92,4,199,255,221,4,252,234,220,36,199, + 255,252,242,15,16,4,199,252,242,15,92,4,252,234,255,221,4,199,220,36,252, + 234,255,252,242,15,16,4,252,234,252,242,15,92,4,194,255,221,4,252,234,220, + 36,194,255,252,242,15,16,4,252,234,252,242,15,89,4,199,255,221,4,252,234, + 220,12,199,255,252,242,15,16,4,199,252,242,15,89,4,252,234,255,221,4,199, + 220,12,252,234,255,252,242,15,16,4,252,234,252,242,15,89,4,194,255,221,4, + 252,234,220,12,194,255,252,242,15,16,4,252,234,252,242,15,94,4,199,255,221, + 4,252,234,220,52,199,255,252,242,15,16,4,199,252,242,15,94,4,252,234,255, + 221,4,199,220,52,252,234,255,252,242,15,16,4,252,234,252,242,15,94,4,194, + 255,221,4,252,234,220,52,194,255,252,242,15,16,4,252,234,252,242,15,16,12, + 199,255,221,4,252,234,221,4,199,255,252,242,15,16,4,199,252,242,15,16,12, + 252,234,255,221,4,199,221,4,252,234,255,252,242,15,16,4,252,234,252,242,15, + 16,12,194,255,221,4,252,234,221,4,194,255,248,157,232,244,148,255,252,233, + 244,157,255,232,244,107,255,15,182,252,236,15,182,192,141,12,194,41,232,137, + 76,36,4,137,68,36,8,248,33,139,108,36,48,137,44,36,137,149,233,137,116,36, + 24,232,251,1,25,139,149,233,133,192,15,133,244,42,15,182,110,252,255,15,182, + 78,252,253,139,68,252,234,4,139,44,252,234,137,68,202,4,137,44,202,139,6, + 15,182,204,15,182,232,131,198,4,193,232,16,252,255,36,171,255,252,247,208, + 139,4,135,199,68,202,4,237,137,4,202,139,6,15,182,204,15,182,232,131,198, + 4,193,232,16,252,255,36,171,255,15,191,192,252,242,15,42,192,252,242,15,17, + 4,202,255,223,70,252,254,221,28,202,255,252,242,15,16,4,199,252,242,15,17, + 4,202,255,221,4,199,221,28,202,255,252,247,208,137,68,202,4,139,6,15,182, + 204,15,182,232,131,198,4,193,232,16,252,255,36,171,255,141,76,202,12,141, + 68,194,4,189,237,137,105,252,248,248,1,137,41,131,193,8,57,193,15,134,244, + 1,139,6,15,182,204,15,182,232,131,198,4,193,232,16,252,255,36,171,255,139, + 106,252,248,139,172,253,133,233,139,173,233,139,69,4,139,109,0,137,68,202, + 4,137,44,202,139,6,15,182,204,15,182,232,131,198,4,193,232,16,252,255,36, + 171,255,139,106,252,248,139,172,253,141,233,128,189,233,0,139,173,233,139, + 12,194,139,68,194,4,137,77,0,137,69,4,15,132,244,247,252,246,133,233,235, + 15,133,244,248,248,1,139,6,15,182,204,15,182,232,131,198,4,193,232,16,252, + 255,36,171,248,2,129,232,239,129,252,248,239,15,134,244,1,252,246,129,233, + 235,15,132,244,1,135,213,141,139,233,255,232,251,1,26,137,252,234,252,233, + 244,1,255,252,247,208,139,106,252,248,139,172,253,141,233,139,12,135,139, + 133,233,137,8,199,64,4,237,252,246,133,233,235,15,133,244,248,248,1,139,6, + 15,182,204,15,182,232,131,198,4,193,232,16,252,255,36,171,248,2,252,246,129, + 233,235,15,132,244,1,128,189,233,0,15,132,244,1,137,213,137,194,141,139,233, + 232,251,1,26,137,252,234,252,233,244,1,255,139,106,252,248,255,252,242,15, + 16,4,199,255,139,172,253,141,233,139,141,233,255,252,242,15,17,1,255,221, + 25,255,252,247,208,139,106,252,248,139,172,253,141,233,139,141,233,137,65, + 4,139,6,15,182,204,15,182,232,131,198,4,193,232,16,252,255,36,171,255,141, + 180,253,134,233,139,108,36,48,131,189,233,0,15,132,244,247,137,149,233,141, + 20,202,137,252,233,232,251,1,27,139,149,233,248,1,139,6,15,182,204,15,182, + 232,131,198,4,193,232,16,252,255,36,171,255,252,247,208,139,74,252,248,139, + 4,135,139,108,36,48,137,76,36,8,137,68,36,4,137,44,36,137,149,233,137,116, + 36,24,232,251,1,28,139,149,233,15,182,78,252,253,137,4,202,199,68,202,4,237, + 139,6,15,182,204,15,182,232,131,198,4,193,232,16,252,255,36,171,255,139,108, + 36,48,137,149,233,139,139,233,59,139,233,137,116,36,24,15,131,244,251,248, + 1,137,193,37,252,255,7,0,0,193,252,233,11,137,76,36,8,61,252,255,7,0,0,15, + 132,244,249,248,2,137,44,36,137,68,36,4,232,251,1,29,139,149,233,15,182,78, + 252,253,137,4,202,199,68,202,4,237,139,6,15,182,204,15,182,232,131,198,4, + 193,232,16,252,255,36,171,248,3,184,1,8,0,0,252,233,244,2,248,5,137,252,233, + 232,251,1,30,15,183,70,252,254,252,233,244,1,255,252,247,208,139,108,36,48, + 139,139,233,137,116,36,24,59,139,233,137,149,233,15,131,244,249,248,2,139, + 20,135,137,252,233,232,251,1,31,139,149,233,15,182,78,252,253,137,4,202,199, + 68,202,4,237,139,6,15,182,204,15,182,232,131,198,4,193,232,16,252,255,36, + 171,248,3,137,252,233,232,251,1,30,15,183,70,252,254,252,247,208,252,233, + 244,2,255,252,247,208,139,106,252,248,139,173,233,139,4,135,252,233,244,158, + 255,252,247,208,139,106,252,248,139,173,233,139,4,135,252,233,244,159,255, + 15,182,252,236,15,182,192,129,124,253,252,234,4,239,15,133,244,36,139,44, + 252,234,129,124,253,194,4,239,15,135,244,251,255,252,242,15,16,4,194,252, + 242,15,45,192,252,242,15,42,200,102,15,46,193,255,221,4,194,219,20,36,219, + 4,36,255,15,133,244,36,59,133,233,15,131,244,36,193,224,3,3,133,233,129,120, + 253,4,239,15,132,244,248,139,40,139,64,4,137,44,202,137,68,202,4,248,1,139, + 6,15,182,204,15,182,232,131,198,4,193,232,16,252,255,36,171,248,2,131,189, + 233,0,15,132,244,249,139,141,233,252,246,129,233,235,15,132,244,36,15,182, + 78,252,253,248,3,255,199,68,202,4,237,252,233,244,1,248,5,129,124,253,194, + 4,239,15,133,244,36,139,4,194,252,233,244,158,255,15,182,252,236,15,182,192, + 252,247,208,139,4,135,129,124,253,252,234,4,239,15,133,244,34,139,44,252, + 234,248,158,139,141,233,35,136,233,105,201,239,3,141,233,248,1,129,185,233, + 239,15,133,244,250,57,129,233,15,133,244,250,129,121,253,4,239,15,132,244, + 251,15,182,70,252,253,139,41,139,73,4,137,44,194,137,76,194,4,248,2,255,139, + 6,15,182,204,15,182,232,131,198,4,193,232,16,252,255,36,171,248,3,15,182, + 70,252,253,199,68,194,4,237,252,233,244,2,248,4,139,137,233,133,201,15,133, + 244,1,248,5,139,141,233,133,201,15,132,244,3,252,246,129,233,235,15,133,244, + 3,252,233,244,34,255,15,182,252,236,15,182,192,129,124,253,252,234,4,239, + 15,133,244,35,139,44,252,234,59,133,233,15,131,244,35,193,224,3,3,133,233, + 129,120,253,4,239,15,132,244,248,139,40,139,64,4,137,44,202,137,68,202,4, + 248,1,139,6,15,182,204,15,182,232,131,198,4,193,232,16,252,255,36,171,248, + 2,131,189,233,0,15,132,244,249,139,141,233,252,246,129,233,235,15,132,244, + 35,255,15,182,78,252,253,248,3,199,68,202,4,237,252,233,244,1,255,15,182, + 252,236,15,182,192,129,124,253,252,234,4,239,15,133,244,39,139,44,252,234, + 129,124,253,194,4,239,15,135,244,251,255,15,133,244,39,59,133,233,15,131, + 244,39,193,224,3,3,133,233,129,120,253,4,239,15,132,244,249,248,1,252,246, + 133,233,235,15,133,244,253,248,2,139,108,202,4,139,12,202,137,104,4,137,8, + 139,6,15,182,204,15,182,232,131,198,4,193,232,16,252,255,36,171,248,3,131, + 189,233,0,15,132,244,1,139,141,233,255,252,246,129,233,235,15,132,244,39, + 15,182,78,252,253,252,233,244,1,248,5,129,124,253,194,4,239,15,133,244,39, + 139,4,194,252,233,244,159,248,7,128,165,233,235,139,139,233,137,171,233,137, + 141,233,15,182,78,252,253,252,233,244,2,255,15,182,252,236,15,182,192,252, + 247,208,139,4,135,129,124,253,252,234,4,239,15,133,244,37,139,44,252,234, + 248,159,139,141,233,35,136,233,105,201,239,198,133,233,0,3,141,233,248,1, + 129,185,233,239,15,133,244,251,57,129,233,15,133,244,251,129,121,253,4,239, + 15,132,244,250,248,2,255,252,246,133,233,235,15,133,244,253,248,3,15,182, + 70,252,253,139,108,194,4,139,4,194,137,105,4,137,1,139,6,15,182,204,15,182, + 232,131,198,4,193,232,16,252,255,36,171,248,4,131,189,233,0,15,132,244,2, + 137,76,36,16,139,141,233,252,246,129,233,235,15,132,244,37,139,76,36,16,252, + 233,244,2,248,5,139,137,233,133,201,15,133,244,1,255,139,141,233,133,201, + 15,132,244,252,252,246,129,233,235,15,132,244,37,248,6,137,68,36,16,199,68, + 36,20,237,137,108,36,12,141,68,36,16,137,108,36,4,139,108,36,48,137,68,36, + 8,137,44,36,137,149,233,137,116,36,24,232,251,1,32,139,149,233,139,108,36, + 12,137,193,252,233,244,2,248,7,128,165,233,235,139,131,233,137,171,233,137, + 133,233,252,233,244,3,255,15,182,252,236,15,182,192,129,124,253,252,234,4, + 239,15,133,244,38,139,44,252,234,59,133,233,15,131,244,38,193,224,3,3,133, 233,129,120,253,4,239,15,132,244,249,248,1,252,246,133,233,235,15,133,244, 253,248,2,139,108,202,4,139,12,202,137,104,4,137,8,139,6,15,182,204,15,182, 232,131,198,4,193,232,16,252,255,36,171,248,3,131,189,233,0,15,132,244,1, @@ -1571,8 +1572,16 @@ static void build_subroutines(BuildCtx *ctx, int cmov, int sse) dasm_put(Dst, 10731); #if LJ_HASFFI #define DtE(_V) (int)(ptrdiff_t)&(((CCallState *)0)_V) - dasm_put(Dst, 10787, DtE(->spadj), DtE(->nsp), offsetof(CCallState, stack), DtE(->gpr[0]), DtE(->gpr[1]), DtE(->func), DtE(->gpr[0]), DtE(->gpr[1]), DtE(->resx87), DtE(->fpr[0].d[0])); - dasm_put(Dst, 10860, DtE(->fpr[0].f[0])); + dasm_put(Dst, 10787, DtE(->spadj)); +#if LJ_TARGET_WINDOWS + dasm_put(Dst, 10797, DtE(->spadj)); +#endif + dasm_put(Dst, 10801, DtE(->nsp), offsetof(CCallState, stack), DtE(->gpr[0]), DtE(->gpr[1]), DtE(->func), DtE(->gpr[0]), DtE(->gpr[1]), DtE(->resx87), DtE(->fpr[0].d[0])); + dasm_put(Dst, 10871, DtE(->fpr[0].f[0])); +#if LJ_TARGET_WINDOWS + dasm_put(Dst, 10877, DtE(->spadj)); +#endif + dasm_put(Dst, 10881); #endif } @@ -1580,7 +1589,7 @@ static void build_subroutines(BuildCtx *ctx, int cmov, int sse) static void build_ins(BuildCtx *ctx, BCOp op, int defop, int cmov, int sse) { int vk = 0; - dasm_put(Dst, 10878, defop); + dasm_put(Dst, 10888, defop); switch (op) { @@ -1589,20 +1598,20 @@ 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, 10880, LJ_TISNUM, LJ_TISNUM); + dasm_put(Dst, 10890, LJ_TISNUM, LJ_TISNUM); if (sse) { - dasm_put(Dst, 10901); + dasm_put(Dst, 10911); } else { - dasm_put(Dst, 10916); - if (cmov) { dasm_put(Dst, 10926); + if (cmov) { + dasm_put(Dst, 10936); } else { - dasm_put(Dst, 10932); + dasm_put(Dst, 10942); } } switch (op) { case BC_ISLT: - dasm_put(Dst, 10939); + dasm_put(Dst, 10949); break; case BC_ISGE: dasm_put(Dst, 10081); @@ -1611,615 +1620,615 @@ static void build_ins(BuildCtx *ctx, BCOp op, int defop, int cmov, int sse) dasm_put(Dst, 6207); break; case BC_ISGT: - dasm_put(Dst, 10944); + dasm_put(Dst, 10954); break; default: break; /* Shut up GCC. */ } - dasm_put(Dst, 10949, -BCBIAS_J*4); + dasm_put(Dst, 10959, -BCBIAS_J*4); break; case BC_ISEQV: case BC_ISNEV: vk = op == BC_ISEQV; - dasm_put(Dst, 10982, LJ_TISNUM, LJ_TISNUM); + dasm_put(Dst, 10992, LJ_TISNUM, LJ_TISNUM); if (sse) { - dasm_put(Dst, 11008); + dasm_put(Dst, 11018); } else { - dasm_put(Dst, 11020); + dasm_put(Dst, 11030); if (cmov) { - dasm_put(Dst, 10926); + dasm_put(Dst, 10936); } else { - dasm_put(Dst, 10932); + dasm_put(Dst, 10942); } } iseqne_fp: if (vk) { - dasm_put(Dst, 11027); + dasm_put(Dst, 11037); } else { - dasm_put(Dst, 11036); + dasm_put(Dst, 11046); } iseqne_end: if (vk) { - dasm_put(Dst, 11045, -BCBIAS_J*4); + dasm_put(Dst, 11055, -BCBIAS_J*4); } else { - dasm_put(Dst, 11060, -BCBIAS_J*4); + dasm_put(Dst, 11070, -BCBIAS_J*4); } - dasm_put(Dst, 10963); + dasm_put(Dst, 10973); if (op == BC_ISEQV || op == BC_ISNEV) { - dasm_put(Dst, 11075, LJ_TISPRI, LJ_TISTABUD, Dt6(->metatable), Dt6(->nomm), 1<metatable), Dt6(->nomm), 1<len)); + dasm_put(Dst, 11421, Dt5(->len)); } else { - dasm_put(Dst, 11429, Dt5(->len)); + dasm_put(Dst, 11439, Dt5(->len)); } - dasm_put(Dst, 11438, LJ_TTAB); + dasm_put(Dst, 11448, LJ_TTAB); if (sse) { - dasm_put(Dst, 11478); + dasm_put(Dst, 11488); } else { - dasm_put(Dst, 11487); + dasm_put(Dst, 11497); } - dasm_put(Dst, 11497); + dasm_put(Dst, 11507); break; /* -- Binary ops -------------------------------------------------------- */ case BC_ADDVN: case BC_ADDNV: case BC_ADDVV: - dasm_put(Dst, 11507); + dasm_put(Dst, 11517); vk = ((int)op - BC_ADDVN) / (BC_ADDNV-BC_ADDVN); switch (vk) { case 0: - dasm_put(Dst, 11515, LJ_TISNUM); + dasm_put(Dst, 11525, LJ_TISNUM); if (sse) { - dasm_put(Dst, 11527); + dasm_put(Dst, 11537); } else { - dasm_put(Dst, 11541); + dasm_put(Dst, 11551); } break; case 1: - dasm_put(Dst, 11549, LJ_TISNUM); + dasm_put(Dst, 11559, LJ_TISNUM); if (sse) { - dasm_put(Dst, 11561); + dasm_put(Dst, 11571); } else { - dasm_put(Dst, 11575); + dasm_put(Dst, 11585); } break; default: - dasm_put(Dst, 11583, LJ_TISNUM, LJ_TISNUM); + dasm_put(Dst, 11593, LJ_TISNUM, LJ_TISNUM); if (sse) { - dasm_put(Dst, 11605); + dasm_put(Dst, 11615); } else { - dasm_put(Dst, 11619); + dasm_put(Dst, 11629); } break; } if (sse) { - dasm_put(Dst, 11381); + dasm_put(Dst, 11391); } else { - dasm_put(Dst, 11393); + dasm_put(Dst, 11403); } - dasm_put(Dst, 10963); + dasm_put(Dst, 10973); break; case BC_SUBVN: case BC_SUBNV: case BC_SUBVV: - dasm_put(Dst, 11507); + dasm_put(Dst, 11517); vk = ((int)op - BC_ADDVN) / (BC_ADDNV-BC_ADDVN); switch (vk) { case 0: - dasm_put(Dst, 11515, LJ_TISNUM); + dasm_put(Dst, 11525, LJ_TISNUM); if (sse) { - dasm_put(Dst, 11627); + dasm_put(Dst, 11637); } else { - dasm_put(Dst, 11641); + dasm_put(Dst, 11651); } break; case 1: - dasm_put(Dst, 11549, LJ_TISNUM); + dasm_put(Dst, 11559, LJ_TISNUM); if (sse) { - dasm_put(Dst, 11649); + dasm_put(Dst, 11659); } else { - dasm_put(Dst, 11663); + dasm_put(Dst, 11673); } break; default: - dasm_put(Dst, 11583, LJ_TISNUM, LJ_TISNUM); + dasm_put(Dst, 11593, LJ_TISNUM, LJ_TISNUM); if (sse) { - dasm_put(Dst, 11671); + dasm_put(Dst, 11681); } else { - dasm_put(Dst, 11685); + dasm_put(Dst, 11695); } break; } if (sse) { - dasm_put(Dst, 11381); + dasm_put(Dst, 11391); } else { - dasm_put(Dst, 11393); + dasm_put(Dst, 11403); } - dasm_put(Dst, 10963); + dasm_put(Dst, 10973); break; case BC_MULVN: case BC_MULNV: case BC_MULVV: - dasm_put(Dst, 11507); + dasm_put(Dst, 11517); vk = ((int)op - BC_ADDVN) / (BC_ADDNV-BC_ADDVN); switch (vk) { case 0: - dasm_put(Dst, 11515, LJ_TISNUM); + dasm_put(Dst, 11525, LJ_TISNUM); if (sse) { - dasm_put(Dst, 11693); + dasm_put(Dst, 11703); } else { - dasm_put(Dst, 11707); + dasm_put(Dst, 11717); } break; case 1: - dasm_put(Dst, 11549, LJ_TISNUM); + dasm_put(Dst, 11559, LJ_TISNUM); if (sse) { - dasm_put(Dst, 11715); + dasm_put(Dst, 11725); } else { - dasm_put(Dst, 11729); + dasm_put(Dst, 11739); } break; default: - dasm_put(Dst, 11583, LJ_TISNUM, LJ_TISNUM); + dasm_put(Dst, 11593, LJ_TISNUM, LJ_TISNUM); if (sse) { - dasm_put(Dst, 11737); + dasm_put(Dst, 11747); } else { - dasm_put(Dst, 11751); + dasm_put(Dst, 11761); } break; } if (sse) { - dasm_put(Dst, 11381); + dasm_put(Dst, 11391); } else { - dasm_put(Dst, 11393); + dasm_put(Dst, 11403); } - dasm_put(Dst, 10963); + dasm_put(Dst, 10973); break; case BC_DIVVN: case BC_DIVNV: case BC_DIVVV: - dasm_put(Dst, 11507); + dasm_put(Dst, 11517); vk = ((int)op - BC_ADDVN) / (BC_ADDNV-BC_ADDVN); switch (vk) { case 0: - dasm_put(Dst, 11515, LJ_TISNUM); + dasm_put(Dst, 11525, LJ_TISNUM); if (sse) { - dasm_put(Dst, 11759); + dasm_put(Dst, 11769); } else { - dasm_put(Dst, 11773); + dasm_put(Dst, 11783); } break; case 1: - dasm_put(Dst, 11549, LJ_TISNUM); + dasm_put(Dst, 11559, LJ_TISNUM); if (sse) { - dasm_put(Dst, 11781); + dasm_put(Dst, 11791); } else { - dasm_put(Dst, 11795); + dasm_put(Dst, 11805); } break; default: - dasm_put(Dst, 11583, LJ_TISNUM, LJ_TISNUM); + dasm_put(Dst, 11593, LJ_TISNUM, LJ_TISNUM); if (sse) { - dasm_put(Dst, 11803); + dasm_put(Dst, 11813); } else { - dasm_put(Dst, 11817); + dasm_put(Dst, 11827); } break; } if (sse) { - dasm_put(Dst, 11381); + dasm_put(Dst, 11391); } else { - dasm_put(Dst, 11393); + dasm_put(Dst, 11403); } - dasm_put(Dst, 10963); + dasm_put(Dst, 10973); break; case BC_MODVN: - dasm_put(Dst, 11507); + dasm_put(Dst, 11517); vk = ((int)op - BC_ADDVN) / (BC_ADDNV-BC_ADDVN); switch (vk) { case 0: - dasm_put(Dst, 11515, LJ_TISNUM); + dasm_put(Dst, 11525, LJ_TISNUM); if (sse) { - dasm_put(Dst, 11825); + dasm_put(Dst, 11835); } else { - dasm_put(Dst, 11839); + dasm_put(Dst, 11849); } break; case 1: - dasm_put(Dst, 11549, LJ_TISNUM); + dasm_put(Dst, 11559, LJ_TISNUM); if (sse) { - dasm_put(Dst, 11847); + dasm_put(Dst, 11857); } else { - dasm_put(Dst, 11861); + dasm_put(Dst, 11871); } break; default: - dasm_put(Dst, 11583, LJ_TISNUM, LJ_TISNUM); + dasm_put(Dst, 11593, LJ_TISNUM, LJ_TISNUM); if (sse) { - dasm_put(Dst, 11869); + dasm_put(Dst, 11879); } else { - dasm_put(Dst, 11883); + dasm_put(Dst, 11893); } break; } - dasm_put(Dst, 11891); + dasm_put(Dst, 11901); if (sse) { - dasm_put(Dst, 11381); + dasm_put(Dst, 11391); } else { - dasm_put(Dst, 11393); + dasm_put(Dst, 11403); } - dasm_put(Dst, 10963); + dasm_put(Dst, 10973); break; case BC_MODNV: case BC_MODVV: - dasm_put(Dst, 11507); + dasm_put(Dst, 11517); vk = ((int)op - BC_ADDVN) / (BC_ADDNV-BC_ADDVN); switch (vk) { case 0: - dasm_put(Dst, 11515, LJ_TISNUM); + dasm_put(Dst, 11525, LJ_TISNUM); if (sse) { - dasm_put(Dst, 11825); + dasm_put(Dst, 11835); } else { - dasm_put(Dst, 11839); + dasm_put(Dst, 11849); } break; case 1: - dasm_put(Dst, 11549, LJ_TISNUM); + dasm_put(Dst, 11559, LJ_TISNUM); if (sse) { - dasm_put(Dst, 11847); + dasm_put(Dst, 11857); } else { - dasm_put(Dst, 11861); + dasm_put(Dst, 11871); } break; default: - dasm_put(Dst, 11583, LJ_TISNUM, LJ_TISNUM); + dasm_put(Dst, 11593, LJ_TISNUM, LJ_TISNUM); if (sse) { - dasm_put(Dst, 11869); + dasm_put(Dst, 11879); } else { - dasm_put(Dst, 11883); + dasm_put(Dst, 11893); } break; } - dasm_put(Dst, 11897); + dasm_put(Dst, 11907); break; case BC_POW: - dasm_put(Dst, 11507); + dasm_put(Dst, 11517); vk = ((int)op - BC_ADDVN) / (BC_ADDNV-BC_ADDVN); switch (vk) { case 0: - dasm_put(Dst, 11515, LJ_TISNUM); + dasm_put(Dst, 11525, LJ_TISNUM); if (sse) { - dasm_put(Dst, 11825); + dasm_put(Dst, 11835); } else { - dasm_put(Dst, 11839); + dasm_put(Dst, 11849); } break; case 1: - dasm_put(Dst, 11549, LJ_TISNUM); + dasm_put(Dst, 11559, LJ_TISNUM); if (sse) { - dasm_put(Dst, 11847); + dasm_put(Dst, 11857); } else { - dasm_put(Dst, 11861); + dasm_put(Dst, 11871); } break; default: - dasm_put(Dst, 11583, LJ_TISNUM, LJ_TISNUM); + dasm_put(Dst, 11593, LJ_TISNUM, LJ_TISNUM); if (sse) { - dasm_put(Dst, 11869); + dasm_put(Dst, 11879); } else { - dasm_put(Dst, 11883); + dasm_put(Dst, 11893); } break; } - dasm_put(Dst, 11902); + dasm_put(Dst, 11912); if (sse) { - dasm_put(Dst, 11381); + dasm_put(Dst, 11391); } else { - dasm_put(Dst, 11393); + dasm_put(Dst, 11403); } - dasm_put(Dst, 10963); + dasm_put(Dst, 10973); break; case BC_CAT: - dasm_put(Dst, 11906, Dt1(->base), Dt1(->base)); + dasm_put(Dst, 11916, Dt1(->base), Dt1(->base)); break; /* -- Constant ops ------------------------------------------------------ */ case BC_KSTR: - dasm_put(Dst, 12000, LJ_TSTR); + dasm_put(Dst, 12010, LJ_TSTR); break; case BC_KCDATA: #if LJ_HASFFI - dasm_put(Dst, 12000, LJ_TCDATA); + dasm_put(Dst, 12010, LJ_TCDATA); #endif break; case BC_KSHORT: if (sse) { - dasm_put(Dst, 12033); + dasm_put(Dst, 12043); } else { - dasm_put(Dst, 12048); + dasm_put(Dst, 12058); } - dasm_put(Dst, 10963); + dasm_put(Dst, 10973); break; case BC_KNUM: if (sse) { - dasm_put(Dst, 12056); + dasm_put(Dst, 12066); } else { - dasm_put(Dst, 12069); + dasm_put(Dst, 12079); } - dasm_put(Dst, 10963); + dasm_put(Dst, 10973); break; case BC_KPRI: - dasm_put(Dst, 12076); + dasm_put(Dst, 12086); break; case BC_KNIL: - dasm_put(Dst, 12102, LJ_TNIL); + dasm_put(Dst, 12112, LJ_TNIL); break; /* -- Upvalue and function ops ------------------------------------------ */ case BC_UGET: - dasm_put(Dst, 12148, offsetof(GCfuncL, uvptr), DtA(->v)); + dasm_put(Dst, 12158, offsetof(GCfuncL, uvptr), DtA(->v)); break; case BC_USETV: #define TV2MARKOFS \ ((int32_t)offsetof(GCupval, marked)-(int32_t)offsetof(GCupval, tv)) - dasm_put(Dst, 12192, 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, 12282); + dasm_put(Dst, 12202, 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, 12292); break; #undef TV2MARKOFS case BC_USETS: - dasm_put(Dst, 12294, 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, 12304, 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, 12385); + dasm_put(Dst, 12395); if (sse) { - dasm_put(Dst, 12390); + dasm_put(Dst, 12400); } else { - dasm_put(Dst, 11200); + dasm_put(Dst, 11210); } - dasm_put(Dst, 12397, offsetof(GCfuncL, uvptr), DtA(->v)); + dasm_put(Dst, 12407, offsetof(GCfuncL, uvptr), DtA(->v)); if (sse) { - dasm_put(Dst, 12406); + dasm_put(Dst, 12416); } else { - dasm_put(Dst, 12412); + dasm_put(Dst, 12422); } - dasm_put(Dst, 10963); + dasm_put(Dst, 10973); break; case BC_USETP: - dasm_put(Dst, 12415, offsetof(GCfuncL, uvptr), DtA(->v)); + dasm_put(Dst, 12425, offsetof(GCfuncL, uvptr), DtA(->v)); break; case BC_UCLO: - dasm_put(Dst, 12452, -BCBIAS_J*4, Dt1(->openupval), Dt1(->base), Dt1(->base)); + dasm_put(Dst, 12462, -BCBIAS_J*4, Dt1(->openupval), Dt1(->base), Dt1(->base)); break; case BC_FNEW: - dasm_put(Dst, 12506, Dt1(->base), Dt1(->base), LJ_TFUNC); + dasm_put(Dst, 12516, Dt1(->base), Dt1(->base), LJ_TFUNC); break; /* -- Table ops --------------------------------------------------------- */ case BC_TNEW: - dasm_put(Dst, 12577, Dt1(->base), DISPATCH_GL(gc.total), DISPATCH_GL(gc.threshold), Dt1(->base), LJ_TTAB); + dasm_put(Dst, 12587, Dt1(->base), DISPATCH_GL(gc.total), DISPATCH_GL(gc.threshold), Dt1(->base), LJ_TTAB); break; case BC_TDUP: - dasm_put(Dst, 12703, DISPATCH_GL(gc.total), DISPATCH_GL(gc.threshold), Dt1(->base), Dt1(->base), LJ_TTAB); + dasm_put(Dst, 12713, DISPATCH_GL(gc.total), DISPATCH_GL(gc.threshold), Dt1(->base), Dt1(->base), LJ_TTAB); break; case BC_GGET: - dasm_put(Dst, 12795, Dt7(->env)); + dasm_put(Dst, 12805, Dt7(->env)); break; case BC_GSET: - dasm_put(Dst, 12813, Dt7(->env)); + dasm_put(Dst, 12823, Dt7(->env)); break; case BC_TGETV: - dasm_put(Dst, 12831, LJ_TTAB, LJ_TISNUM); + dasm_put(Dst, 12841, LJ_TTAB, LJ_TISNUM); if (sse) { - dasm_put(Dst, 12864); + dasm_put(Dst, 12874); } else { - dasm_put(Dst, 12885); + dasm_put(Dst, 12895); if (cmov) { - dasm_put(Dst, 10926); + dasm_put(Dst, 10936); } else { - dasm_put(Dst, 10932); + dasm_put(Dst, 10942); } dasm_put(Dst, 2539); } - dasm_put(Dst, 12895, Dt6(->asize), Dt6(->array), LJ_TNIL, Dt6(->metatable), Dt6(->metatable), Dt6(->nomm), 1<asize), Dt6(->array), LJ_TNIL, Dt6(->metatable), Dt6(->metatable), Dt6(->nomm), 1<hmask), Dt5(->hash), sizeof(Node), Dt6(->node), DtB(->key.it), LJ_TSTR, DtB(->key.gcr), LJ_TNIL); - dasm_put(Dst, 13100, LJ_TNIL, DtB(->next), Dt6(->metatable), Dt6(->nomm), 1<hmask), Dt5(->hash), sizeof(Node), Dt6(->node), DtB(->key.it), LJ_TSTR, DtB(->key.gcr), LJ_TNIL); + dasm_put(Dst, 13110, LJ_TNIL, DtB(->next), Dt6(->metatable), Dt6(->nomm), 1<asize), Dt6(->array), LJ_TNIL, Dt6(->metatable), Dt6(->metatable), Dt6(->nomm), 1<asize), Dt6(->array), LJ_TNIL, Dt6(->metatable), Dt6(->metatable), Dt6(->nomm), 1<asize), Dt6(->array), LJ_TNIL, Dt6(->marked), LJ_GC_BLACK, Dt6(->metatable), Dt6(->metatable)); - dasm_put(Dst, 13402, Dt6(->nomm), 1<marked), cast_byte(~LJ_GC_BLACK), DISPATCH_GL(gc.grayagain), DISPATCH_GL(gc.grayagain), Dt6(->gclist)); + dasm_put(Dst, 13329, Dt6(->asize), Dt6(->array), LJ_TNIL, Dt6(->marked), LJ_GC_BLACK, Dt6(->metatable), Dt6(->metatable)); + dasm_put(Dst, 13412, Dt6(->nomm), 1<marked), cast_byte(~LJ_GC_BLACK), DISPATCH_GL(gc.grayagain), DISPATCH_GL(gc.grayagain), Dt6(->gclist)); break; case BC_TSETS: - dasm_put(Dst, 13464, 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, 13539, Dt6(->marked), LJ_GC_BLACK, Dt6(->metatable), Dt6(->metatable), Dt6(->nomm), 1<next)); - dasm_put(Dst, 13631, Dt6(->metatable), Dt6(->nomm), 1<base), Dt1(->base), Dt6(->marked), cast_byte(~LJ_GC_BLACK), DISPATCH_GL(gc.grayagain), DISPATCH_GL(gc.grayagain), Dt6(->gclist)); + dasm_put(Dst, 13474, 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, 13549, Dt6(->marked), LJ_GC_BLACK, Dt6(->metatable), Dt6(->metatable), Dt6(->nomm), 1<next)); + dasm_put(Dst, 13641, Dt6(->metatable), Dt6(->nomm), 1<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, 13727, LJ_TTAB, Dt6(->asize), Dt6(->array), LJ_TNIL, Dt6(->marked), LJ_GC_BLACK, Dt6(->metatable)); - dasm_put(Dst, 13825, Dt6(->metatable), Dt6(->nomm), 1<marked), cast_byte(~LJ_GC_BLACK), DISPATCH_GL(gc.grayagain), DISPATCH_GL(gc.grayagain), Dt6(->gclist)); + dasm_put(Dst, 13737, LJ_TTAB, Dt6(->asize), Dt6(->array), LJ_TNIL, Dt6(->marked), LJ_GC_BLACK, Dt6(->metatable)); + dasm_put(Dst, 13835, Dt6(->metatable), Dt6(->nomm), 1<marked), cast_byte(~LJ_GC_BLACK), DISPATCH_GL(gc.grayagain), DISPATCH_GL(gc.grayagain), Dt6(->gclist)); break; case BC_TSETM: - dasm_put(Dst, 13871, Dt6(->marked), LJ_GC_BLACK, Dt6(->asize), Dt6(->array), Dt1(->base), Dt1(->base)); - dasm_put(Dst, 14020, Dt6(->marked), cast_byte(~LJ_GC_BLACK), DISPATCH_GL(gc.grayagain), DISPATCH_GL(gc.grayagain), Dt6(->gclist)); + dasm_put(Dst, 13881, Dt6(->marked), LJ_GC_BLACK, Dt6(->asize), Dt6(->array), Dt1(->base), Dt1(->base)); + dasm_put(Dst, 14030, 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, 11511); + dasm_put(Dst, 11521); if (op == BC_CALLM) { - dasm_put(Dst, 14038); + dasm_put(Dst, 14048); } - dasm_put(Dst, 14043, LJ_TFUNC, Dt7(->pc)); + dasm_put(Dst, 14053, LJ_TFUNC, Dt7(->pc)); break; case BC_CALLMT: - dasm_put(Dst, 14038); + dasm_put(Dst, 14048); break; case BC_CALLT: - dasm_put(Dst, 14084, LJ_TFUNC, FRAME_TYPE, Dt7(->ffid), Dt7(->pc)); - dasm_put(Dst, 14202, FRAME_TYPE, Dt7(->pc), PC2PROTO(k), FRAME_VARG, FRAME_TYPEP, FRAME_VARG); + dasm_put(Dst, 14094, LJ_TFUNC, FRAME_TYPE, Dt7(->ffid), Dt7(->pc)); + dasm_put(Dst, 14212, FRAME_TYPE, Dt7(->pc), PC2PROTO(k), FRAME_VARG, FRAME_TYPEP, FRAME_VARG); break; case BC_ITERC: - dasm_put(Dst, 14272, LJ_TFUNC, 2+1, Dt7(->pc)); + dasm_put(Dst, 14282, LJ_TFUNC, 2+1, Dt7(->pc)); break; case BC_ITERN: #if LJ_HASJIT #endif - dasm_put(Dst, 14352, Dt6(->asize), Dt6(->array), LJ_TNIL); + dasm_put(Dst, 14362, Dt6(->asize), Dt6(->array), LJ_TNIL); if (sse) { - dasm_put(Dst, 14398); + dasm_put(Dst, 14408); } else { - dasm_put(Dst, 14404); + dasm_put(Dst, 14414); } - dasm_put(Dst, 14410); + dasm_put(Dst, 14420); if (sse) { - dasm_put(Dst, 11381); + dasm_put(Dst, 11391); } else { - dasm_put(Dst, 11393); + dasm_put(Dst, 11403); } - dasm_put(Dst, 14429, -BCBIAS_J*4); + dasm_put(Dst, 14439, -BCBIAS_J*4); if (!sse) { - dasm_put(Dst, 14480); + dasm_put(Dst, 14490); } - dasm_put(Dst, 14486, Dt6(->hmask), sizeof(Node), Dt6(->node), DtB(->val.it), LJ_TNIL, DtB(->key.gcr), DtB(->key.it), DtB(->val.gcr), DtB(->val.it)); - dasm_put(Dst, 14561); + dasm_put(Dst, 14496, Dt6(->hmask), sizeof(Node), Dt6(->node), DtB(->val.it), LJ_TNIL, DtB(->key.gcr), DtB(->key.it), DtB(->val.gcr), DtB(->val.it)); + dasm_put(Dst, 14571); break; case BC_ISNEXT: - dasm_put(Dst, 14569, LJ_TFUNC, LJ_TTAB, LJ_TNIL, Dt8(->ffid), FF_next_N, -BCBIAS_J*4, BC_JMP, -BCBIAS_J*4, BC_ITERC); + dasm_put(Dst, 14579, LJ_TFUNC, LJ_TTAB, LJ_TNIL, Dt8(->ffid), FF_next_N, -BCBIAS_J*4, BC_JMP, -BCBIAS_J*4, BC_ITERC); break; case BC_VARG: - dasm_put(Dst, 14668, (8+FRAME_VARG), LJ_TNIL, Dt1(->maxstack)); - dasm_put(Dst, 14832, Dt1(->base), Dt1(->top), Dt1(->base), Dt1(->top)); + dasm_put(Dst, 14678, (8+FRAME_VARG), LJ_TNIL, Dt1(->maxstack)); + dasm_put(Dst, 14842, Dt1(->base), Dt1(->top), Dt1(->base), Dt1(->top)); break; /* -- Returns ----------------------------------------------------------- */ case BC_RETM: - dasm_put(Dst, 14038); + dasm_put(Dst, 14048); break; case BC_RET: case BC_RET0: case BC_RET1: if (op != BC_RET0) { - dasm_put(Dst, 14903); + dasm_put(Dst, 14913); } - dasm_put(Dst, 14907, FRAME_TYPE); + dasm_put(Dst, 14917, FRAME_TYPE); switch (op) { case BC_RET: - dasm_put(Dst, 14926); + dasm_put(Dst, 14936); break; case BC_RET1: - dasm_put(Dst, 14984); + dasm_put(Dst, 14994); /* fallthrough */ case BC_RET0: - dasm_put(Dst, 15000); + dasm_put(Dst, 15010); default: break; } - dasm_put(Dst, 15011, Dt7(->pc), PC2PROTO(k)); + dasm_put(Dst, 15021, Dt7(->pc), PC2PROTO(k)); if (op == BC_RET) { - dasm_put(Dst, 15053, LJ_TNIL); + dasm_put(Dst, 15063, LJ_TNIL); } else { - dasm_put(Dst, 15062, LJ_TNIL); + dasm_put(Dst, 15072, LJ_TNIL); } - dasm_put(Dst, 15069, -FRAME_VARG, FRAME_TYPEP); + dasm_put(Dst, 15079, -FRAME_VARG, FRAME_TYPEP); if (op != BC_RET0) { - dasm_put(Dst, 15093); + dasm_put(Dst, 15103); } dasm_put(Dst, 4704); break; @@ -2229,7 +2238,7 @@ static void build_ins(BuildCtx *ctx, BCOp op, int defop, int cmov, int sse) case BC_FORL: #if LJ_HASJIT - dasm_put(Dst, 15097, HOTCOUNT_PCMASK, GG_DISP2HOT); + dasm_put(Dst, 15107, HOTCOUNT_PCMASK, GG_DISP2HOT); #endif break; @@ -2241,57 +2250,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, 15118); + dasm_put(Dst, 15128); if (!vk) { - dasm_put(Dst, 15122, LJ_TISNUM, LJ_TISNUM); + dasm_put(Dst, 15132, LJ_TISNUM, LJ_TISNUM); } - dasm_put(Dst, 15141); + dasm_put(Dst, 15151); if (!vk) { - dasm_put(Dst, 15145, LJ_TISNUM); + dasm_put(Dst, 15155, LJ_TISNUM); } if (sse) { - dasm_put(Dst, 15154); + dasm_put(Dst, 15164); if (vk) { - dasm_put(Dst, 15166); + dasm_put(Dst, 15176); } else { - dasm_put(Dst, 15185); + dasm_put(Dst, 15195); } - dasm_put(Dst, 15190); + dasm_put(Dst, 15200); } else { - dasm_put(Dst, 15203); + dasm_put(Dst, 15213); if (vk) { - dasm_put(Dst, 15209); + dasm_put(Dst, 15219); } else { - dasm_put(Dst, 15225); + dasm_put(Dst, 15235); } - dasm_put(Dst, 15233); + dasm_put(Dst, 15243); if (cmov) { - dasm_put(Dst, 10926); + dasm_put(Dst, 10936); } else { - dasm_put(Dst, 10932); + dasm_put(Dst, 10942); } if (!cmov) { - dasm_put(Dst, 15238); + dasm_put(Dst, 15248); } } if (op == BC_FORI) { - dasm_put(Dst, 15244, -BCBIAS_J*4); + dasm_put(Dst, 15254, -BCBIAS_J*4); } else if (op == BC_JFORI) { - dasm_put(Dst, 15254, -BCBIAS_J*4, BC_JLOOP); + dasm_put(Dst, 15264, -BCBIAS_J*4, BC_JLOOP); } else if (op == BC_IFORL) { - dasm_put(Dst, 15268, -BCBIAS_J*4); + dasm_put(Dst, 15278, -BCBIAS_J*4); } else { - dasm_put(Dst, 15264, BC_JLOOP); + dasm_put(Dst, 15274, BC_JLOOP); } - dasm_put(Dst, 10961); + dasm_put(Dst, 10971); if (sse) { - dasm_put(Dst, 15278); + dasm_put(Dst, 15288); } break; case BC_ITERL: #if LJ_HASJIT - dasm_put(Dst, 15097, HOTCOUNT_PCMASK, GG_DISP2HOT); + dasm_put(Dst, 15107, HOTCOUNT_PCMASK, GG_DISP2HOT); #endif break; @@ -2300,33 +2309,33 @@ static void build_ins(BuildCtx *ctx, BCOp op, int defop, int cmov, int sse) break; #endif case BC_IITERL: - dasm_put(Dst, 15289, LJ_TNIL); + dasm_put(Dst, 15299, LJ_TNIL); if (op == BC_JITERL) { - dasm_put(Dst, 15304, BC_JLOOP); + dasm_put(Dst, 15314, BC_JLOOP); } else { - dasm_put(Dst, 15318, -BCBIAS_J*4); + dasm_put(Dst, 15328, -BCBIAS_J*4); } - dasm_put(Dst, 11258); + dasm_put(Dst, 11268); break; case BC_LOOP: #if LJ_HASJIT - dasm_put(Dst, 15097, HOTCOUNT_PCMASK, GG_DISP2HOT); + dasm_put(Dst, 15107, HOTCOUNT_PCMASK, GG_DISP2HOT); #endif break; case BC_ILOOP: - dasm_put(Dst, 10963); + dasm_put(Dst, 10973); break; case BC_JLOOP: #if LJ_HASJIT - dasm_put(Dst, 15334, DISPATCH_J(trace), DtD(->mcode), DISPATCH_GL(jit_base), DISPATCH_GL(jit_L)); + dasm_put(Dst, 15344, DISPATCH_J(trace), DtD(->mcode), DISPATCH_GL(jit_base), DISPATCH_GL(jit_L)); #endif break; case BC_JMP: - dasm_put(Dst, 15357, -BCBIAS_J*4); + dasm_put(Dst, 15367, -BCBIAS_J*4); break; /* -- Function headers -------------------------------------------------- */ @@ -2340,7 +2349,7 @@ static void build_ins(BuildCtx *ctx, BCOp op, int defop, int cmov, int sse) case BC_FUNCF: #if LJ_HASJIT - dasm_put(Dst, 15381, HOTCOUNT_PCMASK, GG_DISP2HOT); + dasm_put(Dst, 15391, HOTCOUNT_PCMASK, GG_DISP2HOT); #endif case BC_FUNCV: /* NYI: compiled vararg functions. */ break; @@ -2350,13 +2359,13 @@ static void build_ins(BuildCtx *ctx, BCOp op, int defop, int cmov, int sse) break; #endif case BC_IFUNCF: - dasm_put(Dst, 15402, -4+PC2PROTO(k), Dt1(->maxstack), -4+PC2PROTO(numparams)); + dasm_put(Dst, 15412, -4+PC2PROTO(k), Dt1(->maxstack), -4+PC2PROTO(numparams)); if (op == BC_JFUNCF) { - dasm_put(Dst, 15432, BC_JLOOP); + dasm_put(Dst, 15442, BC_JLOOP); } else { - dasm_put(Dst, 10963); + dasm_put(Dst, 10973); } - dasm_put(Dst, 15441, LJ_TNIL); + dasm_put(Dst, 15451, LJ_TNIL); break; case BC_JFUNCV: @@ -2367,30 +2376,30 @@ static void build_ins(BuildCtx *ctx, BCOp op, int defop, int cmov, int sse) break; /* NYI: compiled vararg functions. */ case BC_IFUNCV: - dasm_put(Dst, 15463, FRAME_VARG, Dt1(->maxstack), -4+PC2PROTO(numparams), LJ_TNIL); + dasm_put(Dst, 15473, FRAME_VARG, Dt1(->maxstack), -4+PC2PROTO(numparams), LJ_TNIL); if (op == BC_JFUNCV) { - dasm_put(Dst, 15432, BC_JLOOP); + dasm_put(Dst, 15442, BC_JLOOP); } else { - dasm_put(Dst, 15554, -4+PC2PROTO(k)); + dasm_put(Dst, 15564, -4+PC2PROTO(k)); } - dasm_put(Dst, 15576, LJ_TNIL); + dasm_put(Dst, 15586, LJ_TNIL); break; case BC_FUNCC: case BC_FUNCCW: - dasm_put(Dst, 15598, Dt8(->f), Dt1(->base), 8*LUA_MINSTACK, Dt1(->maxstack), Dt1(->top)); + dasm_put(Dst, 15608, Dt8(->f), Dt1(->base), 8*LUA_MINSTACK, Dt1(->maxstack), Dt1(->top)); if (op == BC_FUNCC) { - dasm_put(Dst, 15627); + dasm_put(Dst, 15637); } else { - dasm_put(Dst, 15631); + dasm_put(Dst, 15641); } - dasm_put(Dst, 15639, DISPATCH_GL(vmstate), ~LJ_VMST_C); + dasm_put(Dst, 15649, DISPATCH_GL(vmstate), ~LJ_VMST_C); if (op == BC_FUNCC) { - dasm_put(Dst, 15648); + dasm_put(Dst, 15658); } else { - dasm_put(Dst, 15652, DISPATCH_GL(wrapf)); + dasm_put(Dst, 15662, DISPATCH_GL(wrapf)); } - dasm_put(Dst, 15657, DISPATCH_GL(vmstate), ~LJ_VMST_INTERP, Dt1(->base), Dt1(->top)); + dasm_put(Dst, 15667, DISPATCH_GL(vmstate), ~LJ_VMST_INTERP, Dt1(->base), Dt1(->top)); break; /* ---------------------------------------------------------------------- */ @@ -2418,7 +2427,7 @@ static int build_backend(BuildCtx *ctx) build_subroutines(ctx, cmov, sse); - dasm_put(Dst, 15682); + dasm_put(Dst, 15692); for (op = 0; op < BC__MAX; op++) build_ins(ctx, (BCOp)op, op, cmov, sse); diff --git a/src/lj_ccall.c b/src/lj_ccall.c index 03f0ec06..6d5156fb 100644 --- a/src/lj_ccall.c +++ b/src/lj_ccall.c @@ -14,6 +14,7 @@ #include "lj_cconv.h" #include "lj_cdata.h" #include "lj_ccall.h" +#include "lj_trace.h" /* Target-specific handling of register arguments. */ #if LJ_TARGET_X86 @@ -127,7 +128,7 @@ static int ccall_set_args(lua_State *L, CTState *cts, CType *ct, #if LJ_TARGET_X86 /* x86 has several different calling conventions. */ cc->resx87 = 0; - switch ((ct->info >> CTSHIFT_CCONV) & CTMASK_CCONV) { + switch (ctype_cconv(ct->info)) { case CTCC_FASTCALL: maxgpr = 2; break; case CTCC_THISCALL: maxgpr = 1; break; default: maxgpr = 0; break; @@ -352,6 +353,13 @@ int lj_ccall_func(lua_State *L, GCcdata *cd) gcsteps = ccall_set_args(L, cts, ct, &cc); lj_vm_ffi_call(&cc); gcsteps += ccall_get_results(L, cts, ct, &cc, &ret); +#if LJ_TARGET_X86 && LJ_ABI_WIN + /* Automatically detect __stdcall and fix up C function declaration. */ + if (cc.spadj && ctype_cconv(ct->info) == CTCC_CDECL) { + CTF_INSERT(ct->info, CCONV, CTCC_STDCALL); + lj_trace_abort(G(L)); + } +#endif while (gcsteps-- > 0) lj_gc_check(L); return ret; diff --git a/src/lj_ctype.h b/src/lj_ctype.h index c804b706..17a6fdc3 100644 --- a/src/lj_ctype.h +++ b/src/lj_ctype.h @@ -173,6 +173,7 @@ typedef struct CTState { #define ctype_bitcsz(info) (((info) >> CTSHIFT_BITCSZ) & CTMASK_BITCSZ) #define ctype_vsizeP(info) (((info) >> CTSHIFT_VSIZEP) & CTMASK_VSIZEP) #define ctype_msizeP(info) (((info) >> CTSHIFT_MSIZEP) & CTMASK_MSIZEP) +#define ctype_cconv(info) (((info) >> CTSHIFT_CCONV) & CTMASK_CCONV) /* Simple type checks. */ #define ctype_isnum(info) (ctype_type((info)) == CT_NUM)