aboutsummaryrefslogtreecommitdiff
path: root/src/buildvm_mips.h
diff options
context:
space:
mode:
Diffstat (limited to 'src/buildvm_mips.h')
-rw-r--r--src/buildvm_mips.h409
1 files changed, 205 insertions, 204 deletions
diff --git a/src/buildvm_mips.h b/src/buildvm_mips.h
index 7c0f90bf..bab93343 100644
--- a/src/buildvm_mips.h
+++ b/src/buildvm_mips.h
@@ -12,7 +12,7 @@
12#define DASM_SECTION_CODE_OP 0 12#define DASM_SECTION_CODE_OP 0
13#define DASM_SECTION_CODE_SUB 1 13#define DASM_SECTION_CODE_SUB 1
14#define DASM_MAXSECTION 2 14#define DASM_MAXSECTION 2
15static const unsigned int build_actionlist[6323] = { 15static const unsigned int build_actionlist[6324] = {
160xff010001, 160xff010001,
170xff060014, 170xff060014,
180x32410000, 180x32410000,
@@ -2930,6 +2930,7 @@ static const unsigned int build_actionlist[6323] = {
29300x924d0000, 29300x924d0000,
29310xff098200, 29310xff098200,
29320x000d68c0, 29320x000d68c0,
29330x25ad0008,
29330xff06000d, 29340xff06000d,
29340x10000000, 29350x10000000,
29350xff050824, 29360xff050824,
@@ -6736,51 +6737,51 @@ static void build_subroutines(BuildCtx *ctx)
6736 dasm_put(Dst, 2719, 8+LJ_ENDIAN_SELECT(4,0), LJ_TISNUM, LJ_TISNUM, LJ_ENDIAN_SELECT(4,0), 8+LJ_ENDIAN_SELECT(4,0), LJ_TISNUM, LJ_TISNUM, LJ_ENDIAN_SELECT(4,0), 8+LJ_ENDIAN_SELECT(4,0), LJ_TISNUM, LJ_TISNUM, LJ_ENDIAN_SELECT(4,0)); 6737 dasm_put(Dst, 2719, 8+LJ_ENDIAN_SELECT(4,0), LJ_TISNUM, LJ_TISNUM, LJ_ENDIAN_SELECT(4,0), 8+LJ_ENDIAN_SELECT(4,0), LJ_TISNUM, LJ_TISNUM, LJ_ENDIAN_SELECT(4,0), 8+LJ_ENDIAN_SELECT(4,0), LJ_TISNUM, LJ_TISNUM, LJ_ENDIAN_SELECT(4,0));
6737 dasm_put(Dst, 2790, 8+LJ_ENDIAN_SELECT(4,0), LJ_TISNUM, LJ_TISNUM, LJ_ENDIAN_SELECT(4,0), 8+LJ_ENDIAN_SELECT(4,0), LJ_TISNUM, LJ_TISNUM, LJ_ENDIAN_SELECT(4,0), LJ_TISNUM, Dt8(->f)); 6738 dasm_put(Dst, 2790, 8+LJ_ENDIAN_SELECT(4,0), LJ_TISNUM, LJ_TISNUM, LJ_ENDIAN_SELECT(4,0), 8+LJ_ENDIAN_SELECT(4,0), LJ_TISNUM, LJ_TISNUM, LJ_ENDIAN_SELECT(4,0), LJ_TISNUM, Dt8(->f));
6738 dasm_put(Dst, 2863, LJ_ENDIAN_SELECT(-4,-8), 8*LUA_MINSTACK, Dt1(->maxstack), Dt1(->base), Dt1(->top), Dt1(->base), Dt1(->top), LJ_ENDIAN_SELECT(-8,-4), Dt7(->pc), FRAME_TYPE, LJ_ENDIAN_SELECT(1,2), DISPATCH_GOT(lj_state_growstack), LUA_MINSTACK, Dt1(->base)); 6739 dasm_put(Dst, 2863, LJ_ENDIAN_SELECT(-4,-8), 8*LUA_MINSTACK, Dt1(->maxstack), Dt1(->base), Dt1(->top), Dt1(->base), Dt1(->top), LJ_ENDIAN_SELECT(-8,-4), Dt7(->pc), FRAME_TYPE, LJ_ENDIAN_SELECT(1,2), DISPATCH_GOT(lj_state_growstack), LUA_MINSTACK, Dt1(->base));
6739 dasm_put(Dst, 2931, DISPATCH_GOT(lj_gc_step), Dt1(->base), Dt1(->top), Dt1(->base), Dt1(->top), LJ_ENDIAN_SELECT(-8,-4)); 6740 dasm_put(Dst, 2932, DISPATCH_GOT(lj_gc_step), Dt1(->base), Dt1(->top), Dt1(->base), Dt1(->top), LJ_ENDIAN_SELECT(-8,-4));
6740#if LJ_HASJIT 6741#if LJ_HASJIT
6741 dasm_put(Dst, 2957, DISPATCH_GL(hookmask), HOOK_VMEVENT, DISPATCH_GL(hookcount), HOOK_ACTIVE, LUA_MASKLINE|LUA_MASKCOUNT, DISPATCH_GL(hookcount)); 6742 dasm_put(Dst, 2958, DISPATCH_GL(hookmask), HOOK_VMEVENT, DISPATCH_GL(hookcount), HOOK_ACTIVE, LUA_MASKLINE|LUA_MASKCOUNT, DISPATCH_GL(hookcount));
6742#endif 6743#endif
6743 dasm_put(Dst, 2980, DISPATCH_GL(hookmask), HOOK_ACTIVE, GG_DISP2STATIC, DISPATCH_GL(hookmask), DISPATCH_GL(hookcount), HOOK_ACTIVE, LUA_MASKLINE|LUA_MASKCOUNT, DISPATCH_GL(hookcount), LUA_MASKLINE, DISPATCH_GOT(lj_dispatch_ins), Dt1(->base), Dt1(->base)); 6744 dasm_put(Dst, 2981, DISPATCH_GL(hookmask), HOOK_ACTIVE, GG_DISP2STATIC, DISPATCH_GL(hookmask), DISPATCH_GL(hookcount), HOOK_ACTIVE, LUA_MASKLINE|LUA_MASKCOUNT, DISPATCH_GL(hookcount), LUA_MASKLINE, DISPATCH_GOT(lj_dispatch_ins), Dt1(->base), Dt1(->base));
6744 dasm_put(Dst, 3028, GG_DISP2STATIC, -24+LJ_ENDIAN_SELECT(0,4)); 6745 dasm_put(Dst, 3029, GG_DISP2STATIC, -24+LJ_ENDIAN_SELECT(0,4));
6745#if LJ_HASJIT 6746#if LJ_HASJIT
6746 dasm_put(Dst, 3047, LJ_ENDIAN_SELECT(-8,-4), GG_DISP2J, Dt7(->pc), DISPATCH_J(L), PC2PROTO(framesize), DISPATCH_GOT(lj_trace_hot), Dt1(->base), Dt1(->top)); 6747 dasm_put(Dst, 3048, LJ_ENDIAN_SELECT(-8,-4), GG_DISP2J, Dt7(->pc), DISPATCH_J(L), PC2PROTO(framesize), DISPATCH_GOT(lj_trace_hot), Dt1(->base), Dt1(->top));
6747#endif 6748#endif
6748 dasm_put(Dst, 3072); 6749 dasm_put(Dst, 3073);
6749#if LJ_HASJIT 6750#if LJ_HASJIT
6750 dasm_put(Dst, 3074); 6751 dasm_put(Dst, 3075);
6751#endif 6752#endif
6752 dasm_put(Dst, 3077); 6753 dasm_put(Dst, 3078);
6753#if LJ_HASJIT 6754#if LJ_HASJIT
6754 dasm_put(Dst, 3080); 6755 dasm_put(Dst, 3081);
6755#endif 6756#endif
6756 dasm_put(Dst, 3083, DISPATCH_GOT(lj_dispatch_call), Dt1(->base), Dt1(->top), Dt1(->base), Dt1(->top), LJ_ENDIAN_SELECT(-8,-4)); 6757 dasm_put(Dst, 3084, DISPATCH_GOT(lj_dispatch_call), Dt1(->base), Dt1(->top), Dt1(->base), Dt1(->top), LJ_ENDIAN_SELECT(-8,-4));
6757#if LJ_HASJIT 6758#if LJ_HASJIT
6758 dasm_put(Dst, 3107, -(16+32*8+32*4), 16+0*8, 16+32*8+0*4, 16+32*8+1*4, 16+2*8, 16+32*8+2*4, 16+32*8+3*4, 16+4*8, 16+32*8+4*4, 16+32*8+5*4, 16+6*8, 16+32*8+6*4, 16+32*8+7*4, 16+8*8, 16+32*8+8*4, 16+32*8+9*4, 16+10*8, 16+32*8+10*4, 16+32*8+11*4, 16+12*8, 16+32*8+12*4, 16+32*8+13*4, 16+14*8); 6759 dasm_put(Dst, 3108, -(16+32*8+32*4), 16+0*8, 16+32*8+0*4, 16+32*8+1*4, 16+2*8, 16+32*8+2*4, 16+32*8+3*4, 16+4*8, 16+32*8+4*4, 16+32*8+5*4, 16+6*8, 16+32*8+6*4, 16+32*8+7*4, 16+8*8, 16+32*8+8*4, 16+32*8+9*4, 16+10*8, 16+32*8+10*4, 16+32*8+11*4, 16+12*8, 16+32*8+12*4, 16+32*8+13*4, 16+14*8);
6759 dasm_put(Dst, 3154, 16+32*8+14*4, 16+32*8+15*4, 16+16*8, 16+32*8+16*4, 16+32*8+17*4, 16+18*8, 16+32*8+18*4, 16+32*8+19*4, 16+20*8, 16+32*8+20*4, 16+32*8+21*4, 16+22*8, 16+32*8+22*4, 16+32*8+23*4, 16+24*8, 16+32*8+24*4, 16+32*8+25*4, 16+26*8, 16+32*8+26*4, 16+32*8+27*4, 16+28*8, 16+32*8+28*4, 16+30*8); 6760 dasm_put(Dst, 3155, 16+32*8+14*4, 16+32*8+15*4, 16+16*8, 16+32*8+16*4, 16+32*8+17*4, 16+18*8, 16+32*8+18*4, 16+32*8+19*4, 16+20*8, 16+32*8+20*4, 16+32*8+21*4, 16+22*8, 16+32*8+22*4, 16+32*8+23*4, 16+24*8, 16+32*8+24*4, 16+32*8+25*4, 16+26*8, 16+32*8+26*4, 16+32*8+27*4, 16+28*8, 16+32*8+28*4, 16+30*8);
6760 dasm_put(Dst, 3201, 16+32*8+30*4, 16+32*8+31*4, ~LJ_VMST_EXIT, 16+32*8+32*4, -GG_DISP2G-32768, DISPATCH_GL(vmstate), 16+32*8+29*4, DISPATCH_GL(jit_L), DISPATCH_GL(jit_base), DISPATCH_GOT(lj_trace_exit), DISPATCH_J(L), DISPATCH_J(parent), DISPATCH_J(exitno), GG_DISP2J, Dt1(->base), Dt1(->cframe), Dt1(->base)); 6761 dasm_put(Dst, 3202, 16+32*8+30*4, 16+32*8+31*4, ~LJ_VMST_EXIT, 16+32*8+32*4, -GG_DISP2G-32768, DISPATCH_GL(vmstate), 16+32*8+29*4, DISPATCH_GL(jit_L), DISPATCH_GL(jit_base), DISPATCH_GOT(lj_trace_exit), DISPATCH_J(L), DISPATCH_J(parent), DISPATCH_J(exitno), GG_DISP2J, Dt1(->base), Dt1(->cframe), Dt1(->base));
6761#endif 6762#endif
6762 dasm_put(Dst, 3245); 6763 dasm_put(Dst, 3246);
6763#if LJ_HASJIT 6764#if LJ_HASJIT
6764 dasm_put(Dst, 3247, -GG_DISP2G-32768, LJ_ENDIAN_SELECT(-8,-4), LJ_TNIL, Dt7(->pc), DISPATCH_GL(jit_L), PC2PROTO(k), DISPATCH_GL(vmstate), BC_FUNCF*4, DISPATCH_GOT(lj_err_throw)); 6765 dasm_put(Dst, 3248, -GG_DISP2G-32768, LJ_ENDIAN_SELECT(-8,-4), LJ_TNIL, Dt7(->pc), DISPATCH_GL(jit_L), PC2PROTO(k), DISPATCH_GL(vmstate), BC_FUNCF*4, DISPATCH_GOT(lj_err_throw));
6765#endif 6766#endif
6766 dasm_put(Dst, 3296); 6767 dasm_put(Dst, 3297);
6767#if LJ_HASJIT 6768#if LJ_HASJIT
6768 dasm_put(Dst, 3344); 6769 dasm_put(Dst, 3345);
6769#endif 6770#endif
6770 dasm_put(Dst, 3367); 6771 dasm_put(Dst, 3368);
6771#if LJ_HASFFI 6772#if LJ_HASFFI
6772#define DtE(_V) (int)(ptrdiff_t)&(((CTState *)0)_V) 6773#define DtE(_V) (int)(ptrdiff_t)&(((CTState *)0)_V)
6773 dasm_put(Dst, 3369, 72+9*4, 72+8*4, 24+5*8, 72+7*4, 72+6*4, 24+4*8, 72+5*4, 72+4*4, 24+3*8, 72+3*4, 72+2*4, 24+2*8, 72+1*4, 72+0*4, 24+1*8, 24+0*8, Dt2(->ctype_state), GG_G2DISP, DISPATCH_GOT(lj_ccallback_enter), DtE(->cb.slot), DtE(->cb.gpr[0]), DtE(->cb.gpr[1]), DtE(->cb.fpr[0])); 6774 dasm_put(Dst, 3370, 72+9*4, 72+8*4, 24+5*8, 72+7*4, 72+6*4, 24+4*8, 72+5*4, 72+4*4, 24+3*8, 72+3*4, 72+2*4, 24+2*8, 72+1*4, 72+0*4, 24+1*8, 24+0*8, Dt2(->ctype_state), GG_G2DISP, DISPATCH_GOT(lj_ccallback_enter), DtE(->cb.slot), DtE(->cb.gpr[0]), DtE(->cb.gpr[1]), DtE(->cb.fpr[0]));
6774 dasm_put(Dst, 3417, DtE(->cb.gpr[2]), DtE(->cb.gpr[3]), DtE(->cb.fpr[1]), 112+16, DtE(->cb.stack), Dt1(->base), Dt1(->top), LJ_ENDIAN_SELECT(-8,-4), ~LJ_VMST_INTERP, LJ_TNIL, DISPATCH_GL(vmstate), Dt7(->pc)); 6775 dasm_put(Dst, 3418, DtE(->cb.gpr[2]), DtE(->cb.gpr[3]), DtE(->cb.fpr[1]), 112+16, DtE(->cb.stack), Dt1(->base), Dt1(->top), LJ_ENDIAN_SELECT(-8,-4), ~LJ_VMST_INTERP, LJ_TNIL, DISPATCH_GL(vmstate), Dt7(->pc));
6775#endif 6776#endif
6776 dasm_put(Dst, 3461); 6777 dasm_put(Dst, 3462);
6777#if LJ_HASFFI 6778#if LJ_HASFFI
6778 dasm_put(Dst, 3463, DISPATCH_GOT(lj_ccallback_leave), DISPATCH_GL(ctype_state), Dt1(->base), Dt1(->top), DtE(->L), DtE(->cb.gpr[0]), DtE(->cb.fpr[0]), DtE(->cb.gpr[1]), DtE(->cb.fpr[1])); 6779 dasm_put(Dst, 3464, DISPATCH_GOT(lj_ccallback_leave), DISPATCH_GL(ctype_state), Dt1(->base), Dt1(->top), DtE(->L), DtE(->cb.gpr[0]), DtE(->cb.fpr[0]), DtE(->cb.gpr[1]), DtE(->cb.fpr[1]));
6779#endif 6780#endif
6780 dasm_put(Dst, 3487); 6781 dasm_put(Dst, 3488);
6781#if LJ_HASFFI 6782#if LJ_HASFFI
6782#define DtF(_V) (int)(ptrdiff_t)&(((CCallState *)0)_V) 6783#define DtF(_V) (int)(ptrdiff_t)&(((CCallState *)0)_V)
6783 dasm_put(Dst, 3489, DtF(->spadj), DtF(->nsp), offsetof(CCallState, stack), DtF(->func), DtF(->gpr[1]), DtF(->gpr[2]), DtF(->gpr[3]), DtF(->fpr[0]), DtF(->fpr[1]), DtF(->gpr[0]), DtF(->gpr[0]), DtF(->gpr[1]), DtF(->fpr[0]), DtF(->fpr[1])); 6784 dasm_put(Dst, 3490, DtF(->spadj), DtF(->nsp), offsetof(CCallState, stack), DtF(->func), DtF(->gpr[1]), DtF(->gpr[2]), DtF(->gpr[3]), DtF(->fpr[0]), DtF(->fpr[1]), DtF(->gpr[0]), DtF(->gpr[0]), DtF(->gpr[1]), DtF(->fpr[0]), DtF(->fpr[1]));
6784#endif 6785#endif
6785} 6786}
6786 6787
@@ -6788,7 +6789,7 @@ static void build_subroutines(BuildCtx *ctx)
6788static void build_ins(BuildCtx *ctx, BCOp op, int defop) 6789static void build_ins(BuildCtx *ctx, BCOp op, int defop)
6789{ 6790{
6790 int vk = 0; 6791 int vk = 0;
6791 dasm_put(Dst, 3545, defop); 6792 dasm_put(Dst, 3546, defop);
6792 6793
6793 switch (op) { 6794 switch (op) {
6794 6795
@@ -6797,138 +6798,138 @@ static void build_ins(BuildCtx *ctx, BCOp op, int defop)
6797 /* Remember: all ops branch for a true comparison, fall through otherwise. */ 6798 /* Remember: all ops branch for a true comparison, fall through otherwise. */
6798 6799
6799 case BC_ISLT: case BC_ISGE: case BC_ISLE: case BC_ISGT: 6800 case BC_ISLT: case BC_ISGE: case BC_ISLE: case BC_ISGT:
6800 dasm_put(Dst, 3547, LJ_ENDIAN_SELECT(4,0), LJ_ENDIAN_SELECT(4,0), LJ_TISNUM, LJ_TISNUM, LJ_ENDIAN_SELECT(2,0), (-(BCBIAS_J*4 >> 16) & 65535)); 6801 dasm_put(Dst, 3548, LJ_ENDIAN_SELECT(4,0), LJ_ENDIAN_SELECT(4,0), LJ_TISNUM, LJ_TISNUM, LJ_ENDIAN_SELECT(2,0), (-(BCBIAS_J*4 >> 16) & 65535));
6801 if (op == BC_ISLT || op == BC_ISGE) { 6802 if (op == BC_ISLT || op == BC_ISGE) {
6802 dasm_put(Dst, 3570); 6803 dasm_put(Dst, 3571);
6803 } else { 6804 } else {
6804 dasm_put(Dst, 3572); 6805 dasm_put(Dst, 3573);
6805 } 6806 }
6806 if (op == BC_ISLT || op == BC_ISLE) { 6807 if (op == BC_ISLT || op == BC_ISLE) {
6807 dasm_put(Dst, 3574); 6808 dasm_put(Dst, 3575);
6808 } else { 6809 } else {
6809 dasm_put(Dst, 3576); 6810 dasm_put(Dst, 3577);
6810 } 6811 }
6811 dasm_put(Dst, 3578); 6812 dasm_put(Dst, 3579);
6812 break; 6813 break;
6813 6814
6814 case BC_ISEQV: case BC_ISNEV: 6815 case BC_ISEQV: case BC_ISNEV:
6815 vk = op == BC_ISEQV; 6816 vk = op == BC_ISEQV;
6816 dasm_put(Dst, 3592, LJ_ENDIAN_SELECT(4,0), -4+LJ_ENDIAN_SELECT(2,0), LJ_ENDIAN_SELECT(4,0), (-(BCBIAS_J*4 >> 16) & 65535), LJ_TISNUM, LJ_TISNUM); 6817 dasm_put(Dst, 3593, LJ_ENDIAN_SELECT(4,0), -4+LJ_ENDIAN_SELECT(2,0), LJ_ENDIAN_SELECT(4,0), (-(BCBIAS_J*4 >> 16) & 65535), LJ_TISNUM, LJ_TISNUM);
6817 if (vk) { 6818 if (vk) {
6818 dasm_put(Dst, 3616); 6819 dasm_put(Dst, 3617);
6819 } else { 6820 } else {
6820 dasm_put(Dst, 3618); 6821 dasm_put(Dst, 3619);
6821 } 6822 }
6822 dasm_put(Dst, 3620, LJ_ENDIAN_SELECT(0,4), LJ_ENDIAN_SELECT(0,4)); 6823 dasm_put(Dst, 3621, LJ_ENDIAN_SELECT(0,4), LJ_ENDIAN_SELECT(0,4));
6823 if (LJ_HASFFI) { 6824 if (LJ_HASFFI) {
6824 dasm_put(Dst, 3639, LJ_TCDATA); 6825 dasm_put(Dst, 3640, LJ_TCDATA);
6825 } 6826 }
6826 dasm_put(Dst, 3644, LJ_TISPRI); 6827 dasm_put(Dst, 3645, LJ_TISPRI);
6827 if (LJ_HASFFI) { 6828 if (LJ_HASFFI) {
6828 dasm_put(Dst, 3647); 6829 dasm_put(Dst, 3648);
6829 } 6830 }
6830 dasm_put(Dst, 3650, LJ_TISTABUD+1); 6831 dasm_put(Dst, 3651, LJ_TISTABUD+1);
6831 if (vk) { 6832 if (vk) {
6832 dasm_put(Dst, 3661); 6833 dasm_put(Dst, 3662);
6833 } else { 6834 } else {
6834 dasm_put(Dst, 3663); 6835 dasm_put(Dst, 3664);
6835 } 6836 }
6836 dasm_put(Dst, 3665, Dt6(->metatable), Dt6(->nomm), 1<<MM_eq, 1-vk); 6837 dasm_put(Dst, 3666, Dt6(->metatable), Dt6(->nomm), 1<<MM_eq, 1-vk);
6837 break; 6838 break;
6838 6839
6839 case BC_ISEQS: case BC_ISNES: 6840 case BC_ISEQS: case BC_ISNES:
6840 vk = op == BC_ISEQS; 6841 vk = op == BC_ISEQS;
6841 dasm_put(Dst, 3682, LJ_ENDIAN_SELECT(4,0), LJ_ENDIAN_SELECT(0,4), -4+LJ_ENDIAN_SELECT(2,0)); 6842 dasm_put(Dst, 3683, LJ_ENDIAN_SELECT(4,0), LJ_ENDIAN_SELECT(0,4), -4+LJ_ENDIAN_SELECT(2,0));
6842 if (LJ_HASFFI) { 6843 if (LJ_HASFFI) {
6843 dasm_put(Dst, 3693, LJ_TCDATA); 6844 dasm_put(Dst, 3694, LJ_TCDATA);
6844 } 6845 }
6845 dasm_put(Dst, 3698, -LJ_TSTR, (-(BCBIAS_J*4 >> 16) & 65535)); 6846 dasm_put(Dst, 3699, -LJ_TSTR, (-(BCBIAS_J*4 >> 16) & 65535));
6846 if (vk) { 6847 if (vk) {
6847 dasm_put(Dst, 3708); 6848 dasm_put(Dst, 3709);
6848 } else { 6849 } else {
6849 dasm_put(Dst, 3710); 6850 dasm_put(Dst, 3711);
6850 } 6851 }
6851 dasm_put(Dst, 3712); 6852 dasm_put(Dst, 3713);
6852 break; 6853 break;
6853 6854
6854 case BC_ISEQN: case BC_ISNEN: 6855 case BC_ISEQN: case BC_ISNEN:
6855 vk = op == BC_ISEQN; 6856 vk = op == BC_ISEQN;
6856 dasm_put(Dst, 3725, LJ_ENDIAN_SELECT(4,0), -4+LJ_ENDIAN_SELECT(2,0), (-(BCBIAS_J*4 >> 16) & 65535), LJ_TISNUM); 6857 dasm_put(Dst, 3726, LJ_ENDIAN_SELECT(4,0), -4+LJ_ENDIAN_SELECT(2,0), (-(BCBIAS_J*4 >> 16) & 65535), LJ_TISNUM);
6857 if (LJ_HASFFI) { 6858 if (LJ_HASFFI) {
6858 dasm_put(Dst, 3740); 6859 dasm_put(Dst, 3741);
6859 } else { 6860 } else {
6860 dasm_put(Dst, 3743); 6861 dasm_put(Dst, 3744);
6861 } 6862 }
6862 dasm_put(Dst, 3746); 6863 dasm_put(Dst, 3747);
6863 if (vk) { 6864 if (vk) {
6864 dasm_put(Dst, 3749); 6865 dasm_put(Dst, 3750);
6865 } else { 6866 } else {
6866 dasm_put(Dst, 3753); 6867 dasm_put(Dst, 3754);
6867 } 6868 }
6868 dasm_put(Dst, 3757); 6869 dasm_put(Dst, 3758);
6869 if (LJ_HASFFI) { 6870 if (LJ_HASFFI) {
6870 dasm_put(Dst, 3769, LJ_TCDATA); 6871 dasm_put(Dst, 3770, LJ_TCDATA);
6871 } 6872 }
6872 break; 6873 break;
6873 6874
6874 case BC_ISEQP: case BC_ISNEP: 6875 case BC_ISEQP: case BC_ISNEP:
6875 vk = op == BC_ISEQP; 6876 vk = op == BC_ISEQP;
6876 dasm_put(Dst, 3779, LJ_ENDIAN_SELECT(4,0), LJ_ENDIAN_SELECT(2,0)); 6877 dasm_put(Dst, 3780, LJ_ENDIAN_SELECT(4,0), LJ_ENDIAN_SELECT(2,0));
6877 if (LJ_HASFFI) { 6878 if (LJ_HASFFI) {
6878 dasm_put(Dst, 3788, LJ_TCDATA); 6879 dasm_put(Dst, 3789, LJ_TCDATA);
6879 } 6880 }
6880 dasm_put(Dst, 3793, (-(BCBIAS_J*4 >> 16) & 65535)); 6881 dasm_put(Dst, 3794, (-(BCBIAS_J*4 >> 16) & 65535));
6881 if (vk) { 6882 if (vk) {
6882 dasm_put(Dst, 3799); 6883 dasm_put(Dst, 3800);
6883 } else { 6884 } else {
6884 dasm_put(Dst, 3801); 6885 dasm_put(Dst, 3802);
6885 } 6886 }
6886 dasm_put(Dst, 3803); 6887 dasm_put(Dst, 3804);
6887 break; 6888 break;
6888 6889
6889 /* -- Unary test and copy ops ------------------------------------------- */ 6890 /* -- Unary test and copy ops ------------------------------------------- */
6890 6891
6891 case BC_ISTC: case BC_ISFC: case BC_IST: case BC_ISF: 6892 case BC_ISTC: case BC_ISFC: case BC_IST: case BC_ISF:
6892 dasm_put(Dst, 3816, LJ_ENDIAN_SELECT(2,0), LJ_ENDIAN_SELECT(4,0)); 6893 dasm_put(Dst, 3817, LJ_ENDIAN_SELECT(2,0), LJ_ENDIAN_SELECT(4,0));
6893 if (op == BC_IST || op == BC_ISF) { 6894 if (op == BC_IST || op == BC_ISF) {
6894 dasm_put(Dst, 3823, LJ_TISTRUECOND, (-(BCBIAS_J*4 >> 16) & 65535)); 6895 dasm_put(Dst, 3824, LJ_TISTRUECOND, (-(BCBIAS_J*4 >> 16) & 65535));
6895 if (op == BC_IST) { 6896 if (op == BC_IST) {
6896 dasm_put(Dst, 3830); 6897 dasm_put(Dst, 3831);
6897 } else { 6898 } else {
6898 dasm_put(Dst, 3832); 6899 dasm_put(Dst, 3833);
6899 } 6900 }
6900 dasm_put(Dst, 3834); 6901 dasm_put(Dst, 3835);
6901 } else { 6902 } else {
6902 dasm_put(Dst, 3836, LJ_TISTRUECOND); 6903 dasm_put(Dst, 3837, LJ_TISTRUECOND);
6903 if (op == BC_ISTC) { 6904 if (op == BC_ISTC) {
6904 dasm_put(Dst, 3840); 6905 dasm_put(Dst, 3841);
6905 } else { 6906 } else {
6906 dasm_put(Dst, 3843); 6907 dasm_put(Dst, 3844);
6907 } 6908 }
6908 dasm_put(Dst, 3846, (-(BCBIAS_J*4 >> 16) & 65535)); 6909 dasm_put(Dst, 3847, (-(BCBIAS_J*4 >> 16) & 65535));
6909 } 6910 }
6910 dasm_put(Dst, 3855); 6911 dasm_put(Dst, 3856);
6911 break; 6912 break;
6912 6913
6913 /* -- Unary ops --------------------------------------------------------- */ 6914 /* -- Unary ops --------------------------------------------------------- */
6914 6915
6915 case BC_MOV: 6916 case BC_MOV:
6916 dasm_put(Dst, 3867); 6917 dasm_put(Dst, 3868);
6917 break; 6918 break;
6918 case BC_NOT: 6919 case BC_NOT:
6919 dasm_put(Dst, 3883, LJ_ENDIAN_SELECT(4,0), LJ_TFALSE, LJ_TISTRUECOND, LJ_TTRUE, LJ_ENDIAN_SELECT(4,0)); 6920 dasm_put(Dst, 3884, LJ_ENDIAN_SELECT(4,0), LJ_TFALSE, LJ_TISTRUECOND, LJ_TTRUE, LJ_ENDIAN_SELECT(4,0));
6920 break; 6921 break;
6921 case BC_UNM: 6922 case BC_UNM:
6922 dasm_put(Dst, 3907, LJ_ENDIAN_SELECT(4,0), LJ_TISNUM); 6923 dasm_put(Dst, 3908, LJ_ENDIAN_SELECT(4,0), LJ_TISNUM);
6923 break; 6924 break;
6924 case BC_LEN: 6925 case BC_LEN:
6925 dasm_put(Dst, 3930, LJ_ENDIAN_SELECT(4,0), LJ_ENDIAN_SELECT(0,4), LJ_TSTR, LJ_TTAB, Dt5(->len)); 6926 dasm_put(Dst, 3931, LJ_ENDIAN_SELECT(4,0), LJ_ENDIAN_SELECT(0,4), LJ_TSTR, LJ_TTAB, Dt5(->len));
6926#ifdef LUAJIT_ENABLE_LUA52COMPAT 6927#ifdef LUAJIT_ENABLE_LUA52COMPAT
6927 dasm_put(Dst, 3964, Dt6(->metatable)); 6928 dasm_put(Dst, 3965, Dt6(->metatable));
6928#endif 6929#endif
6929 dasm_put(Dst, 3971, DISPATCH_GOT(lj_tab_len)); 6930 dasm_put(Dst, 3972, DISPATCH_GOT(lj_tab_len));
6930#ifdef LUAJIT_ENABLE_LUA52COMPAT 6931#ifdef LUAJIT_ENABLE_LUA52COMPAT
6931 dasm_put(Dst, 3980, Dt6(->nomm), 1<<MM_len); 6932 dasm_put(Dst, 3981, Dt6(->nomm), 1<<MM_len);
6932#endif 6933#endif
6933 break; 6934 break;
6934 6935
@@ -6937,273 +6938,273 @@ static void build_ins(BuildCtx *ctx, BCOp op, int defop)
6937 6938
6938 case BC_ADDVN: case BC_ADDNV: case BC_ADDVV: 6939 case BC_ADDVN: case BC_ADDNV: case BC_ADDVV:
6939 vk = ((int)op - BC_ADDVN) / (BC_ADDNV-BC_ADDVN); 6940 vk = ((int)op - BC_ADDVN) / (BC_ADDNV-BC_ADDVN);
6940 dasm_put(Dst, 3992); 6941 dasm_put(Dst, 3993);
6941 switch (vk) { 6942 switch (vk) {
6942 case 0: 6943 case 0:
6943 dasm_put(Dst, 3996, LJ_ENDIAN_SELECT(4,0), LJ_TISNUM); 6944 dasm_put(Dst, 3997, LJ_ENDIAN_SELECT(4,0), LJ_TISNUM);
6944 break; 6945 break;
6945 case 1: 6946 case 1:
6946 dasm_put(Dst, 4005, LJ_ENDIAN_SELECT(4,0), LJ_TISNUM); 6947 dasm_put(Dst, 4006, LJ_ENDIAN_SELECT(4,0), LJ_TISNUM);
6947 break; 6948 break;
6948 default: 6949 default:
6949 dasm_put(Dst, 4014, LJ_ENDIAN_SELECT(4,0), LJ_ENDIAN_SELECT(4,0), LJ_TISNUM, LJ_TISNUM); 6950 dasm_put(Dst, 4015, LJ_ENDIAN_SELECT(4,0), LJ_ENDIAN_SELECT(4,0), LJ_TISNUM, LJ_TISNUM);
6950 break; 6951 break;
6951 } 6952 }
6952 dasm_put(Dst, 4028); 6953 dasm_put(Dst, 4029);
6953 break; 6954 break;
6954 case BC_SUBVN: case BC_SUBNV: case BC_SUBVV: 6955 case BC_SUBVN: case BC_SUBNV: case BC_SUBVV:
6955 vk = ((int)op - BC_ADDVN) / (BC_ADDNV-BC_ADDVN); 6956 vk = ((int)op - BC_ADDVN) / (BC_ADDNV-BC_ADDVN);
6956 dasm_put(Dst, 4045); 6957 dasm_put(Dst, 4046);
6957 switch (vk) { 6958 switch (vk) {
6958 case 0: 6959 case 0:
6959 dasm_put(Dst, 4049, LJ_ENDIAN_SELECT(4,0), LJ_TISNUM); 6960 dasm_put(Dst, 4050, LJ_ENDIAN_SELECT(4,0), LJ_TISNUM);
6960 break; 6961 break;
6961 case 1: 6962 case 1:
6962 dasm_put(Dst, 4058, LJ_ENDIAN_SELECT(4,0), LJ_TISNUM); 6963 dasm_put(Dst, 4059, LJ_ENDIAN_SELECT(4,0), LJ_TISNUM);
6963 break; 6964 break;
6964 default: 6965 default:
6965 dasm_put(Dst, 4067, LJ_ENDIAN_SELECT(4,0), LJ_ENDIAN_SELECT(4,0), LJ_TISNUM, LJ_TISNUM); 6966 dasm_put(Dst, 4068, LJ_ENDIAN_SELECT(4,0), LJ_ENDIAN_SELECT(4,0), LJ_TISNUM, LJ_TISNUM);
6966 break; 6967 break;
6967 } 6968 }
6968 dasm_put(Dst, 4081); 6969 dasm_put(Dst, 4082);
6969 break; 6970 break;
6970 case BC_MULVN: case BC_MULNV: case BC_MULVV: 6971 case BC_MULVN: case BC_MULNV: case BC_MULVV:
6971 vk = ((int)op - BC_ADDVN) / (BC_ADDNV-BC_ADDVN); 6972 vk = ((int)op - BC_ADDVN) / (BC_ADDNV-BC_ADDVN);
6972 dasm_put(Dst, 4098); 6973 dasm_put(Dst, 4099);
6973 switch (vk) { 6974 switch (vk) {
6974 case 0: 6975 case 0:
6975 dasm_put(Dst, 4102, LJ_ENDIAN_SELECT(4,0), LJ_TISNUM); 6976 dasm_put(Dst, 4103, LJ_ENDIAN_SELECT(4,0), LJ_TISNUM);
6976 break; 6977 break;
6977 case 1: 6978 case 1:
6978 dasm_put(Dst, 4111, LJ_ENDIAN_SELECT(4,0), LJ_TISNUM); 6979 dasm_put(Dst, 4112, LJ_ENDIAN_SELECT(4,0), LJ_TISNUM);
6979 break; 6980 break;
6980 default: 6981 default:
6981 dasm_put(Dst, 4120, LJ_ENDIAN_SELECT(4,0), LJ_ENDIAN_SELECT(4,0), LJ_TISNUM, LJ_TISNUM); 6982 dasm_put(Dst, 4121, LJ_ENDIAN_SELECT(4,0), LJ_ENDIAN_SELECT(4,0), LJ_TISNUM, LJ_TISNUM);
6982 break; 6983 break;
6983 } 6984 }
6984 dasm_put(Dst, 4134); 6985 dasm_put(Dst, 4135);
6985 break; 6986 break;
6986 case BC_DIVVN: case BC_DIVNV: case BC_DIVVV: 6987 case BC_DIVVN: case BC_DIVNV: case BC_DIVVV:
6987 vk = ((int)op - BC_ADDVN) / (BC_ADDNV-BC_ADDVN); 6988 vk = ((int)op - BC_ADDVN) / (BC_ADDNV-BC_ADDVN);
6988 dasm_put(Dst, 4151); 6989 dasm_put(Dst, 4152);
6989 switch (vk) { 6990 switch (vk) {
6990 case 0: 6991 case 0:
6991 dasm_put(Dst, 4155, LJ_ENDIAN_SELECT(4,0), LJ_TISNUM); 6992 dasm_put(Dst, 4156, LJ_ENDIAN_SELECT(4,0), LJ_TISNUM);
6992 break; 6993 break;
6993 case 1: 6994 case 1:
6994 dasm_put(Dst, 4164, LJ_ENDIAN_SELECT(4,0), LJ_TISNUM); 6995 dasm_put(Dst, 4165, LJ_ENDIAN_SELECT(4,0), LJ_TISNUM);
6995 break; 6996 break;
6996 default: 6997 default:
6997 dasm_put(Dst, 4173, LJ_ENDIAN_SELECT(4,0), LJ_ENDIAN_SELECT(4,0), LJ_TISNUM, LJ_TISNUM); 6998 dasm_put(Dst, 4174, LJ_ENDIAN_SELECT(4,0), LJ_ENDIAN_SELECT(4,0), LJ_TISNUM, LJ_TISNUM);
6998 break; 6999 break;
6999 } 7000 }
7000 dasm_put(Dst, 4187); 7001 dasm_put(Dst, 4188);
7001 break; 7002 break;
7002 case BC_MODVN: 7003 case BC_MODVN:
7003 vk = ((int)op - BC_ADDVN) / (BC_ADDNV-BC_ADDVN); 7004 vk = ((int)op - BC_ADDVN) / (BC_ADDNV-BC_ADDVN);
7004 dasm_put(Dst, 4204); 7005 dasm_put(Dst, 4205);
7005 switch (vk) { 7006 switch (vk) {
7006 case 0: 7007 case 0:
7007 dasm_put(Dst, 4208, LJ_ENDIAN_SELECT(4,0), LJ_TISNUM); 7008 dasm_put(Dst, 4209, LJ_ENDIAN_SELECT(4,0), LJ_TISNUM);
7008 break; 7009 break;
7009 case 1: 7010 case 1:
7010 dasm_put(Dst, 4217, LJ_ENDIAN_SELECT(4,0), LJ_TISNUM); 7011 dasm_put(Dst, 4218, LJ_ENDIAN_SELECT(4,0), LJ_TISNUM);
7011 break; 7012 break;
7012 default: 7013 default:
7013 dasm_put(Dst, 4226, LJ_ENDIAN_SELECT(4,0), LJ_ENDIAN_SELECT(4,0), LJ_TISNUM, LJ_TISNUM); 7014 dasm_put(Dst, 4227, LJ_ENDIAN_SELECT(4,0), LJ_ENDIAN_SELECT(4,0), LJ_TISNUM, LJ_TISNUM);
7014 break; 7015 break;
7015 } 7016 }
7016 dasm_put(Dst, 4240); 7017 dasm_put(Dst, 4241);
7017 break; 7018 break;
7018 case BC_MODNV: case BC_MODVV: 7019 case BC_MODNV: case BC_MODVV:
7019 vk = ((int)op - BC_ADDVN) / (BC_ADDNV-BC_ADDVN); 7020 vk = ((int)op - BC_ADDVN) / (BC_ADDNV-BC_ADDVN);
7020 dasm_put(Dst, 4262); 7021 dasm_put(Dst, 4263);
7021 switch (vk) { 7022 switch (vk) {
7022 case 0: 7023 case 0:
7023 dasm_put(Dst, 4266, LJ_ENDIAN_SELECT(4,0), LJ_TISNUM); 7024 dasm_put(Dst, 4267, LJ_ENDIAN_SELECT(4,0), LJ_TISNUM);
7024 break; 7025 break;
7025 case 1: 7026 case 1:
7026 dasm_put(Dst, 4275, LJ_ENDIAN_SELECT(4,0), LJ_TISNUM); 7027 dasm_put(Dst, 4276, LJ_ENDIAN_SELECT(4,0), LJ_TISNUM);
7027 break; 7028 break;
7028 default: 7029 default:
7029 dasm_put(Dst, 4284, LJ_ENDIAN_SELECT(4,0), LJ_ENDIAN_SELECT(4,0), LJ_TISNUM, LJ_TISNUM); 7030 dasm_put(Dst, 4285, LJ_ENDIAN_SELECT(4,0), LJ_ENDIAN_SELECT(4,0), LJ_TISNUM, LJ_TISNUM);
7030 break; 7031 break;
7031 } 7032 }
7032 dasm_put(Dst, 4298); 7033 dasm_put(Dst, 4299);
7033 break; 7034 break;
7034 case BC_POW: 7035 case BC_POW:
7035 dasm_put(Dst, 4305, LJ_ENDIAN_SELECT(4,0), LJ_ENDIAN_SELECT(4,0), LJ_TISNUM, LJ_TISNUM, DISPATCH_GOT(pow)); 7036 dasm_put(Dst, 4306, LJ_ENDIAN_SELECT(4,0), LJ_ENDIAN_SELECT(4,0), LJ_TISNUM, LJ_TISNUM, DISPATCH_GOT(pow));
7036 break; 7037 break;
7037 7038
7038 case BC_CAT: 7039 case BC_CAT:
7039 dasm_put(Dst, 4341, Dt1(->base), DISPATCH_GOT(lj_meta_cat), Dt1(->base)); 7040 dasm_put(Dst, 4342, Dt1(->base), DISPATCH_GOT(lj_meta_cat), Dt1(->base));
7040 break; 7041 break;
7041 7042
7042 /* -- Constant ops ------------------------------------------------------ */ 7043 /* -- Constant ops ------------------------------------------------------ */
7043 7044
7044 case BC_KSTR: 7045 case BC_KSTR:
7045 dasm_put(Dst, 4376, LJ_TSTR, LJ_ENDIAN_SELECT(0,4), LJ_ENDIAN_SELECT(4,0)); 7046 dasm_put(Dst, 4377, LJ_TSTR, LJ_ENDIAN_SELECT(0,4), LJ_ENDIAN_SELECT(4,0));
7046 break; 7047 break;
7047 case BC_KCDATA: 7048 case BC_KCDATA:
7048#if LJ_HASFFI 7049#if LJ_HASFFI
7049 dasm_put(Dst, 4398, LJ_TCDATA, LJ_ENDIAN_SELECT(0,4), LJ_ENDIAN_SELECT(4,0)); 7050 dasm_put(Dst, 4399, LJ_TCDATA, LJ_ENDIAN_SELECT(0,4), LJ_ENDIAN_SELECT(4,0));
7050#endif 7051#endif
7051 break; 7052 break;
7052 case BC_KSHORT: 7053 case BC_KSHORT:
7053 dasm_put(Dst, 4420); 7054 dasm_put(Dst, 4421);
7054 break; 7055 break;
7055 case BC_KNUM: 7056 case BC_KNUM:
7056 dasm_put(Dst, 4437); 7057 dasm_put(Dst, 4438);
7057 break; 7058 break;
7058 case BC_KPRI: 7059 case BC_KPRI:
7059 dasm_put(Dst, 4453, LJ_ENDIAN_SELECT(4,0)); 7060 dasm_put(Dst, 4454, LJ_ENDIAN_SELECT(4,0));
7060 break; 7061 break;
7061 case BC_KNIL: 7062 case BC_KNIL:
7062 dasm_put(Dst, 4470, LJ_ENDIAN_SELECT(4,0), LJ_ENDIAN_SELECT(4,0)); 7063 dasm_put(Dst, 4471, LJ_ENDIAN_SELECT(4,0), LJ_ENDIAN_SELECT(4,0));
7063 break; 7064 break;
7064 7065
7065 /* -- Upvalue and function ops ------------------------------------------ */ 7066 /* -- Upvalue and function ops ------------------------------------------ */
7066 7067
7067 case BC_UGET: 7068 case BC_UGET:
7068 dasm_put(Dst, 4494, LJ_ENDIAN_SELECT(-8,-4), Dt7(->uvptr), DtA(->v)); 7069 dasm_put(Dst, 4495, LJ_ENDIAN_SELECT(-8,-4), Dt7(->uvptr), DtA(->v));
7069 break; 7070 break;
7070 case BC_USETV: 7071 case BC_USETV:
7071 dasm_put(Dst, 4517, LJ_ENDIAN_SELECT(-8,-4), Dt7(->uvptr), DtA(->marked), DtA(->v), LJ_GC_BLACK, DtA(->closed), LJ_ENDIAN_SELECT(4,0), LJ_GC_BLACK|1, -(LJ_TISNUM+1), LJ_TISGCV - (LJ_TISNUM+1), LJ_ENDIAN_SELECT(0,4), Dt4(->gch.marked), LJ_GC_WHITES, DISPATCH_GOT(lj_gc_barrieruv), GG_DISP2G); 7072 dasm_put(Dst, 4518, LJ_ENDIAN_SELECT(-8,-4), Dt7(->uvptr), DtA(->marked), DtA(->v), LJ_GC_BLACK, DtA(->closed), LJ_ENDIAN_SELECT(4,0), LJ_GC_BLACK|1, -(LJ_TISNUM+1), LJ_TISGCV - (LJ_TISNUM+1), LJ_ENDIAN_SELECT(0,4), Dt4(->gch.marked), LJ_GC_WHITES, DISPATCH_GOT(lj_gc_barrieruv), GG_DISP2G);
7072 break; 7073 break;
7073 case BC_USETS: 7074 case BC_USETS:
7074 dasm_put(Dst, 4577, LJ_ENDIAN_SELECT(-8,-4), Dt7(->uvptr), DtA(->marked), DtA(->v), Dt5(->marked), LJ_GC_BLACK, DtA(->closed), LJ_TSTR, LJ_ENDIAN_SELECT(0,4), LJ_ENDIAN_SELECT(4,0), LJ_GC_WHITES, DISPATCH_GOT(lj_gc_barrieruv), GG_DISP2G); 7075 dasm_put(Dst, 4578, LJ_ENDIAN_SELECT(-8,-4), Dt7(->uvptr), DtA(->marked), DtA(->v), Dt5(->marked), LJ_GC_BLACK, DtA(->closed), LJ_TSTR, LJ_ENDIAN_SELECT(0,4), LJ_ENDIAN_SELECT(4,0), LJ_GC_WHITES, DISPATCH_GOT(lj_gc_barrieruv), GG_DISP2G);
7075 break; 7076 break;
7076 case BC_USETN: 7077 case BC_USETN:
7077 dasm_put(Dst, 4632, LJ_ENDIAN_SELECT(-8,-4), Dt7(->uvptr), DtA(->v)); 7078 dasm_put(Dst, 4633, LJ_ENDIAN_SELECT(-8,-4), Dt7(->uvptr), DtA(->v));
7078 break; 7079 break;
7079 case BC_USETP: 7080 case BC_USETP:
7080 dasm_put(Dst, 4655, LJ_ENDIAN_SELECT(-8,-4), Dt7(->uvptr), DtA(->v), LJ_ENDIAN_SELECT(4,0)); 7081 dasm_put(Dst, 4656, LJ_ENDIAN_SELECT(-8,-4), Dt7(->uvptr), DtA(->v), LJ_ENDIAN_SELECT(4,0));
7081 break; 7082 break;
7082 7083
7083 case BC_UCLO: 7084 case BC_UCLO:
7084 dasm_put(Dst, 4679, Dt1(->openupval), (-(BCBIAS_J*4 >> 16) & 65535), DISPATCH_GOT(lj_func_closeuv), Dt1(->base), Dt1(->base)); 7085 dasm_put(Dst, 4680, Dt1(->openupval), (-(BCBIAS_J*4 >> 16) & 65535), DISPATCH_GOT(lj_func_closeuv), Dt1(->base), Dt1(->base));
7085 break; 7086 break;
7086 7087
7087 case BC_FNEW: 7088 case BC_FNEW:
7088 dasm_put(Dst, 4710, DISPATCH_GOT(lj_func_newL_gc), LJ_ENDIAN_SELECT(-8,-4), Dt1(->base), Dt1(->base), LJ_TFUNC, LJ_ENDIAN_SELECT(4,0), LJ_ENDIAN_SELECT(0,4)); 7089 dasm_put(Dst, 4711, DISPATCH_GOT(lj_func_newL_gc), LJ_ENDIAN_SELECT(-8,-4), Dt1(->base), Dt1(->base), LJ_TFUNC, LJ_ENDIAN_SELECT(4,0), LJ_ENDIAN_SELECT(0,4));
7089 break; 7090 break;
7090 7091
7091 /* -- Table ops --------------------------------------------------------- */ 7092 /* -- Table ops --------------------------------------------------------- */
7092 7093
7093 case BC_TNEW: 7094 case BC_TNEW:
7094 case BC_TDUP: 7095 case BC_TDUP:
7095 dasm_put(Dst, 4743, DISPATCH_GL(gc.total), DISPATCH_GL(gc.threshold), Dt1(->base)); 7096 dasm_put(Dst, 4744, DISPATCH_GL(gc.total), DISPATCH_GL(gc.threshold), Dt1(->base));
7096 if (op == BC_TNEW) { 7097 if (op == BC_TNEW) {
7097 dasm_put(Dst, 4755, DISPATCH_GOT(lj_tab_new)); 7098 dasm_put(Dst, 4756, DISPATCH_GOT(lj_tab_new));
7098 } else { 7099 } else {
7099 dasm_put(Dst, 4766, DISPATCH_GOT(lj_tab_dup)); 7100 dasm_put(Dst, 4767, DISPATCH_GOT(lj_tab_dup));
7100 } 7101 }
7101 dasm_put(Dst, 4774, Dt1(->base), LJ_TTAB, LJ_ENDIAN_SELECT(0,4), LJ_ENDIAN_SELECT(4,0), DISPATCH_GOT(lj_gc_step_fixtop)); 7102 dasm_put(Dst, 4775, Dt1(->base), LJ_TTAB, LJ_ENDIAN_SELECT(0,4), LJ_ENDIAN_SELECT(4,0), DISPATCH_GOT(lj_gc_step_fixtop));
7102 break; 7103 break;
7103 7104
7104 case BC_GGET: 7105 case BC_GGET:
7105 case BC_GSET: 7106 case BC_GSET:
7106 dasm_put(Dst, 4804, LJ_ENDIAN_SELECT(-8,-4), Dt7(->env)); 7107 dasm_put(Dst, 4805, LJ_ENDIAN_SELECT(-8,-4), Dt7(->env));
7107 if (op == BC_GGET) { 7108 if (op == BC_GGET) {
7108 dasm_put(Dst, 4812); 7109 dasm_put(Dst, 4813);
7109 } else { 7110 } else {
7110 dasm_put(Dst, 4815); 7111 dasm_put(Dst, 4816);
7111 } 7112 }
7112 dasm_put(Dst, 4818); 7113 dasm_put(Dst, 4819);
7113 break; 7114 break;
7114 7115
7115 case BC_TGETV: 7116 case BC_TGETV:
7116 dasm_put(Dst, 4820, LJ_ENDIAN_SELECT(4,0), LJ_ENDIAN_SELECT(4,0), LJ_ENDIAN_SELECT(0,4), LJ_TTAB, LJ_TISNUM, LJ_TSTR, Dt6(->asize), Dt6(->array), LJ_ENDIAN_SELECT(4,0), Dt6(->metatable), Dt6(->nomm), 1<<MM_index); 7117 dasm_put(Dst, 4821, LJ_ENDIAN_SELECT(4,0), LJ_ENDIAN_SELECT(4,0), LJ_ENDIAN_SELECT(0,4), LJ_TTAB, LJ_TISNUM, LJ_TSTR, Dt6(->asize), Dt6(->array), LJ_ENDIAN_SELECT(4,0), Dt6(->metatable), Dt6(->nomm), 1<<MM_index);
7117 dasm_put(Dst, 4895, LJ_ENDIAN_SELECT(0,4)); 7118 dasm_put(Dst, 4896, LJ_ENDIAN_SELECT(0,4));
7118 break; 7119 break;
7119 case BC_TGETS: 7120 case BC_TGETS:
7120 dasm_put(Dst, 4901, LJ_ENDIAN_SELECT(4,0), LJ_TTAB, LJ_ENDIAN_SELECT(0,4), Dt6(->hmask), Dt5(->hash), Dt6(->node), offsetof(Node, key)+LJ_ENDIAN_SELECT(4,0), offsetof(Node, key)+LJ_ENDIAN_SELECT(0,4), DtB(->next), offsetof(Node, val)+LJ_ENDIAN_SELECT(4,0), -LJ_TSTR, Dt6(->metatable), offsetof(Node, val)+LJ_ENDIAN_SELECT(0,4), LJ_ENDIAN_SELECT(4,0), LJ_ENDIAN_SELECT(0,4)); 7121 dasm_put(Dst, 4902, LJ_ENDIAN_SELECT(4,0), LJ_TTAB, LJ_ENDIAN_SELECT(0,4), Dt6(->hmask), Dt5(->hash), Dt6(->node), offsetof(Node, key)+LJ_ENDIAN_SELECT(4,0), offsetof(Node, key)+LJ_ENDIAN_SELECT(0,4), DtB(->next), offsetof(Node, val)+LJ_ENDIAN_SELECT(4,0), -LJ_TSTR, Dt6(->metatable), offsetof(Node, val)+LJ_ENDIAN_SELECT(0,4), LJ_ENDIAN_SELECT(4,0), LJ_ENDIAN_SELECT(0,4));
7121 dasm_put(Dst, 4970, LJ_TNIL, Dt6(->nomm), 1<<MM_index); 7122 dasm_put(Dst, 4971, LJ_TNIL, Dt6(->nomm), 1<<MM_index);
7122 break; 7123 break;
7123 case BC_TGETB: 7124 case BC_TGETB:
7124 dasm_put(Dst, 4987, LJ_ENDIAN_SELECT(4,0), LJ_TTAB, LJ_ENDIAN_SELECT(0,4), Dt6(->asize), Dt6(->array), LJ_ENDIAN_SELECT(4,0), Dt6(->metatable), Dt6(->nomm), 1<<MM_index); 7125 dasm_put(Dst, 4988, LJ_ENDIAN_SELECT(4,0), LJ_TTAB, LJ_ENDIAN_SELECT(0,4), Dt6(->asize), Dt6(->array), LJ_ENDIAN_SELECT(4,0), Dt6(->metatable), Dt6(->nomm), 1<<MM_index);
7125 break; 7126 break;
7126 7127
7127 case BC_TSETV: 7128 case BC_TSETV:
7128 dasm_put(Dst, 5044, LJ_ENDIAN_SELECT(4,0), LJ_ENDIAN_SELECT(4,0), LJ_ENDIAN_SELECT(0,4), LJ_TTAB, LJ_TISNUM, LJ_TSTR, Dt6(->asize), Dt6(->array), Dt6(->marked), LJ_ENDIAN_SELECT(4,0), LJ_GC_BLACK, Dt6(->metatable), Dt6(->nomm), 1<<MM_newindex); 7129 dasm_put(Dst, 5045, LJ_ENDIAN_SELECT(4,0), LJ_ENDIAN_SELECT(4,0), LJ_ENDIAN_SELECT(0,4), LJ_TTAB, LJ_TISNUM, LJ_TSTR, Dt6(->asize), Dt6(->array), Dt6(->marked), LJ_ENDIAN_SELECT(4,0), LJ_GC_BLACK, Dt6(->metatable), Dt6(->nomm), 1<<MM_newindex);
7129 dasm_put(Dst, 5117, LJ_ENDIAN_SELECT(0,4), DISPATCH_GL(gc.grayagain), ~LJ_GC_BLACK & 255, DISPATCH_GL(gc.grayagain), Dt6(->marked), Dt6(->gclist)); 7130 dasm_put(Dst, 5118, LJ_ENDIAN_SELECT(0,4), DISPATCH_GL(gc.grayagain), ~LJ_GC_BLACK & 255, DISPATCH_GL(gc.grayagain), Dt6(->marked), Dt6(->gclist));
7130 break; 7131 break;
7131 case BC_TSETS: 7132 case BC_TSETS:
7132 dasm_put(Dst, 5145, LJ_ENDIAN_SELECT(4,0), LJ_TTAB, LJ_ENDIAN_SELECT(0,4), Dt6(->hmask), Dt5(->hash), Dt6(->node), Dt6(->nomm), offsetof(Node, key)+LJ_ENDIAN_SELECT(4,0), offsetof(Node, key)+LJ_ENDIAN_SELECT(0,4), LJ_TSTR, DtB(->next), offsetof(Node, val)+LJ_ENDIAN_SELECT(4,0), Dt6(->marked), Dt6(->metatable), LJ_GC_BLACK); 7133 dasm_put(Dst, 5146, LJ_ENDIAN_SELECT(4,0), LJ_TTAB, LJ_ENDIAN_SELECT(0,4), Dt6(->hmask), Dt5(->hash), Dt6(->node), Dt6(->nomm), offsetof(Node, key)+LJ_ENDIAN_SELECT(4,0), offsetof(Node, key)+LJ_ENDIAN_SELECT(0,4), LJ_TSTR, DtB(->next), offsetof(Node, val)+LJ_ENDIAN_SELECT(4,0), Dt6(->marked), Dt6(->metatable), LJ_GC_BLACK);
7133 dasm_put(Dst, 5203, DtB(->val), Dt6(->nomm), 1<<MM_newindex, Dt6(->metatable), DISPATCH_GL(tmptv), Dt6(->nomm), 1<<MM_newindex, LJ_TSTR, DISPATCH_GOT(lj_tab_newkey), LJ_ENDIAN_SELECT(0,4), LJ_ENDIAN_SELECT(4,0), Dt1(->base), Dt1(->base)); 7134 dasm_put(Dst, 5204, DtB(->val), Dt6(->nomm), 1<<MM_newindex, Dt6(->metatable), DISPATCH_GL(tmptv), Dt6(->nomm), 1<<MM_newindex, LJ_TSTR, DISPATCH_GOT(lj_tab_newkey), LJ_ENDIAN_SELECT(0,4), LJ_ENDIAN_SELECT(4,0), Dt1(->base), Dt1(->base));
7134 dasm_put(Dst, 5265, DISPATCH_GL(gc.grayagain), ~LJ_GC_BLACK & 255, DISPATCH_GL(gc.grayagain), Dt6(->marked), Dt6(->gclist)); 7135 dasm_put(Dst, 5266, DISPATCH_GL(gc.grayagain), ~LJ_GC_BLACK & 255, DISPATCH_GL(gc.grayagain), Dt6(->marked), Dt6(->gclist));
7135 break; 7136 break;
7136 case BC_TSETB: 7137 case BC_TSETB:
7137 dasm_put(Dst, 5282, LJ_ENDIAN_SELECT(4,0), LJ_TTAB, LJ_ENDIAN_SELECT(0,4), Dt6(->asize), Dt6(->array), LJ_ENDIAN_SELECT(4,0), Dt6(->marked), LJ_GC_BLACK, Dt6(->metatable), Dt6(->nomm), 1<<MM_newindex, DISPATCH_GL(gc.grayagain)); 7138 dasm_put(Dst, 5283, LJ_ENDIAN_SELECT(4,0), LJ_TTAB, LJ_ENDIAN_SELECT(0,4), Dt6(->asize), Dt6(->array), LJ_ENDIAN_SELECT(4,0), Dt6(->marked), LJ_GC_BLACK, Dt6(->metatable), Dt6(->nomm), 1<<MM_newindex, DISPATCH_GL(gc.grayagain));
7138 dasm_put(Dst, 5349, ~LJ_GC_BLACK & 255, DISPATCH_GL(gc.grayagain), Dt6(->marked), Dt6(->gclist)); 7139 dasm_put(Dst, 5350, ~LJ_GC_BLACK & 255, DISPATCH_GL(gc.grayagain), Dt6(->marked), Dt6(->gclist));
7139 break; 7140 break;
7140 7141
7141 case BC_TSETM: 7142 case BC_TSETM:
7142 dasm_put(Dst, 5360, -8+LJ_ENDIAN_SELECT(0,4), LJ_ENDIAN_SELECT(0,4), Dt6(->asize), Dt6(->marked), Dt6(->array), LJ_GC_BLACK, DISPATCH_GOT(lj_tab_reasize), Dt1(->base), Dt1(->base), DISPATCH_GL(gc.grayagain), ~LJ_GC_BLACK & 255, DISPATCH_GL(gc.grayagain), Dt6(->marked)); 7143 dasm_put(Dst, 5361, -8+LJ_ENDIAN_SELECT(0,4), LJ_ENDIAN_SELECT(0,4), Dt6(->asize), Dt6(->marked), Dt6(->array), LJ_GC_BLACK, DISPATCH_GOT(lj_tab_reasize), Dt1(->base), Dt1(->base), DISPATCH_GL(gc.grayagain), ~LJ_GC_BLACK & 255, DISPATCH_GL(gc.grayagain), Dt6(->marked));
7143 dasm_put(Dst, 5433, Dt6(->gclist)); 7144 dasm_put(Dst, 5434, Dt6(->gclist));
7144 break; 7145 break;
7145 7146
7146 /* -- Calls and vararg handling ----------------------------------------- */ 7147 /* -- Calls and vararg handling ----------------------------------------- */
7147 7148
7148 case BC_CALLM: 7149 case BC_CALLM:
7149 dasm_put(Dst, 5438); 7150 dasm_put(Dst, 5439);
7150 break; 7151 break;
7151 case BC_CALL: 7152 case BC_CALL:
7152 dasm_put(Dst, 5443, LJ_TFUNC, LJ_ENDIAN_SELECT(4,0), LJ_ENDIAN_SELECT(0,4), LJ_ENDIAN_SELECT(-4,-8), Dt7(->pc)); 7153 dasm_put(Dst, 5444, LJ_TFUNC, LJ_ENDIAN_SELECT(4,0), LJ_ENDIAN_SELECT(0,4), LJ_ENDIAN_SELECT(-4,-8), Dt7(->pc));
7153 break; 7154 break;
7154 7155
7155 case BC_CALLMT: 7156 case BC_CALLMT:
7156 dasm_put(Dst, 5472); 7157 dasm_put(Dst, 5473);
7157 break; 7158 break;
7158 case BC_CALLT: 7159 case BC_CALLT:
7159 dasm_put(Dst, 5474, LJ_TFUNC, LJ_ENDIAN_SELECT(4,0), LJ_ENDIAN_SELECT(0,4), LJ_ENDIAN_SELECT(-4,-8), FRAME_TYPE, Dt7(->ffid), FRAME_VARG, LJ_ENDIAN_SELECT(-8,-4), Dt7(->pc), -8+LJ_ENDIAN_SELECT(-8,-4), Dt7(->pc)); 7160 dasm_put(Dst, 5475, LJ_TFUNC, LJ_ENDIAN_SELECT(4,0), LJ_ENDIAN_SELECT(0,4), LJ_ENDIAN_SELECT(-4,-8), FRAME_TYPE, Dt7(->ffid), FRAME_VARG, LJ_ENDIAN_SELECT(-8,-4), Dt7(->pc), -8+LJ_ENDIAN_SELECT(-8,-4), Dt7(->pc));
7160 dasm_put(Dst, 5543, PC2PROTO(k), FRAME_TYPEP, LJ_ENDIAN_SELECT(-4,-8), FRAME_TYPE); 7161 dasm_put(Dst, 5544, PC2PROTO(k), FRAME_TYPEP, LJ_ENDIAN_SELECT(-4,-8), FRAME_TYPE);
7161 break; 7162 break;
7162 7163
7163 case BC_ITERC: 7164 case BC_ITERC:
7164 dasm_put(Dst, 5559, LJ_TFUNC, -24+LJ_ENDIAN_SELECT(4,0), -24+LJ_ENDIAN_SELECT(0,4), LJ_ENDIAN_SELECT(4,0), LJ_ENDIAN_SELECT(0,4), LJ_ENDIAN_SELECT(-4,-8), Dt7(->pc)); 7165 dasm_put(Dst, 5560, LJ_TFUNC, -24+LJ_ENDIAN_SELECT(4,0), -24+LJ_ENDIAN_SELECT(0,4), LJ_ENDIAN_SELECT(4,0), LJ_ENDIAN_SELECT(0,4), LJ_ENDIAN_SELECT(-4,-8), Dt7(->pc));
7165 break; 7166 break;
7166 7167
7167 case BC_ITERN: 7168 case BC_ITERN:
7168#if LJ_HASJIT 7169#if LJ_HASJIT
7169#endif 7170#endif
7170 dasm_put(Dst, 5594, -16+LJ_ENDIAN_SELECT(0,4), -8+LJ_ENDIAN_SELECT(0,4), Dt6(->asize), Dt6(->array), LJ_ENDIAN_SELECT(4,0), -4+LJ_ENDIAN_SELECT(2,0), (-(BCBIAS_J*4 >> 16) & 65535), -8+LJ_ENDIAN_SELECT(0,4), Dt6(->hmask), Dt6(->node), LJ_ENDIAN_SELECT(4,0), -4+LJ_ENDIAN_SELECT(2,0), DtB(->key), (-(BCBIAS_J*4 >> 16) & 65535)); 7171 dasm_put(Dst, 5595, -16+LJ_ENDIAN_SELECT(0,4), -8+LJ_ENDIAN_SELECT(0,4), Dt6(->asize), Dt6(->array), LJ_ENDIAN_SELECT(4,0), -4+LJ_ENDIAN_SELECT(2,0), (-(BCBIAS_J*4 >> 16) & 65535), -8+LJ_ENDIAN_SELECT(0,4), Dt6(->hmask), Dt6(->node), LJ_ENDIAN_SELECT(4,0), -4+LJ_ENDIAN_SELECT(2,0), DtB(->key), (-(BCBIAS_J*4 >> 16) & 65535));
7171 dasm_put(Dst, 5676, -8+LJ_ENDIAN_SELECT(0,4)); 7172 dasm_put(Dst, 5677, -8+LJ_ENDIAN_SELECT(0,4));
7172 break; 7173 break;
7173 7174
7174 case BC_ISNEXT: 7175 case BC_ISNEXT:
7175 dasm_put(Dst, 5679, -24+LJ_ENDIAN_SELECT(4,0), -24+LJ_ENDIAN_SELECT(0,4), -16+LJ_ENDIAN_SELECT(4,0), -8+LJ_ENDIAN_SELECT(4,0), LJ_TFUNC, -LJ_TTAB, Dt8(->ffid), -LJ_TNIL, -FF_next_N, (-(BCBIAS_J*4 >> 16) & 65535), -8+LJ_ENDIAN_SELECT(0,4), BC_JMP, BC_ITERC, -4+LJ_ENDIAN_SELECT(0,3), LJ_ENDIAN_SELECT(0,3)); 7176 dasm_put(Dst, 5680, -24+LJ_ENDIAN_SELECT(4,0), -24+LJ_ENDIAN_SELECT(0,4), -16+LJ_ENDIAN_SELECT(4,0), -8+LJ_ENDIAN_SELECT(4,0), LJ_TFUNC, -LJ_TTAB, Dt8(->ffid), -LJ_TNIL, -FF_next_N, (-(BCBIAS_J*4 >> 16) & 65535), -8+LJ_ENDIAN_SELECT(0,4), BC_JMP, BC_ITERC, -4+LJ_ENDIAN_SELECT(0,3), LJ_ENDIAN_SELECT(0,3));
7176 break; 7177 break;
7177 7178
7178 case BC_VARG: 7179 case BC_VARG:
7179 dasm_put(Dst, 5736, LJ_ENDIAN_SELECT(-4,-8), FRAME_VARG, LJ_ENDIAN_SELECT(4,0), LJ_ENDIAN_SELECT(0,4), LJ_ENDIAN_SELECT(4,0), LJ_ENDIAN_SELECT(0,4), Dt1(->maxstack), DISPATCH_GOT(lj_state_growstack), Dt1(->top), Dt1(->base), Dt1(->base)); 7180 dasm_put(Dst, 5737, LJ_ENDIAN_SELECT(-4,-8), FRAME_VARG, LJ_ENDIAN_SELECT(4,0), LJ_ENDIAN_SELECT(0,4), LJ_ENDIAN_SELECT(4,0), LJ_ENDIAN_SELECT(0,4), Dt1(->maxstack), DISPATCH_GOT(lj_state_growstack), Dt1(->top), Dt1(->base), Dt1(->base));
7180 dasm_put(Dst, 5823); 7181 dasm_put(Dst, 5824);
7181 break; 7182 break;
7182 7183
7183 /* -- Returns ----------------------------------------------------------- */ 7184 /* -- Returns ----------------------------------------------------------- */
7184 7185
7185 case BC_RETM: 7186 case BC_RETM:
7186 dasm_put(Dst, 5825); 7187 dasm_put(Dst, 5826);
7187 break; 7188 break;
7188 7189
7189 case BC_RET: 7190 case BC_RET:
7190 dasm_put(Dst, 5827, LJ_ENDIAN_SELECT(-4,-8), FRAME_TYPE, FRAME_VARG, LJ_ENDIAN_SELECT(-8,-4), Dt7(->pc), PC2PROTO(k), LJ_ENDIAN_SELECT(4,0), FRAME_TYPEP, LJ_ENDIAN_SELECT(-4,-8)); 7191 dasm_put(Dst, 5828, LJ_ENDIAN_SELECT(-4,-8), FRAME_TYPE, FRAME_VARG, LJ_ENDIAN_SELECT(-8,-4), Dt7(->pc), PC2PROTO(k), LJ_ENDIAN_SELECT(4,0), FRAME_TYPEP, LJ_ENDIAN_SELECT(-4,-8));
7191 break; 7192 break;
7192 7193
7193 case BC_RET0: case BC_RET1: 7194 case BC_RET0: case BC_RET1:
7194 dasm_put(Dst, 5899, LJ_ENDIAN_SELECT(-4,-8), FRAME_TYPE, FRAME_VARG); 7195 dasm_put(Dst, 5900, LJ_ENDIAN_SELECT(-4,-8), FRAME_TYPE, FRAME_VARG);
7195 if (op == BC_RET1) { 7196 if (op == BC_RET1) {
7196 dasm_put(Dst, 5912); 7197 dasm_put(Dst, 5913);
7197 } 7198 }
7198 dasm_put(Dst, 5914); 7199 dasm_put(Dst, 5915);
7199 if (op == BC_RET1) { 7200 if (op == BC_RET1) {
7200 dasm_put(Dst, 5919); 7201 dasm_put(Dst, 5920);
7201 } 7202 }
7202 dasm_put(Dst, 5921, LJ_ENDIAN_SELECT(-8,-4), Dt7(->pc), PC2PROTO(k)); 7203 dasm_put(Dst, 5922, LJ_ENDIAN_SELECT(-8,-4), Dt7(->pc), PC2PROTO(k));
7203 if (op == BC_RET1) { 7204 if (op == BC_RET1) {
7204 dasm_put(Dst, 5949, LJ_ENDIAN_SELECT(4,0)); 7205 dasm_put(Dst, 5950, LJ_ENDIAN_SELECT(4,0));
7205 } else { 7206 } else {
7206 dasm_put(Dst, 5952, -8+LJ_ENDIAN_SELECT(4,0)); 7207 dasm_put(Dst, 5953, -8+LJ_ENDIAN_SELECT(4,0));
7207 } 7208 }
7208 break; 7209 break;
7209 7210
@@ -7211,7 +7212,7 @@ static void build_ins(BuildCtx *ctx, BCOp op, int defop)
7211 7212
7212 case BC_FORL: 7213 case BC_FORL:
7213#if LJ_HASJIT 7214#if LJ_HASJIT
7214 dasm_put(Dst, 5955, GG_DISP2HOT, -HOTCOUNT_LOOP, GG_DISP2HOT); 7215 dasm_put(Dst, 5956, GG_DISP2HOT, -HOTCOUNT_LOOP, GG_DISP2HOT);
7215#endif 7216#endif
7216 break; 7217 break;
7217 7218
@@ -7223,35 +7224,35 @@ static void build_ins(BuildCtx *ctx, BCOp op, int defop)
7223 case BC_FORI: 7224 case BC_FORI:
7224 case BC_IFORL: 7225 case BC_IFORL:
7225 vk = (op == BC_IFORL || op == BC_JFORL); 7226 vk = (op == BC_IFORL || op == BC_JFORL);
7226 dasm_put(Dst, 5967); 7227 dasm_put(Dst, 5968);
7227 if (vk) { 7228 if (vk) {
7228 dasm_put(Dst, 5969, FORL_IDX*8, FORL_STEP*8, FORL_STOP*8, FORL_STEP*8+LJ_ENDIAN_SELECT(4,0), FORL_IDX*8); 7229 dasm_put(Dst, 5970, FORL_IDX*8, FORL_STEP*8, FORL_STOP*8, FORL_STEP*8+LJ_ENDIAN_SELECT(4,0), FORL_IDX*8);
7229 } else { 7230 } else {
7230 dasm_put(Dst, 5981, FORL_IDX*8+LJ_ENDIAN_SELECT(4,0), FORL_STEP*8+LJ_ENDIAN_SELECT(4,0), FORL_STOP*8+LJ_ENDIAN_SELECT(4,0), LJ_TISNUM, LJ_TISNUM, LJ_TISNUM, FORL_IDX*8, FORL_STOP*8); 7231 dasm_put(Dst, 5982, FORL_IDX*8+LJ_ENDIAN_SELECT(4,0), FORL_STEP*8+LJ_ENDIAN_SELECT(4,0), FORL_STOP*8+LJ_ENDIAN_SELECT(4,0), LJ_TISNUM, LJ_TISNUM, LJ_TISNUM, FORL_IDX*8, FORL_STOP*8);
7231 } 7232 }
7232 if (op != BC_JFORL) { 7233 if (op != BC_JFORL) {
7233 dasm_put(Dst, 6002, (-(BCBIAS_J*4 >> 16) & 65535)); 7234 dasm_put(Dst, 6003, (-(BCBIAS_J*4 >> 16) & 65535));
7234 } 7235 }
7235 dasm_put(Dst, 6006, FORL_EXT*8); 7236 dasm_put(Dst, 6007, FORL_EXT*8);
7236 if (op == BC_JFORI) { 7237 if (op == BC_JFORI) {
7237 dasm_put(Dst, 6011, -4+LJ_ENDIAN_SELECT(2,0), BC_JLOOP); 7238 dasm_put(Dst, 6012, -4+LJ_ENDIAN_SELECT(2,0), BC_JLOOP);
7238 } else if (op == BC_JFORL) { 7239 } else if (op == BC_JFORL) {
7239 dasm_put(Dst, 6025, BC_JLOOP); 7240 dasm_put(Dst, 6026, BC_JLOOP);
7240 } else { 7241 } else {
7241 dasm_put(Dst, 6035); 7242 dasm_put(Dst, 6036);
7242 if (op == BC_FORI) { 7243 if (op == BC_FORI) {
7243 dasm_put(Dst, 6039); 7244 dasm_put(Dst, 6040);
7244 } else { 7245 } else {
7245 dasm_put(Dst, 6042); 7246 dasm_put(Dst, 6043);
7246 } 7247 }
7247 dasm_put(Dst, 6045); 7248 dasm_put(Dst, 6046);
7248 } 7249 }
7249 dasm_put(Dst, 6048); 7250 dasm_put(Dst, 6049);
7250 break; 7251 break;
7251 7252
7252 case BC_ITERL: 7253 case BC_ITERL:
7253#if LJ_HASJIT 7254#if LJ_HASJIT
7254 dasm_put(Dst, 6060, GG_DISP2HOT, -HOTCOUNT_LOOP, GG_DISP2HOT); 7255 dasm_put(Dst, 6061, GG_DISP2HOT, -HOTCOUNT_LOOP, GG_DISP2HOT);
7255#endif 7256#endif
7256 break; 7257 break;
7257 7258
@@ -7260,40 +7261,40 @@ static void build_ins(BuildCtx *ctx, BCOp op, int defop)
7260 break; 7261 break;
7261#endif 7262#endif
7262 case BC_IITERL: 7263 case BC_IITERL:
7263 dasm_put(Dst, 6072, LJ_ENDIAN_SELECT(4,0), LJ_ENDIAN_SELECT(0,4)); 7264 dasm_put(Dst, 6073, LJ_ENDIAN_SELECT(4,0), LJ_ENDIAN_SELECT(0,4));
7264 if (op == BC_JITERL) { 7265 if (op == BC_JITERL) {
7265 dasm_put(Dst, 6080, -8+LJ_ENDIAN_SELECT(4,0), BC_JLOOP, -8+LJ_ENDIAN_SELECT(0,4)); 7266 dasm_put(Dst, 6081, -8+LJ_ENDIAN_SELECT(4,0), BC_JLOOP, -8+LJ_ENDIAN_SELECT(0,4));
7266 } else { 7267 } else {
7267 dasm_put(Dst, 6087, (-(BCBIAS_J*4 >> 16) & 65535), -8+LJ_ENDIAN_SELECT(4,0), -8+LJ_ENDIAN_SELECT(0,4)); 7268 dasm_put(Dst, 6088, (-(BCBIAS_J*4 >> 16) & 65535), -8+LJ_ENDIAN_SELECT(4,0), -8+LJ_ENDIAN_SELECT(0,4));
7268 } 7269 }
7269 dasm_put(Dst, 6097); 7270 dasm_put(Dst, 6098);
7270 break; 7271 break;
7271 7272
7272 case BC_LOOP: 7273 case BC_LOOP:
7273#if LJ_HASJIT 7274#if LJ_HASJIT
7274 dasm_put(Dst, 6110, GG_DISP2HOT, -HOTCOUNT_LOOP, GG_DISP2HOT); 7275 dasm_put(Dst, 6111, GG_DISP2HOT, -HOTCOUNT_LOOP, GG_DISP2HOT);
7275#endif 7276#endif
7276 break; 7277 break;
7277 7278
7278 case BC_ILOOP: 7279 case BC_ILOOP:
7279 dasm_put(Dst, 6122); 7280 dasm_put(Dst, 6123);
7280 break; 7281 break;
7281 7282
7282 case BC_JLOOP: 7283 case BC_JLOOP:
7283#if LJ_HASJIT 7284#if LJ_HASJIT
7284 dasm_put(Dst, 6134, DISPATCH_J(trace), DISPATCH_GL(vmstate), DISPATCH_GL(jit_base), DISPATCH_GL(jit_L), DtD(->mcode), GG_DISP2G+32768); 7285 dasm_put(Dst, 6135, DISPATCH_J(trace), DISPATCH_GL(vmstate), DISPATCH_GL(jit_base), DISPATCH_GL(jit_L), DtD(->mcode), GG_DISP2G+32768);
7285#endif 7286#endif
7286 break; 7287 break;
7287 7288
7288 case BC_JMP: 7289 case BC_JMP:
7289 dasm_put(Dst, 6152, (-(BCBIAS_J*4 >> 16) & 65535)); 7290 dasm_put(Dst, 6153, (-(BCBIAS_J*4 >> 16) & 65535));
7290 break; 7291 break;
7291 7292
7292 /* -- Function headers -------------------------------------------------- */ 7293 /* -- Function headers -------------------------------------------------- */
7293 7294
7294 case BC_FUNCF: 7295 case BC_FUNCF:
7295#if LJ_HASJIT 7296#if LJ_HASJIT
7296 dasm_put(Dst, 6169, GG_DISP2HOT, -HOTCOUNT_CALL, GG_DISP2HOT); 7297 dasm_put(Dst, 6170, GG_DISP2HOT, -HOTCOUNT_CALL, GG_DISP2HOT);
7297#endif 7298#endif
7298 case BC_FUNCV: /* NYI: compiled vararg functions. */ 7299 case BC_FUNCV: /* NYI: compiled vararg functions. */
7299 break; 7300 break;
@@ -7303,42 +7304,42 @@ static void build_ins(BuildCtx *ctx, BCOp op, int defop)
7303 break; 7304 break;
7304#endif 7305#endif
7305 case BC_IFUNCF: 7306 case BC_IFUNCF:
7306 dasm_put(Dst, 6181, Dt1(->maxstack), -4+PC2PROTO(numparams), -4+PC2PROTO(k)); 7307 dasm_put(Dst, 6182, Dt1(->maxstack), -4+PC2PROTO(numparams), -4+PC2PROTO(k));
7307 if (op != BC_JFUNCF) { 7308 if (op != BC_JFUNCF) {
7308 dasm_put(Dst, 6192); 7309 dasm_put(Dst, 6193);
7309 } 7310 }
7310 dasm_put(Dst, 6195); 7311 dasm_put(Dst, 6196);
7311 if (op == BC_JFUNCF) { 7312 if (op == BC_JFUNCF) {
7312 dasm_put(Dst, 6201, BC_JLOOP); 7313 dasm_put(Dst, 6202, BC_JLOOP);
7313 } else { 7314 } else {
7314 dasm_put(Dst, 6206); 7315 dasm_put(Dst, 6207);
7315 } 7316 }
7316 dasm_put(Dst, 6216, LJ_ENDIAN_SELECT(4,0)); 7317 dasm_put(Dst, 6217, LJ_ENDIAN_SELECT(4,0));
7317 break; 7318 break;
7318 7319
7319 case BC_JFUNCV: 7320 case BC_JFUNCV:
7320#if !LJ_HASJIT 7321#if !LJ_HASJIT
7321 break; 7322 break;
7322#endif 7323#endif
7323 dasm_put(Dst, 6223); 7324 dasm_put(Dst, 6224);
7324 break; /* NYI: compiled vararg functions. */ 7325 break; /* NYI: compiled vararg functions. */
7325 7326
7326 case BC_IFUNCV: 7327 case BC_IFUNCV:
7327 dasm_put(Dst, 6225, Dt1(->maxstack), LJ_ENDIAN_SELECT(0,4), 8+FRAME_VARG, -4+PC2PROTO(k), LJ_ENDIAN_SELECT(4,0), -4+PC2PROTO(numparams), LJ_ENDIAN_SELECT(4,0), LJ_ENDIAN_SELECT(0,4), 8+LJ_ENDIAN_SELECT(0,4), 8+LJ_ENDIAN_SELECT(4,0), LJ_ENDIAN_SELECT(4,0)); 7328 dasm_put(Dst, 6226, Dt1(->maxstack), LJ_ENDIAN_SELECT(0,4), 8+FRAME_VARG, -4+PC2PROTO(k), LJ_ENDIAN_SELECT(4,0), -4+PC2PROTO(numparams), LJ_ENDIAN_SELECT(4,0), LJ_ENDIAN_SELECT(0,4), 8+LJ_ENDIAN_SELECT(0,4), 8+LJ_ENDIAN_SELECT(4,0), LJ_ENDIAN_SELECT(4,0));
7328 break; 7329 break;
7329 7330
7330 case BC_FUNCC: 7331 case BC_FUNCC:
7331 case BC_FUNCCW: 7332 case BC_FUNCCW:
7332 if (op == BC_FUNCC) { 7333 if (op == BC_FUNCC) {
7333 dasm_put(Dst, 6280, Dt8(->f)); 7334 dasm_put(Dst, 6281, Dt8(->f));
7334 } else { 7335 } else {
7335 dasm_put(Dst, 6283, DISPATCH_GL(wrapf)); 7336 dasm_put(Dst, 6284, DISPATCH_GL(wrapf));
7336 } 7337 }
7337 dasm_put(Dst, 6286, Dt1(->maxstack), Dt1(->base), Dt1(->top), ~LJ_VMST_C); 7338 dasm_put(Dst, 6287, Dt1(->maxstack), Dt1(->base), Dt1(->top), ~LJ_VMST_C);
7338 if (op == BC_FUNCCW) { 7339 if (op == BC_FUNCCW) {
7339 dasm_put(Dst, 6298, Dt8(->f)); 7340 dasm_put(Dst, 6299, Dt8(->f));
7340 } 7341 }
7341 dasm_put(Dst, 6301, DISPATCH_GL(vmstate), Dt1(->base), Dt1(->top), ~LJ_VMST_INTERP, LJ_ENDIAN_SELECT(-4,-8), DISPATCH_GL(vmstate)); 7342 dasm_put(Dst, 6302, DISPATCH_GL(vmstate), Dt1(->base), Dt1(->top), ~LJ_VMST_INTERP, LJ_ENDIAN_SELECT(-4,-8), DISPATCH_GL(vmstate));
7342 break; 7343 break;
7343 7344
7344 /* ---------------------------------------------------------------------- */ 7345 /* ---------------------------------------------------------------------- */
@@ -7358,7 +7359,7 @@ static int build_backend(BuildCtx *ctx)
7358 7359
7359 build_subroutines(ctx); 7360 build_subroutines(ctx);
7360 7361
7361 dasm_put(Dst, 6322); 7362 dasm_put(Dst, 6323);
7362 for (op = 0; op < BC__MAX; op++) 7363 for (op = 0; op < BC__MAX; op++)
7363 build_ins(ctx, (BCOp)op, op); 7364 build_ins(ctx, (BCOp)op, op);
7364 7365