summaryrefslogtreecommitdiff
path: root/src/buildvm_ppc.h
diff options
context:
space:
mode:
Diffstat (limited to 'src/buildvm_ppc.h')
-rw-r--r--src/buildvm_ppc.h809
1 files changed, 405 insertions, 404 deletions
diff --git a/src/buildvm_ppc.h b/src/buildvm_ppc.h
index 81285d63..ce0941ec 100644
--- a/src/buildvm_ppc.h
+++ b/src/buildvm_ppc.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[7762] = { 15static const unsigned int build_actionlist[7763] = {
160x00010001, 160x00010001,
170x00060014, 170x00060014,
180x72000000, 180x72000000,
@@ -3624,6 +3624,7 @@ static const unsigned int build_actionlist[7762] = {
36240x00050803, 36240x00050803,
36250x80f0fffc, 36250x80f0fffc,
36260x54e8dd78, 36260x54e8dd78,
36270x39080008,
36270x0006000d, 36280x0006000d,
36280x7d287050, 36290x7d287050,
36290x48000000, 36300x48000000,
@@ -8512,59 +8513,59 @@ static void build_subroutines(BuildCtx *ctx)
8512 dasm_put(Dst, 3550); 8513 dasm_put(Dst, 3550);
8513 } 8514 }
8514 dasm_put(Dst, 3558, Dt8(->f), 8*LUA_MINSTACK, Dt1(->maxstack), Dt1(->base), Dt1(->top), Dt1(->base), 31-3, Dt1(->top), Dt7(->pc), FRAME_TYPE, LUA_MINSTACK); 8515 dasm_put(Dst, 3558, Dt8(->f), 8*LUA_MINSTACK, Dt1(->maxstack), Dt1(->base), Dt1(->top), Dt1(->base), 31-3, Dt1(->top), Dt7(->pc), FRAME_TYPE, LUA_MINSTACK);
8515 dasm_put(Dst, 3621, Dt1(->base), Dt1(->base), Dt1(->top), Dt1(->base), Dt1(->top)); 8516 dasm_put(Dst, 3622, Dt1(->base), Dt1(->base), Dt1(->top), Dt1(->base), Dt1(->top));
8516#if LJ_HASJIT 8517#if LJ_HASJIT
8517 dasm_put(Dst, 3647, DISPATCH_GL(hookmask), HOOK_VMEVENT, DISPATCH_GL(hookcount), HOOK_ACTIVE, LUA_MASKLINE|LUA_MASKCOUNT, DISPATCH_GL(hookcount)); 8518 dasm_put(Dst, 3648, DISPATCH_GL(hookmask), HOOK_VMEVENT, DISPATCH_GL(hookcount), HOOK_ACTIVE, LUA_MASKLINE|LUA_MASKCOUNT, DISPATCH_GL(hookcount));
8518#endif 8519#endif
8519 dasm_put(Dst, 3669, DISPATCH_GL(hookmask), HOOK_ACTIVE, GG_DISP2STATIC, DISPATCH_GL(hookmask), DISPATCH_GL(hookcount), HOOK_ACTIVE, 31-LUA_HOOKLINE, DISPATCH_GL(hookcount), Dt1(->base), Dt1(->base)); 8520 dasm_put(Dst, 3670, DISPATCH_GL(hookmask), HOOK_ACTIVE, GG_DISP2STATIC, DISPATCH_GL(hookmask), DISPATCH_GL(hookcount), HOOK_ACTIVE, 31-LUA_HOOKLINE, DISPATCH_GL(hookcount), Dt1(->base), Dt1(->base));
8520 dasm_put(Dst, 3716, GG_DISP2STATIC); 8521 dasm_put(Dst, 3717, GG_DISP2STATIC);
8521#if LJ_HASJIT 8522#if LJ_HASJIT
8522 dasm_put(Dst, 3734, GG_DISP2J, Dt7(->pc), DISPATCH_J(L), PC2PROTO(framesize), Dt1(->base), 31-3, Dt1(->top)); 8523 dasm_put(Dst, 3735, GG_DISP2J, Dt7(->pc), DISPATCH_J(L), PC2PROTO(framesize), Dt1(->base), 31-3, Dt1(->top));
8523#endif 8524#endif
8524 dasm_put(Dst, 3757); 8525 dasm_put(Dst, 3758);
8525#if LJ_HASJIT 8526#if LJ_HASJIT
8526 dasm_put(Dst, 3760); 8527 dasm_put(Dst, 3761);
8527#endif 8528#endif
8528 dasm_put(Dst, 3763); 8529 dasm_put(Dst, 3764);
8529#if LJ_HASJIT 8530#if LJ_HASJIT
8530 dasm_put(Dst, 3765); 8531 dasm_put(Dst, 3766);
8531#endif 8532#endif
8532 dasm_put(Dst, 3768, Dt1(->base), Dt1(->top), Dt1(->base), Dt1(->top)); 8533 dasm_put(Dst, 3769, Dt1(->base), Dt1(->top), Dt1(->base), Dt1(->top));
8533#if LJ_HASJIT 8534#if LJ_HASJIT
8534 dasm_put(Dst, 3791, -(16+32*8+32*4), 16+32*8+2*4, -GG_DISP2G-32768, ~LJ_VMST_EXIT, 16+32*8+32*4, DISPATCH_GL(vmstate), 16+0*8, 16+1*8, 16+2*8, 16+3*8, 16+4*8, 16+5*8, 16+6*8, 16+7*8, 16+32*8+32*4, 16+8*8, 16+9*8, 16+10*8, 16+11*8, 16+32*8+1*4, 16+12*8, 16+13*8); 8535 dasm_put(Dst, 3792, -(16+32*8+32*4), 16+32*8+2*4, -GG_DISP2G-32768, ~LJ_VMST_EXIT, 16+32*8+32*4, DISPATCH_GL(vmstate), 16+0*8, 16+1*8, 16+2*8, 16+3*8, 16+4*8, 16+5*8, 16+6*8, 16+7*8, 16+32*8+32*4, 16+8*8, 16+9*8, 16+10*8, 16+11*8, 16+32*8+1*4, 16+12*8, 16+13*8);
8535 dasm_put(Dst, 3838, 16+14*8, 16+15*8, 16+16*8, 16+17*8, 16+18*8, 16+19*8, 16+32*8+0*4, 16+20*8, 16+21*8, 16+22*8, 16+23*8, 16+24*8, 16+25*8, 16+26*8, 16+27*8, DISPATCH_GL(jit_L), 16+28*8, 16+29*8, 16+30*8, 16+31*8, DISPATCH_GL(jit_base), 32-2); 8536 dasm_put(Dst, 3839, 16+14*8, 16+15*8, 16+16*8, 16+17*8, 16+18*8, 16+19*8, 16+32*8+0*4, 16+20*8, 16+21*8, 16+22*8, 16+23*8, 16+24*8, 16+25*8, 16+26*8, 16+27*8, DISPATCH_GL(jit_L), 16+28*8, 16+29*8, 16+30*8, 16+31*8, DISPATCH_GL(jit_base), 32-2);
8536 dasm_put(Dst, 3887, DISPATCH_J(L), DISPATCH_GL(jit_L), DISPATCH_J(parent), Dt1(->base), GG_DISP2J, DISPATCH_J(exitno), Dt1(->cframe), Dt1(->base)); 8537 dasm_put(Dst, 3888, DISPATCH_J(L), DISPATCH_GL(jit_L), DISPATCH_J(parent), Dt1(->base), GG_DISP2J, DISPATCH_J(exitno), Dt1(->cframe), Dt1(->base));
8537#endif 8538#endif
8538 dasm_put(Dst, 3915); 8539 dasm_put(Dst, 3916);
8539#if LJ_HASJIT 8540#if LJ_HASJIT
8540 dasm_put(Dst, 3917, -GG_DISP2G-32768, 31-3, Dt7(->pc), DISPATCH_GL(jit_L), PC2PROTO(k), LJ_TISNUM, LJ_TNIL, DISPATCH_GL(vmstate), BC_FUNCF*4); 8541 dasm_put(Dst, 3918, -GG_DISP2G-32768, 31-3, Dt7(->pc), DISPATCH_GL(jit_L), PC2PROTO(k), LJ_TISNUM, LJ_TNIL, DISPATCH_GL(vmstate), BC_FUNCF*4);
8541#endif 8542#endif
8542 dasm_put(Dst, 3974); 8543 dasm_put(Dst, 3975);
8543#if LJ_HASJIT 8544#if LJ_HASJIT
8544 dasm_put(Dst, 3982); 8545 dasm_put(Dst, 3983);
8545#endif 8546#endif
8546 dasm_put(Dst, 3985); 8547 dasm_put(Dst, 3986);
8547#if LJ_HASJIT 8548#if LJ_HASJIT
8548 dasm_put(Dst, 4065); 8549 dasm_put(Dst, 4066);
8549#else 8550#else
8550 dasm_put(Dst, 4087); 8551 dasm_put(Dst, 4088);
8551#endif 8552#endif
8552 dasm_put(Dst, 4089); 8553 dasm_put(Dst, 4090);
8553#if LJ_HASFFI 8554#if LJ_HASFFI
8554#define DtE(_V) (int)(ptrdiff_t)&(((CTState *)0)_V) 8555#define DtE(_V) (int)(ptrdiff_t)&(((CTState *)0)_V)
8555 dasm_put(Dst, 4113, 56+(14-14)*4, 128+(14-14)*8, 56+(15-14)*4, 128+(15-14)*8, 56+(16-14)*4, 128+(16-14)*8, 56+(17-14)*4, 128+(17-14)*8, 56+(18-14)*4, 128+(18-14)*8, 56+(19-14)*4, 128+(19-14)*8, 56+(20-14)*4, 128+(20-14)*8, 56+(21-14)*4, 128+(21-14)*8, 56+(22-14)*4, 128+(22-14)*8, 56+(23-14)*4, 128+(23-14)*8, 56+(24-14)*4, 128+(24-14)*8); 8556 dasm_put(Dst, 4114, 56+(14-14)*4, 128+(14-14)*8, 56+(15-14)*4, 128+(15-14)*8, 56+(16-14)*4, 128+(16-14)*8, 56+(17-14)*4, 128+(17-14)*8, 56+(18-14)*4, 128+(18-14)*8, 56+(19-14)*4, 128+(19-14)*8, 56+(20-14)*4, 128+(20-14)*8, 56+(21-14)*4, 128+(21-14)*8, 56+(22-14)*4, 128+(22-14)*8, 56+(23-14)*4, 128+(23-14)*8, 56+(24-14)*4, 128+(24-14)*8);
8556 dasm_put(Dst, 4161, 56+(25-14)*4, 128+(25-14)*8, 56+(26-14)*4, 128+(26-14)*8, 56+(27-14)*4, 128+(27-14)*8, 56+(28-14)*4, 128+(28-14)*8, 56+(29-14)*4, 128+(29-14)*8, 56+(30-14)*4, 128+(30-14)*8, 56+(31-14)*4, 128+(31-14)*8, Dt2(->ctype_state), GG_G2DISP, DtE(->cb.slot), DtE(->cb.gpr[0]), DtE(->cb.fpr[0]), DtE(->cb.gpr[1]), DtE(->cb.fpr[1]), DtE(->cb.gpr[2])); 8557 dasm_put(Dst, 4162, 56+(25-14)*4, 128+(25-14)*8, 56+(26-14)*4, 128+(26-14)*8, 56+(27-14)*4, 128+(27-14)*8, 56+(28-14)*4, 128+(28-14)*8, 56+(29-14)*4, 128+(29-14)*8, 56+(30-14)*4, 128+(30-14)*8, 56+(31-14)*4, 128+(31-14)*8, Dt2(->ctype_state), GG_G2DISP, DtE(->cb.slot), DtE(->cb.gpr[0]), DtE(->cb.fpr[0]), DtE(->cb.gpr[1]), DtE(->cb.fpr[1]), DtE(->cb.gpr[2]));
8557 dasm_put(Dst, 4208, DtE(->cb.fpr[2]), DtE(->cb.gpr[3]), DtE(->cb.fpr[3]), DtE(->cb.gpr[4]), DtE(->cb.fpr[4]), DtE(->cb.gpr[5]), DtE(->cb.fpr[5]), DtE(->cb.gpr[6]), DtE(->cb.fpr[6]), DtE(->cb.gpr[7]), DtE(->cb.fpr[7]), 272+8, DtE(->cb.stack), Dt1(->base), LJ_TISNUM, Dt1(->top), LJ_TNIL, ~LJ_VMST_INTERP, DISPATCH_GL(vmstate), Dt7(->pc)); 8558 dasm_put(Dst, 4209, DtE(->cb.fpr[2]), DtE(->cb.gpr[3]), DtE(->cb.fpr[3]), DtE(->cb.gpr[4]), DtE(->cb.fpr[4]), DtE(->cb.gpr[5]), DtE(->cb.fpr[5]), DtE(->cb.gpr[6]), DtE(->cb.fpr[6]), DtE(->cb.gpr[7]), DtE(->cb.fpr[7]), 272+8, DtE(->cb.stack), Dt1(->base), LJ_TISNUM, Dt1(->top), LJ_TNIL, ~LJ_VMST_INTERP, DISPATCH_GL(vmstate), Dt7(->pc));
8558#endif 8559#endif
8559 dasm_put(Dst, 4272); 8560 dasm_put(Dst, 4273);
8560#if LJ_HASFFI 8561#if LJ_HASFFI
8561 dasm_put(Dst, 4274, DISPATCH_GL(ctype_state), Dt1(->base), Dt1(->top), DtE(->L), DtE(->cb.gpr[0]), DtE(->cb.fpr[0]), DtE(->cb.gpr[1])); 8562 dasm_put(Dst, 4275, DISPATCH_GL(ctype_state), Dt1(->base), Dt1(->top), DtE(->L), DtE(->cb.gpr[0]), DtE(->cb.fpr[0]), DtE(->cb.gpr[1]));
8562#endif 8563#endif
8563 dasm_put(Dst, 4295); 8564 dasm_put(Dst, 4296);
8564#if LJ_HASFFI 8565#if LJ_HASFFI
8565#define DtF(_V) (int)(ptrdiff_t)&(((CCallState *)0)_V) 8566#define DtF(_V) (int)(ptrdiff_t)&(((CCallState *)0)_V)
8566 dasm_put(Dst, 4297, DtF(->spadj), DtF(->nsp), DtF(->nfpr), DtF(->stack), 31-2, DtF(->fpr[0]), DtF(->fpr[1]), DtF(->fpr[2]), DtF(->fpr[3]), DtF(->fpr[4]), DtF(->fpr[5]), DtF(->fpr[6]), DtF(->fpr[7]), DtF(->func), DtF(->gpr[1]), DtF(->gpr[2])); 8567 dasm_put(Dst, 4298, DtF(->spadj), DtF(->nsp), DtF(->nfpr), DtF(->stack), 31-2, DtF(->fpr[0]), DtF(->fpr[1]), DtF(->fpr[2]), DtF(->fpr[3]), DtF(->fpr[4]), DtF(->fpr[5]), DtF(->fpr[6]), DtF(->fpr[7]), DtF(->func), DtF(->gpr[1]), DtF(->gpr[2]));
8567 dasm_put(Dst, 4354, DtF(->gpr[3]), DtF(->gpr[4]), DtF(->gpr[5]), DtF(->gpr[6]), DtF(->gpr[7]), DtF(->gpr[0]), DtF(->gpr[0]), DtF(->fpr[0]), DtF(->gpr[1]), DtF(->gpr[2]), DtF(->gpr[3])); 8568 dasm_put(Dst, 4355, DtF(->gpr[3]), DtF(->gpr[4]), DtF(->gpr[5]), DtF(->gpr[6]), DtF(->gpr[7]), DtF(->gpr[0]), DtF(->gpr[0]), DtF(->fpr[0]), DtF(->gpr[1]), DtF(->gpr[2]), DtF(->gpr[3]));
8568#endif 8569#endif
8569} 8570}
8570 8571
@@ -8572,7 +8573,7 @@ static void build_subroutines(BuildCtx *ctx)
8572static void build_ins(BuildCtx *ctx, BCOp op, int defop) 8573static void build_ins(BuildCtx *ctx, BCOp op, int defop)
8573{ 8574{
8574 int vk = 0; 8575 int vk = 0;
8575 dasm_put(Dst, 4386, defop); 8576 dasm_put(Dst, 4387, defop);
8576 8577
8577 switch (op) { 8578 switch (op) {
8578 8579
@@ -8582,224 +8583,224 @@ static void build_ins(BuildCtx *ctx, BCOp op, int defop)
8582 8583
8583 case BC_ISLT: case BC_ISGE: case BC_ISLE: case BC_ISGT: 8584 case BC_ISLT: case BC_ISGE: case BC_ISLE: case BC_ISGT:
8584 if (LJ_DUALNUM) { 8585 if (LJ_DUALNUM) {
8585 dasm_put(Dst, 4388, -(BCBIAS_J*4 >> 16)); 8586 dasm_put(Dst, 4389, -(BCBIAS_J*4 >> 16));
8586 if (op == BC_ISLT) { 8587 if (op == BC_ISLT) {
8587 dasm_put(Dst, 4405); 8588 dasm_put(Dst, 4406);
8588 } else if (op == BC_ISGE) { 8589 } else if (op == BC_ISGE) {
8589 dasm_put(Dst, 4408); 8590 dasm_put(Dst, 4409);
8590 } else if (op == BC_ISLE) { 8591 } else if (op == BC_ISLE) {
8591 dasm_put(Dst, 4411); 8592 dasm_put(Dst, 4412);
8592 } else { 8593 } else {
8593 dasm_put(Dst, 4414); 8594 dasm_put(Dst, 4415);
8594 } 8595 }
8595 dasm_put(Dst, 4417); 8596 dasm_put(Dst, 4418);
8596 if (op == BC_ISLT) { 8597 if (op == BC_ISLT) {
8597 dasm_put(Dst, 4456); 8598 dasm_put(Dst, 4457);
8598 } else if (op == BC_ISGE) { 8599 } else if (op == BC_ISGE) {
8599 dasm_put(Dst, 4459); 8600 dasm_put(Dst, 4460);
8600 } else if (op == BC_ISLE) { 8601 } else if (op == BC_ISLE) {
8601 dasm_put(Dst, 4462); 8602 dasm_put(Dst, 4463);
8602 } else { 8603 } else {
8603 dasm_put(Dst, 4466); 8604 dasm_put(Dst, 4467);
8604 } 8605 }
8605 dasm_put(Dst, 4470); 8606 dasm_put(Dst, 4471);
8606 } else { 8607 } else {
8607 dasm_put(Dst, 4473, -(BCBIAS_J*4 >> 16)); 8608 dasm_put(Dst, 4474, -(BCBIAS_J*4 >> 16));
8608 if (op == BC_ISLT) { 8609 if (op == BC_ISLT) {
8609 dasm_put(Dst, 4490); 8610 dasm_put(Dst, 4491);
8610 } else if (op == BC_ISGE) { 8611 } else if (op == BC_ISGE) {
8611 dasm_put(Dst, 4493); 8612 dasm_put(Dst, 4494);
8612 } else if (op == BC_ISLE) { 8613 } else if (op == BC_ISLE) {
8613 dasm_put(Dst, 4496); 8614 dasm_put(Dst, 4497);
8614 } else { 8615 } else {
8615 dasm_put(Dst, 4500); 8616 dasm_put(Dst, 4501);
8616 } 8617 }
8617 dasm_put(Dst, 4504); 8618 dasm_put(Dst, 4505);
8618 } 8619 }
8619 break; 8620 break;
8620 8621
8621 case BC_ISEQV: case BC_ISNEV: 8622 case BC_ISEQV: case BC_ISNEV:
8622 vk = op == BC_ISEQV; 8623 vk = op == BC_ISEQV;
8623 if (LJ_DUALNUM) { 8624 if (LJ_DUALNUM) {
8624 dasm_put(Dst, 4517, -(BCBIAS_J*4 >> 16)); 8625 dasm_put(Dst, 4518, -(BCBIAS_J*4 >> 16));
8625 if (vk) { 8626 if (vk) {
8626 dasm_put(Dst, 4530); 8627 dasm_put(Dst, 4531);
8627 } else { 8628 } else {
8628 dasm_put(Dst, 4533); 8629 dasm_put(Dst, 4534);
8629 } 8630 }
8630 } else { 8631 } else {
8631 dasm_put(Dst, 4536, -(BCBIAS_J*4 >> 16)); 8632 dasm_put(Dst, 4537, -(BCBIAS_J*4 >> 16));
8632 if (vk) { 8633 if (vk) {
8633 dasm_put(Dst, 4553); 8634 dasm_put(Dst, 4554);
8634 } else { 8635 } else {
8635 dasm_put(Dst, 4557); 8636 dasm_put(Dst, 4558);
8636 } 8637 }
8637 dasm_put(Dst, 4561); 8638 dasm_put(Dst, 4562);
8638 } 8639 }
8639 dasm_put(Dst, 4573); 8640 dasm_put(Dst, 4574);
8640 if (!LJ_DUALNUM) { 8641 if (!LJ_DUALNUM) {
8641 dasm_put(Dst, 4575); 8642 dasm_put(Dst, 4576);
8642 } 8643 }
8643 if (LJ_HASFFI) { 8644 if (LJ_HASFFI) {
8644 dasm_put(Dst, 4578, LJ_TCDATA, LJ_TCDATA); 8645 dasm_put(Dst, 4579, LJ_TCDATA, LJ_TCDATA);
8645 } 8646 }
8646 dasm_put(Dst, 4583, ~LJ_TISPRI); 8647 dasm_put(Dst, 4584, ~LJ_TISPRI);
8647 if (LJ_HASFFI) { 8648 if (LJ_HASFFI) {
8648 dasm_put(Dst, 4588); 8649 dasm_put(Dst, 4589);
8649 } 8650 }
8650 dasm_put(Dst, 4590, ~LJ_TISTABUD); 8651 dasm_put(Dst, 4591, ~LJ_TISTABUD);
8651 if (LJ_HASFFI) { 8652 if (LJ_HASFFI) {
8652 dasm_put(Dst, 4593); 8653 dasm_put(Dst, 4594);
8653 } 8654 }
8654 dasm_put(Dst, 4596); 8655 dasm_put(Dst, 4597);
8655 if (vk) { 8656 if (vk) {
8656 dasm_put(Dst, 4604); 8657 dasm_put(Dst, 4605);
8657 } else { 8658 } else {
8658 dasm_put(Dst, 4609); 8659 dasm_put(Dst, 4610);
8659 } 8660 }
8660 if (LJ_DUALNUM) { 8661 if (LJ_DUALNUM) {
8661 dasm_put(Dst, 4614); 8662 dasm_put(Dst, 4615);
8662 } else { 8663 } else {
8663 dasm_put(Dst, 4629); 8664 dasm_put(Dst, 4630);
8664 } 8665 }
8665 dasm_put(Dst, 4632, Dt6(->metatable), 1-vk, Dt6(->nomm), 1<<MM_eq); 8666 dasm_put(Dst, 4633, Dt6(->metatable), 1-vk, Dt6(->nomm), 1<<MM_eq);
8666 break; 8667 break;
8667 8668
8668 case BC_ISEQS: case BC_ISNES: 8669 case BC_ISEQS: case BC_ISNES:
8669 vk = op == BC_ISEQS; 8670 vk = op == BC_ISEQS;
8670 dasm_put(Dst, 4651, 32-1); 8671 dasm_put(Dst, 4652, 32-1);
8671 if (LJ_HASFFI) { 8672 if (LJ_HASFFI) {
8672 dasm_put(Dst, 4659, LJ_TCDATA); 8673 dasm_put(Dst, 4660, LJ_TCDATA);
8673 } 8674 }
8674 dasm_put(Dst, 4662, LJ_TSTR); 8675 dasm_put(Dst, 4663, LJ_TSTR);
8675 if (LJ_HASFFI) { 8676 if (LJ_HASFFI) {
8676 dasm_put(Dst, 4666); 8677 dasm_put(Dst, 4667);
8677 } 8678 }
8678 dasm_put(Dst, 4669, -(BCBIAS_J*4 >> 16)); 8679 dasm_put(Dst, 4670, -(BCBIAS_J*4 >> 16));
8679 if (vk) { 8680 if (vk) {
8680 dasm_put(Dst, 4677); 8681 dasm_put(Dst, 4678);
8681 } else { 8682 } else {
8682 dasm_put(Dst, 4679); 8683 dasm_put(Dst, 4680);
8683 } 8684 }
8684 dasm_put(Dst, 4681); 8685 dasm_put(Dst, 4682);
8685 break; 8686 break;
8686 8687
8687 case BC_ISEQN: case BC_ISNEN: 8688 case BC_ISEQN: case BC_ISNEN:
8688 vk = op == BC_ISEQN; 8689 vk = op == BC_ISEQN;
8689 if (LJ_DUALNUM) { 8690 if (LJ_DUALNUM) {
8690 dasm_put(Dst, 4693, -(BCBIAS_J*4 >> 16)); 8691 dasm_put(Dst, 4694, -(BCBIAS_J*4 >> 16));
8691 if (vk) { 8692 if (vk) {
8692 dasm_put(Dst, 4705); 8693 dasm_put(Dst, 4706);
8693 } else { 8694 } else {
8694 dasm_put(Dst, 4707); 8695 dasm_put(Dst, 4708);
8695 } 8696 }
8696 dasm_put(Dst, 4709); 8697 dasm_put(Dst, 4710);
8697 } else { 8698 } else {
8698 if (vk) { 8699 if (vk) {
8699 dasm_put(Dst, 4716); 8700 dasm_put(Dst, 4717);
8700 } else { 8701 } else {
8701 dasm_put(Dst, 4718); 8702 dasm_put(Dst, 4719);
8702 } 8703 }
8703 dasm_put(Dst, 4720, -(BCBIAS_J*4 >> 16)); 8704 dasm_put(Dst, 4721, -(BCBIAS_J*4 >> 16));
8704 } 8705 }
8705 if (vk) { 8706 if (vk) {
8706 dasm_put(Dst, 4733); 8707 dasm_put(Dst, 4734);
8707 if (!LJ_HASFFI) { 8708 if (!LJ_HASFFI) {
8708 dasm_put(Dst, 4738); 8709 dasm_put(Dst, 4739);
8709 } 8710 }
8710 } else { 8711 } else {
8711 dasm_put(Dst, 4740); 8712 dasm_put(Dst, 4741);
8712 if (!LJ_HASFFI) { 8713 if (!LJ_HASFFI) {
8713 dasm_put(Dst, 4744); 8714 dasm_put(Dst, 4745);
8714 } 8715 }
8715 dasm_put(Dst, 4746); 8716 dasm_put(Dst, 4747);
8716 } 8717 }
8717 dasm_put(Dst, 4749); 8718 dasm_put(Dst, 4750);
8718 if (LJ_HASFFI) { 8719 if (LJ_HASFFI) {
8719 dasm_put(Dst, 4760, LJ_TCDATA); 8720 dasm_put(Dst, 4761, LJ_TCDATA);
8720 } 8721 }
8721 if (LJ_DUALNUM) { 8722 if (LJ_DUALNUM) {
8722 dasm_put(Dst, 4768); 8723 dasm_put(Dst, 4769);
8723 } 8724 }
8724 break; 8725 break;
8725 8726
8726 case BC_ISEQP: case BC_ISNEP: 8727 case BC_ISEQP: case BC_ISNEP:
8727 vk = op == BC_ISEQP; 8728 vk = op == BC_ISEQP;
8728 dasm_put(Dst, 4792, 32-3); 8729 dasm_put(Dst, 4793, 32-3);
8729 if (LJ_HASFFI) { 8730 if (LJ_HASFFI) {
8730 dasm_put(Dst, 4799, LJ_TCDATA); 8731 dasm_put(Dst, 4800, LJ_TCDATA);
8731 } 8732 }
8732 dasm_put(Dst, 4802); 8733 dasm_put(Dst, 4803);
8733 if (LJ_HASFFI) { 8734 if (LJ_HASFFI) {
8734 dasm_put(Dst, 4804); 8735 dasm_put(Dst, 4805);
8735 } 8736 }
8736 dasm_put(Dst, 4807, -(BCBIAS_J*4 >> 16)); 8737 dasm_put(Dst, 4808, -(BCBIAS_J*4 >> 16));
8737 if (vk) { 8738 if (vk) {
8738 dasm_put(Dst, 4813); 8739 dasm_put(Dst, 4814);
8739 } else { 8740 } else {
8740 dasm_put(Dst, 4815); 8741 dasm_put(Dst, 4816);
8741 } 8742 }
8742 dasm_put(Dst, 4817); 8743 dasm_put(Dst, 4818);
8743 break; 8744 break;
8744 8745
8745 /* -- Unary test and copy ops ------------------------------------------- */ 8746 /* -- Unary test and copy ops ------------------------------------------- */
8746 8747
8747 case BC_ISTC: case BC_ISFC: case BC_IST: case BC_ISF: 8748 case BC_ISTC: case BC_ISFC: case BC_IST: case BC_ISF:
8748 dasm_put(Dst, 4829); 8749 dasm_put(Dst, 4830);
8749 if (op == BC_IST || op == BC_ISF) { 8750 if (op == BC_IST || op == BC_ISF) {
8750 dasm_put(Dst, 4833, LJ_TTRUE, -(BCBIAS_J*4 >> 16)); 8751 dasm_put(Dst, 4834, LJ_TTRUE, -(BCBIAS_J*4 >> 16));
8751 if (op == BC_IST) { 8752 if (op == BC_IST) {
8752 dasm_put(Dst, 4840); 8753 dasm_put(Dst, 4841);
8753 } else { 8754 } else {
8754 dasm_put(Dst, 4842); 8755 dasm_put(Dst, 4843);
8755 } 8756 }
8756 dasm_put(Dst, 4844); 8757 dasm_put(Dst, 4845);
8757 } else { 8758 } else {
8758 dasm_put(Dst, 4846, LJ_TFALSE); 8759 dasm_put(Dst, 4847, LJ_TFALSE);
8759 if (op == BC_ISTC) { 8760 if (op == BC_ISTC) {
8760 dasm_put(Dst, 4851); 8761 dasm_put(Dst, 4852);
8761 } else { 8762 } else {
8762 dasm_put(Dst, 4854); 8763 dasm_put(Dst, 4855);
8763 } 8764 }
8764 dasm_put(Dst, 4857, -(BCBIAS_J*4 >> 16)); 8765 dasm_put(Dst, 4858, -(BCBIAS_J*4 >> 16));
8765 } 8766 }
8766 dasm_put(Dst, 4864); 8767 dasm_put(Dst, 4865);
8767 break; 8768 break;
8768 8769
8769 /* -- Unary ops --------------------------------------------------------- */ 8770 /* -- Unary ops --------------------------------------------------------- */
8770 8771
8771 case BC_MOV: 8772 case BC_MOV:
8772 dasm_put(Dst, 4875); 8773 dasm_put(Dst, 4876);
8773 break; 8774 break;
8774 case BC_NOT: 8775 case BC_NOT:
8775 dasm_put(Dst, 4888, LJ_TTRUE); 8776 dasm_put(Dst, 4889, LJ_TTRUE);
8776 break; 8777 break;
8777 case BC_UNM: 8778 case BC_UNM:
8778 dasm_put(Dst, 4904); 8779 dasm_put(Dst, 4905);
8779 if (LJ_DUALNUM) { 8780 if (LJ_DUALNUM) {
8780 dasm_put(Dst, 4908); 8781 dasm_put(Dst, 4909);
8781 } 8782 }
8782 dasm_put(Dst, 4936); 8783 dasm_put(Dst, 4937);
8783 if (LJ_DUALNUM) { 8784 if (LJ_DUALNUM) {
8784 dasm_put(Dst, 4946); 8785 dasm_put(Dst, 4947);
8785 } else { 8786 } else {
8786 dasm_put(Dst, 4949); 8787 dasm_put(Dst, 4950);
8787 } 8788 }
8788 break; 8789 break;
8789 case BC_LEN: 8790 case BC_LEN:
8790 dasm_put(Dst, 4958, LJ_TSTR, Dt5(->len)); 8791 dasm_put(Dst, 4959, LJ_TSTR, Dt5(->len));
8791 if (LJ_DUALNUM) { 8792 if (LJ_DUALNUM) {
8792 dasm_put(Dst, 4968); 8793 dasm_put(Dst, 4969);
8793 } else { 8794 } else {
8794 dasm_put(Dst, 4973); 8795 dasm_put(Dst, 4974);
8795 } 8796 }
8796 dasm_put(Dst, 4980, LJ_TTAB); 8797 dasm_put(Dst, 4981, LJ_TTAB);
8797#ifdef LUAJIT_ENABLE_LUA52COMPAT 8798#ifdef LUAJIT_ENABLE_LUA52COMPAT
8798 dasm_put(Dst, 4994, Dt6(->metatable)); 8799 dasm_put(Dst, 4995, Dt6(->metatable));
8799#endif 8800#endif
8800 dasm_put(Dst, 5001); 8801 dasm_put(Dst, 5002);
8801#ifdef LUAJIT_ENABLE_LUA52COMPAT 8802#ifdef LUAJIT_ENABLE_LUA52COMPAT
8802 dasm_put(Dst, 5007, Dt6(->nomm), 1<<MM_len); 8803 dasm_put(Dst, 5008, Dt6(->nomm), 1<<MM_len);
8803#endif 8804#endif
8804 break; 8805 break;
8805 8806
@@ -8811,77 +8812,77 @@ static void build_ins(BuildCtx *ctx, BCOp op, int defop)
8811 vk = ((int)op - BC_ADDVN) / (BC_ADDNV-BC_ADDVN); 8812 vk = ((int)op - BC_ADDVN) / (BC_ADDNV-BC_ADDVN);
8812 switch (vk) { 8813 switch (vk) {
8813 case 0: 8814 case 0:
8814 dasm_put(Dst, 5017); 8815 dasm_put(Dst, 5018);
8815 break; 8816 break;
8816 case 1: 8817 case 1:
8817 dasm_put(Dst, 5023); 8818 dasm_put(Dst, 5024);
8818 break; 8819 break;
8819 default: 8820 default:
8820 dasm_put(Dst, 5029); 8821 dasm_put(Dst, 5030);
8821 break; 8822 break;
8822 } 8823 }
8823 dasm_put(Dst, 5035); 8824 dasm_put(Dst, 5036);
8824 switch (vk) { 8825 switch (vk) {
8825 case 0: 8826 case 0:
8826 dasm_put(Dst, 5062); 8827 dasm_put(Dst, 5063);
8827 break; 8828 break;
8828 case 1: 8829 case 1:
8829 dasm_put(Dst, 5065); 8830 dasm_put(Dst, 5066);
8830 break; 8831 break;
8831 default: 8832 default:
8832 dasm_put(Dst, 5068); 8833 dasm_put(Dst, 5069);
8833 break; 8834 break;
8834 } 8835 }
8835 dasm_put(Dst, 5071); 8836 dasm_put(Dst, 5072);
8836 if (vk == 1) { 8837 if (vk == 1) {
8837 dasm_put(Dst, 5073); 8838 dasm_put(Dst, 5074);
8838 } else { 8839 } else {
8839 dasm_put(Dst, 5077); 8840 dasm_put(Dst, 5078);
8840 } 8841 }
8841 switch (vk) { 8842 switch (vk) {
8842 case 0: 8843 case 0:
8843 dasm_put(Dst, 5081); 8844 dasm_put(Dst, 5082);
8844 break; 8845 break;
8845 case 1: 8846 case 1:
8846 dasm_put(Dst, 5084); 8847 dasm_put(Dst, 5085);
8847 break; 8848 break;
8848 default: 8849 default:
8849 dasm_put(Dst, 5087); 8850 dasm_put(Dst, 5088);
8850 break; 8851 break;
8851 } 8852 }
8852 dasm_put(Dst, 5090); 8853 dasm_put(Dst, 5091);
8853 } else { 8854 } else {
8854 vk = ((int)op - BC_ADDVN) / (BC_ADDNV-BC_ADDVN); 8855 vk = ((int)op - BC_ADDVN) / (BC_ADDNV-BC_ADDVN);
8855 switch (vk) { 8856 switch (vk) {
8856 case 0: 8857 case 0:
8857 dasm_put(Dst, 5097); 8858 dasm_put(Dst, 5098);
8858 if (LJ_DUALNUM) { 8859 if (LJ_DUALNUM) {
8859 dasm_put(Dst, 5099); 8860 dasm_put(Dst, 5100);
8860 } 8861 }
8861 dasm_put(Dst, 5101); 8862 dasm_put(Dst, 5102);
8862 if (LJ_DUALNUM) { 8863 if (LJ_DUALNUM) {
8863 dasm_put(Dst, 5104); 8864 dasm_put(Dst, 5105);
8864 } else { 8865 } else {
8865 dasm_put(Dst, 5110); 8866 dasm_put(Dst, 5111);
8866 } 8867 }
8867 break; 8868 break;
8868 case 1: 8869 case 1:
8869 dasm_put(Dst, 5114); 8870 dasm_put(Dst, 5115);
8870 if (LJ_DUALNUM) { 8871 if (LJ_DUALNUM) {
8871 dasm_put(Dst, 5116); 8872 dasm_put(Dst, 5117);
8872 } 8873 }
8873 dasm_put(Dst, 5118); 8874 dasm_put(Dst, 5119);
8874 if (LJ_DUALNUM) { 8875 if (LJ_DUALNUM) {
8875 dasm_put(Dst, 5121); 8876 dasm_put(Dst, 5122);
8876 } else { 8877 } else {
8877 dasm_put(Dst, 5127); 8878 dasm_put(Dst, 5128);
8878 } 8879 }
8879 break; 8880 break;
8880 default: 8881 default:
8881 dasm_put(Dst, 5131); 8882 dasm_put(Dst, 5132);
8882 break; 8883 break;
8883 } 8884 }
8884 dasm_put(Dst, 5141); 8885 dasm_put(Dst, 5142);
8885 } 8886 }
8886 break; 8887 break;
8887 case BC_SUBVN: case BC_SUBNV: case BC_SUBVV: 8888 case BC_SUBVN: case BC_SUBNV: case BC_SUBVV:
@@ -8889,77 +8890,77 @@ static void build_ins(BuildCtx *ctx, BCOp op, int defop)
8889 vk = ((int)op - BC_ADDVN) / (BC_ADDNV-BC_ADDVN); 8890 vk = ((int)op - BC_ADDVN) / (BC_ADDNV-BC_ADDVN);
8890 switch (vk) { 8891 switch (vk) {
8891 case 0: 8892 case 0:
8892 dasm_put(Dst, 5154); 8893 dasm_put(Dst, 5155);
8893 break; 8894 break;
8894 case 1: 8895 case 1:
8895 dasm_put(Dst, 5160); 8896 dasm_put(Dst, 5161);
8896 break; 8897 break;
8897 default: 8898 default:
8898 dasm_put(Dst, 5166); 8899 dasm_put(Dst, 5167);
8899 break; 8900 break;
8900 } 8901 }
8901 dasm_put(Dst, 5172); 8902 dasm_put(Dst, 5173);
8902 switch (vk) { 8903 switch (vk) {
8903 case 0: 8904 case 0:
8904 dasm_put(Dst, 5199); 8905 dasm_put(Dst, 5200);
8905 break; 8906 break;
8906 case 1: 8907 case 1:
8907 dasm_put(Dst, 5202); 8908 dasm_put(Dst, 5203);
8908 break; 8909 break;
8909 default: 8910 default:
8910 dasm_put(Dst, 5205); 8911 dasm_put(Dst, 5206);
8911 break; 8912 break;
8912 } 8913 }
8913 dasm_put(Dst, 5208); 8914 dasm_put(Dst, 5209);
8914 if (vk == 1) { 8915 if (vk == 1) {
8915 dasm_put(Dst, 5210); 8916 dasm_put(Dst, 5211);
8916 } else { 8917 } else {
8917 dasm_put(Dst, 5214); 8918 dasm_put(Dst, 5215);
8918 } 8919 }
8919 switch (vk) { 8920 switch (vk) {
8920 case 0: 8921 case 0:
8921 dasm_put(Dst, 5218); 8922 dasm_put(Dst, 5219);
8922 break; 8923 break;
8923 case 1: 8924 case 1:
8924 dasm_put(Dst, 5221); 8925 dasm_put(Dst, 5222);
8925 break; 8926 break;
8926 default: 8927 default:
8927 dasm_put(Dst, 5224); 8928 dasm_put(Dst, 5225);
8928 break; 8929 break;
8929 } 8930 }
8930 dasm_put(Dst, 5227); 8931 dasm_put(Dst, 5228);
8931 } else { 8932 } else {
8932 vk = ((int)op - BC_ADDVN) / (BC_ADDNV-BC_ADDVN); 8933 vk = ((int)op - BC_ADDVN) / (BC_ADDNV-BC_ADDVN);
8933 switch (vk) { 8934 switch (vk) {
8934 case 0: 8935 case 0:
8935 dasm_put(Dst, 5234); 8936 dasm_put(Dst, 5235);
8936 if (LJ_DUALNUM) { 8937 if (LJ_DUALNUM) {
8937 dasm_put(Dst, 5236); 8938 dasm_put(Dst, 5237);
8938 } 8939 }
8939 dasm_put(Dst, 5238); 8940 dasm_put(Dst, 5239);
8940 if (LJ_DUALNUM) { 8941 if (LJ_DUALNUM) {
8941 dasm_put(Dst, 5241); 8942 dasm_put(Dst, 5242);
8942 } else { 8943 } else {
8943 dasm_put(Dst, 5247); 8944 dasm_put(Dst, 5248);
8944 } 8945 }
8945 break; 8946 break;
8946 case 1: 8947 case 1:
8947 dasm_put(Dst, 5251); 8948 dasm_put(Dst, 5252);
8948 if (LJ_DUALNUM) { 8949 if (LJ_DUALNUM) {
8949 dasm_put(Dst, 5253); 8950 dasm_put(Dst, 5254);
8950 } 8951 }
8951 dasm_put(Dst, 5255); 8952 dasm_put(Dst, 5256);
8952 if (LJ_DUALNUM) { 8953 if (LJ_DUALNUM) {
8953 dasm_put(Dst, 5258); 8954 dasm_put(Dst, 5259);
8954 } else { 8955 } else {
8955 dasm_put(Dst, 5264); 8956 dasm_put(Dst, 5265);
8956 } 8957 }
8957 break; 8958 break;
8958 default: 8959 default:
8959 dasm_put(Dst, 5268); 8960 dasm_put(Dst, 5269);
8960 break; 8961 break;
8961 } 8962 }
8962 dasm_put(Dst, 5278); 8963 dasm_put(Dst, 5279);
8963 } 8964 }
8964 break; 8965 break;
8965 case BC_MULVN: case BC_MULNV: case BC_MULVV: 8966 case BC_MULVN: case BC_MULNV: case BC_MULVV:
@@ -8967,188 +8968,188 @@ static void build_ins(BuildCtx *ctx, BCOp op, int defop)
8967 vk = ((int)op - BC_ADDVN) / (BC_ADDNV-BC_ADDVN); 8968 vk = ((int)op - BC_ADDVN) / (BC_ADDNV-BC_ADDVN);
8968 switch (vk) { 8969 switch (vk) {
8969 case 0: 8970 case 0:
8970 dasm_put(Dst, 5291); 8971 dasm_put(Dst, 5292);
8971 break; 8972 break;
8972 case 1: 8973 case 1:
8973 dasm_put(Dst, 5297); 8974 dasm_put(Dst, 5298);
8974 break; 8975 break;
8975 default: 8976 default:
8976 dasm_put(Dst, 5303); 8977 dasm_put(Dst, 5304);
8977 break; 8978 break;
8978 } 8979 }
8979 dasm_put(Dst, 5309); 8980 dasm_put(Dst, 5310);
8980 switch (vk) { 8981 switch (vk) {
8981 case 0: 8982 case 0:
8982 dasm_put(Dst, 5336); 8983 dasm_put(Dst, 5337);
8983 break; 8984 break;
8984 case 1: 8985 case 1:
8985 dasm_put(Dst, 5339); 8986 dasm_put(Dst, 5340);
8986 break; 8987 break;
8987 default: 8988 default:
8988 dasm_put(Dst, 5342); 8989 dasm_put(Dst, 5343);
8989 break; 8990 break;
8990 } 8991 }
8991 dasm_put(Dst, 5345); 8992 dasm_put(Dst, 5346);
8992 if (vk == 1) { 8993 if (vk == 1) {
8993 dasm_put(Dst, 5347); 8994 dasm_put(Dst, 5348);
8994 } else { 8995 } else {
8995 dasm_put(Dst, 5351); 8996 dasm_put(Dst, 5352);
8996 } 8997 }
8997 switch (vk) { 8998 switch (vk) {
8998 case 0: 8999 case 0:
8999 dasm_put(Dst, 5355); 9000 dasm_put(Dst, 5356);
9000 break; 9001 break;
9001 case 1: 9002 case 1:
9002 dasm_put(Dst, 5358); 9003 dasm_put(Dst, 5359);
9003 break; 9004 break;
9004 default: 9005 default:
9005 dasm_put(Dst, 5361); 9006 dasm_put(Dst, 5362);
9006 break; 9007 break;
9007 } 9008 }
9008 dasm_put(Dst, 5364); 9009 dasm_put(Dst, 5365);
9009 } else { 9010 } else {
9010 vk = ((int)op - BC_ADDVN) / (BC_ADDNV-BC_ADDVN); 9011 vk = ((int)op - BC_ADDVN) / (BC_ADDNV-BC_ADDVN);
9011 switch (vk) { 9012 switch (vk) {
9012 case 0: 9013 case 0:
9013 dasm_put(Dst, 5371); 9014 dasm_put(Dst, 5372);
9014 if (LJ_DUALNUM) { 9015 if (LJ_DUALNUM) {
9015 dasm_put(Dst, 5373); 9016 dasm_put(Dst, 5374);
9016 } 9017 }
9017 dasm_put(Dst, 5375); 9018 dasm_put(Dst, 5376);
9018 if (LJ_DUALNUM) { 9019 if (LJ_DUALNUM) {
9019 dasm_put(Dst, 5378); 9020 dasm_put(Dst, 5379);
9020 } else { 9021 } else {
9021 dasm_put(Dst, 5384); 9022 dasm_put(Dst, 5385);
9022 } 9023 }
9023 break; 9024 break;
9024 case 1: 9025 case 1:
9025 dasm_put(Dst, 5388); 9026 dasm_put(Dst, 5389);
9026 if (LJ_DUALNUM) { 9027 if (LJ_DUALNUM) {
9027 dasm_put(Dst, 5390); 9028 dasm_put(Dst, 5391);
9028 } 9029 }
9029 dasm_put(Dst, 5392); 9030 dasm_put(Dst, 5393);
9030 if (LJ_DUALNUM) { 9031 if (LJ_DUALNUM) {
9031 dasm_put(Dst, 5395); 9032 dasm_put(Dst, 5396);
9032 } else { 9033 } else {
9033 dasm_put(Dst, 5401); 9034 dasm_put(Dst, 5402);
9034 } 9035 }
9035 break; 9036 break;
9036 default: 9037 default:
9037 dasm_put(Dst, 5405); 9038 dasm_put(Dst, 5406);
9038 break; 9039 break;
9039 } 9040 }
9040 dasm_put(Dst, 5415); 9041 dasm_put(Dst, 5416);
9041 } 9042 }
9042 break; 9043 break;
9043 case BC_DIVVN: case BC_DIVNV: case BC_DIVVV: 9044 case BC_DIVVN: case BC_DIVNV: case BC_DIVVV:
9044 vk = ((int)op - BC_ADDVN) / (BC_ADDNV-BC_ADDVN); 9045 vk = ((int)op - BC_ADDVN) / (BC_ADDNV-BC_ADDVN);
9045 switch (vk) { 9046 switch (vk) {
9046 case 0: 9047 case 0:
9047 dasm_put(Dst, 5428); 9048 dasm_put(Dst, 5429);
9048 if (LJ_DUALNUM) { 9049 if (LJ_DUALNUM) {
9049 dasm_put(Dst, 5430); 9050 dasm_put(Dst, 5431);
9050 } 9051 }
9051 dasm_put(Dst, 5432); 9052 dasm_put(Dst, 5433);
9052 if (LJ_DUALNUM) { 9053 if (LJ_DUALNUM) {
9053 dasm_put(Dst, 5435); 9054 dasm_put(Dst, 5436);
9054 } else { 9055 } else {
9055 dasm_put(Dst, 5441); 9056 dasm_put(Dst, 5442);
9056 } 9057 }
9057 break; 9058 break;
9058 case 1: 9059 case 1:
9059 dasm_put(Dst, 5445); 9060 dasm_put(Dst, 5446);
9060 if (LJ_DUALNUM) { 9061 if (LJ_DUALNUM) {
9061 dasm_put(Dst, 5447); 9062 dasm_put(Dst, 5448);
9062 } 9063 }
9063 dasm_put(Dst, 5449); 9064 dasm_put(Dst, 5450);
9064 if (LJ_DUALNUM) { 9065 if (LJ_DUALNUM) {
9065 dasm_put(Dst, 5452); 9066 dasm_put(Dst, 5453);
9066 } else { 9067 } else {
9067 dasm_put(Dst, 5458); 9068 dasm_put(Dst, 5459);
9068 } 9069 }
9069 break; 9070 break;
9070 default: 9071 default:
9071 dasm_put(Dst, 5462); 9072 dasm_put(Dst, 5463);
9072 break; 9073 break;
9073 } 9074 }
9074 dasm_put(Dst, 5472); 9075 dasm_put(Dst, 5473);
9075 break; 9076 break;
9076 case BC_MODVN: 9077 case BC_MODVN:
9077 if (LJ_DUALNUM) { 9078 if (LJ_DUALNUM) {
9078 vk = ((int)op - BC_ADDVN) / (BC_ADDNV-BC_ADDVN); 9079 vk = ((int)op - BC_ADDVN) / (BC_ADDNV-BC_ADDVN);
9079 switch (vk) { 9080 switch (vk) {
9080 case 0: 9081 case 0:
9081 dasm_put(Dst, 5485); 9082 dasm_put(Dst, 5486);
9082 break; 9083 break;
9083 case 1: 9084 case 1:
9084 dasm_put(Dst, 5491); 9085 dasm_put(Dst, 5492);
9085 break; 9086 break;
9086 default: 9087 default:
9087 dasm_put(Dst, 5497); 9088 dasm_put(Dst, 5498);
9088 break; 9089 break;
9089 } 9090 }
9090 dasm_put(Dst, 5503); 9091 dasm_put(Dst, 5504);
9091 switch (vk) { 9092 switch (vk) {
9092 case 0: 9093 case 0:
9093 dasm_put(Dst, 5531); 9094 dasm_put(Dst, 5532);
9094 break; 9095 break;
9095 case 1: 9096 case 1:
9096 dasm_put(Dst, 5534); 9097 dasm_put(Dst, 5535);
9097 break; 9098 break;
9098 default: 9099 default:
9099 dasm_put(Dst, 5537); 9100 dasm_put(Dst, 5538);
9100 break; 9101 break;
9101 } 9102 }
9102 dasm_put(Dst, 5540); 9103 dasm_put(Dst, 5541);
9103 if (vk == 1) { 9104 if (vk == 1) {
9104 dasm_put(Dst, 5542); 9105 dasm_put(Dst, 5543);
9105 } else { 9106 } else {
9106 dasm_put(Dst, 5546); 9107 dasm_put(Dst, 5547);
9107 } 9108 }
9108 switch (vk) { 9109 switch (vk) {
9109 case 0: 9110 case 0:
9110 dasm_put(Dst, 5550); 9111 dasm_put(Dst, 5551);
9111 break; 9112 break;
9112 case 1: 9113 case 1:
9113 dasm_put(Dst, 5553); 9114 dasm_put(Dst, 5554);
9114 break; 9115 break;
9115 default: 9116 default:
9116 dasm_put(Dst, 5556); 9117 dasm_put(Dst, 5557);
9117 break; 9118 break;
9118 } 9119 }
9119 dasm_put(Dst, 5559); 9120 dasm_put(Dst, 5560);
9120 } else { 9121 } else {
9121 vk = ((int)op - BC_ADDVN) / (BC_ADDNV-BC_ADDVN); 9122 vk = ((int)op - BC_ADDVN) / (BC_ADDNV-BC_ADDVN);
9122 switch (vk) { 9123 switch (vk) {
9123 case 0: 9124 case 0:
9124 dasm_put(Dst, 5571); 9125 dasm_put(Dst, 5572);
9125 if (LJ_DUALNUM) { 9126 if (LJ_DUALNUM) {
9126 dasm_put(Dst, 5573); 9127 dasm_put(Dst, 5574);
9127 } 9128 }
9128 dasm_put(Dst, 5575); 9129 dasm_put(Dst, 5576);
9129 if (LJ_DUALNUM) { 9130 if (LJ_DUALNUM) {
9130 dasm_put(Dst, 5578); 9131 dasm_put(Dst, 5579);
9131 } else { 9132 } else {
9132 dasm_put(Dst, 5584); 9133 dasm_put(Dst, 5585);
9133 } 9134 }
9134 break; 9135 break;
9135 case 1: 9136 case 1:
9136 dasm_put(Dst, 5588); 9137 dasm_put(Dst, 5589);
9137 if (LJ_DUALNUM) { 9138 if (LJ_DUALNUM) {
9138 dasm_put(Dst, 5590); 9139 dasm_put(Dst, 5591);
9139 } 9140 }
9140 dasm_put(Dst, 5592); 9141 dasm_put(Dst, 5593);
9141 if (LJ_DUALNUM) { 9142 if (LJ_DUALNUM) {
9142 dasm_put(Dst, 5595); 9143 dasm_put(Dst, 5596);
9143 } else { 9144 } else {
9144 dasm_put(Dst, 5601); 9145 dasm_put(Dst, 5602);
9145 } 9146 }
9146 break; 9147 break;
9147 default: 9148 default:
9148 dasm_put(Dst, 5605); 9149 dasm_put(Dst, 5606);
9149 break; 9150 break;
9150 } 9151 }
9151 dasm_put(Dst, 5615); 9152 dasm_put(Dst, 5616);
9152 } 9153 }
9153 break; 9154 break;
9154 case BC_MODNV: case BC_MODVV: 9155 case BC_MODNV: case BC_MODVV:
@@ -9156,297 +9157,297 @@ static void build_ins(BuildCtx *ctx, BCOp op, int defop)
9156 vk = ((int)op - BC_ADDVN) / (BC_ADDNV-BC_ADDVN); 9157 vk = ((int)op - BC_ADDVN) / (BC_ADDNV-BC_ADDVN);
9157 switch (vk) { 9158 switch (vk) {
9158 case 0: 9159 case 0:
9159 dasm_put(Dst, 5633); 9160 dasm_put(Dst, 5634);
9160 break; 9161 break;
9161 case 1: 9162 case 1:
9162 dasm_put(Dst, 5639); 9163 dasm_put(Dst, 5640);
9163 break; 9164 break;
9164 default: 9165 default:
9165 dasm_put(Dst, 5645); 9166 dasm_put(Dst, 5646);
9166 break; 9167 break;
9167 } 9168 }
9168 dasm_put(Dst, 5651); 9169 dasm_put(Dst, 5652);
9169 switch (vk) { 9170 switch (vk) {
9170 case 0: 9171 case 0:
9171 dasm_put(Dst, 5679); 9172 dasm_put(Dst, 5680);
9172 break; 9173 break;
9173 case 1: 9174 case 1:
9174 dasm_put(Dst, 5682); 9175 dasm_put(Dst, 5683);
9175 break; 9176 break;
9176 default: 9177 default:
9177 dasm_put(Dst, 5685); 9178 dasm_put(Dst, 5686);
9178 break; 9179 break;
9179 } 9180 }
9180 dasm_put(Dst, 5688); 9181 dasm_put(Dst, 5689);
9181 if (vk == 1) { 9182 if (vk == 1) {
9182 dasm_put(Dst, 5690); 9183 dasm_put(Dst, 5691);
9183 } else { 9184 } else {
9184 dasm_put(Dst, 5694); 9185 dasm_put(Dst, 5695);
9185 } 9186 }
9186 switch (vk) { 9187 switch (vk) {
9187 case 0: 9188 case 0:
9188 dasm_put(Dst, 5698); 9189 dasm_put(Dst, 5699);
9189 break; 9190 break;
9190 case 1: 9191 case 1:
9191 dasm_put(Dst, 5701); 9192 dasm_put(Dst, 5702);
9192 break; 9193 break;
9193 default: 9194 default:
9194 dasm_put(Dst, 5704); 9195 dasm_put(Dst, 5705);
9195 break; 9196 break;
9196 } 9197 }
9197 dasm_put(Dst, 5707); 9198 dasm_put(Dst, 5708);
9198 } else { 9199 } else {
9199 vk = ((int)op - BC_ADDVN) / (BC_ADDNV-BC_ADDVN); 9200 vk = ((int)op - BC_ADDVN) / (BC_ADDNV-BC_ADDVN);
9200 switch (vk) { 9201 switch (vk) {
9201 case 0: 9202 case 0:
9202 dasm_put(Dst, 5710); 9203 dasm_put(Dst, 5711);
9203 if (LJ_DUALNUM) { 9204 if (LJ_DUALNUM) {
9204 dasm_put(Dst, 5712); 9205 dasm_put(Dst, 5713);
9205 } 9206 }
9206 dasm_put(Dst, 5714); 9207 dasm_put(Dst, 5715);
9207 if (LJ_DUALNUM) { 9208 if (LJ_DUALNUM) {
9208 dasm_put(Dst, 5717); 9209 dasm_put(Dst, 5718);
9209 } else { 9210 } else {
9210 dasm_put(Dst, 5723); 9211 dasm_put(Dst, 5724);
9211 } 9212 }
9212 break; 9213 break;
9213 case 1: 9214 case 1:
9214 dasm_put(Dst, 5727); 9215 dasm_put(Dst, 5728);
9215 if (LJ_DUALNUM) { 9216 if (LJ_DUALNUM) {
9216 dasm_put(Dst, 5729); 9217 dasm_put(Dst, 5730);
9217 } 9218 }
9218 dasm_put(Dst, 5731); 9219 dasm_put(Dst, 5732);
9219 if (LJ_DUALNUM) { 9220 if (LJ_DUALNUM) {
9220 dasm_put(Dst, 5734); 9221 dasm_put(Dst, 5735);
9221 } else { 9222 } else {
9222 dasm_put(Dst, 5740); 9223 dasm_put(Dst, 5741);
9223 } 9224 }
9224 break; 9225 break;
9225 default: 9226 default:
9226 dasm_put(Dst, 5744); 9227 dasm_put(Dst, 5745);
9227 break; 9228 break;
9228 } 9229 }
9229 dasm_put(Dst, 5754); 9230 dasm_put(Dst, 5755);
9230 } 9231 }
9231 break; 9232 break;
9232 case BC_POW: 9233 case BC_POW:
9233 dasm_put(Dst, 5757); 9234 dasm_put(Dst, 5758);
9234 break; 9235 break;
9235 9236
9236 case BC_CAT: 9237 case BC_CAT:
9237 dasm_put(Dst, 5780, Dt1(->base), 32-3, Dt1(->base)); 9238 dasm_put(Dst, 5781, Dt1(->base), 32-3, Dt1(->base));
9238 break; 9239 break;
9239 9240
9240 /* -- Constant ops ------------------------------------------------------ */ 9241 /* -- Constant ops ------------------------------------------------------ */
9241 9242
9242 case BC_KSTR: 9243 case BC_KSTR:
9243 dasm_put(Dst, 5810, 32-1, LJ_TSTR); 9244 dasm_put(Dst, 5811, 32-1, LJ_TSTR);
9244 break; 9245 break;
9245 case BC_KCDATA: 9246 case BC_KCDATA:
9246#if LJ_HASFFI 9247#if LJ_HASFFI
9247 dasm_put(Dst, 5829, 32-1, LJ_TCDATA); 9248 dasm_put(Dst, 5830, 32-1, LJ_TCDATA);
9248#endif 9249#endif
9249 break; 9250 break;
9250 case BC_KSHORT: 9251 case BC_KSHORT:
9251 if (LJ_DUALNUM) { 9252 if (LJ_DUALNUM) {
9252 dasm_put(Dst, 5848, 31-13); 9253 dasm_put(Dst, 5849, 31-13);
9253 } else { 9254 } else {
9254 dasm_put(Dst, 5864, 31-13, 31-20); 9255 dasm_put(Dst, 5865, 31-13, 31-20);
9255 } 9256 }
9256 break; 9257 break;
9257 case BC_KNUM: 9258 case BC_KNUM:
9258 dasm_put(Dst, 5892); 9259 dasm_put(Dst, 5893);
9259 break; 9260 break;
9260 case BC_KPRI: 9261 case BC_KPRI:
9261 dasm_put(Dst, 5905, 32-3); 9262 dasm_put(Dst, 5906, 32-3);
9262 break; 9263 break;
9263 case BC_KNIL: 9264 case BC_KNIL:
9264 dasm_put(Dst, 5920); 9265 dasm_put(Dst, 5921);
9265 break; 9266 break;
9266 9267
9267 /* -- Upvalue and function ops ------------------------------------------ */ 9268 /* -- Upvalue and function ops ------------------------------------------ */
9268 9269
9269 case BC_UGET: 9270 case BC_UGET:
9270 dasm_put(Dst, 5939, 32-1, offsetof(GCfuncL, uvptr), DtA(->v)); 9271 dasm_put(Dst, 5940, 32-1, offsetof(GCfuncL, uvptr), DtA(->v));
9271 break; 9272 break;
9272 case BC_USETV: 9273 case BC_USETV:
9273 dasm_put(Dst, 5960, 32-1, offsetof(GCfuncL, uvptr), DtA(->marked), DtA(->v), LJ_GC_BLACK, DtA(->closed), -(LJ_TISNUM+1), LJ_TISGCV - (LJ_TISNUM+1), Dt4(->gch.marked), LJ_GC_WHITES, GG_DISP2G); 9274 dasm_put(Dst, 5961, 32-1, offsetof(GCfuncL, uvptr), DtA(->marked), DtA(->v), LJ_GC_BLACK, DtA(->closed), -(LJ_TISNUM+1), LJ_TISGCV - (LJ_TISNUM+1), Dt4(->gch.marked), LJ_GC_WHITES, GG_DISP2G);
9274 break; 9275 break;
9275 case BC_USETS: 9276 case BC_USETS:
9276 dasm_put(Dst, 6013, 32-1, 32-1, offsetof(GCfuncL, uvptr), DtA(->marked), DtA(->v), LJ_GC_BLACK, Dt5(->marked), DtA(->closed), LJ_TSTR, LJ_GC_WHITES, GG_DISP2G); 9277 dasm_put(Dst, 6014, 32-1, 32-1, offsetof(GCfuncL, uvptr), DtA(->marked), DtA(->v), LJ_GC_BLACK, Dt5(->marked), DtA(->closed), LJ_TSTR, LJ_GC_WHITES, GG_DISP2G);
9277 break; 9278 break;
9278 case BC_USETN: 9279 case BC_USETN:
9279 dasm_put(Dst, 6064, 32-1, offsetof(GCfuncL, uvptr), DtA(->v)); 9280 dasm_put(Dst, 6065, 32-1, offsetof(GCfuncL, uvptr), DtA(->v));
9280 break; 9281 break;
9281 case BC_USETP: 9282 case BC_USETP:
9282 dasm_put(Dst, 6085, 32-1, 32-3, offsetof(GCfuncL, uvptr), DtA(->v)); 9283 dasm_put(Dst, 6086, 32-1, 32-3, offsetof(GCfuncL, uvptr), DtA(->v));
9283 break; 9284 break;
9284 9285
9285 case BC_UCLO: 9286 case BC_UCLO:
9286 dasm_put(Dst, 6108, Dt1(->openupval), 32-1, -(BCBIAS_J*4 >> 16), Dt1(->base), Dt1(->base)); 9287 dasm_put(Dst, 6109, Dt1(->openupval), 32-1, -(BCBIAS_J*4 >> 16), Dt1(->base), Dt1(->base));
9287 break; 9288 break;
9288 9289
9289 case BC_FNEW: 9290 case BC_FNEW:
9290 dasm_put(Dst, 6138, 32-1, Dt1(->base), Dt1(->base), LJ_TFUNC); 9291 dasm_put(Dst, 6139, 32-1, Dt1(->base), Dt1(->base), LJ_TFUNC);
9291 break; 9292 break;
9292 9293
9293 /* -- Table ops --------------------------------------------------------- */ 9294 /* -- Table ops --------------------------------------------------------- */
9294 9295
9295 case BC_TNEW: 9296 case BC_TNEW:
9296 case BC_TDUP: 9297 case BC_TDUP:
9297 dasm_put(Dst, 6166, DISPATCH_GL(gc.total), DISPATCH_GL(gc.threshold), Dt1(->base)); 9298 dasm_put(Dst, 6167, DISPATCH_GL(gc.total), DISPATCH_GL(gc.threshold), Dt1(->base));
9298 if (op == BC_TNEW) { 9299 if (op == BC_TNEW) {
9299 dasm_put(Dst, 6179); 9300 dasm_put(Dst, 6180);
9300 } else { 9301 } else {
9301 dasm_put(Dst, 6188, 32-1); 9302 dasm_put(Dst, 6189, 32-1);
9302 } 9303 }
9303 dasm_put(Dst, 6195, Dt1(->base), LJ_TTAB); 9304 dasm_put(Dst, 6196, Dt1(->base), LJ_TTAB);
9304 if (op == BC_TNEW) { 9305 if (op == BC_TNEW) {
9305 dasm_put(Dst, 6212); 9306 dasm_put(Dst, 6213);
9306 } 9307 }
9307 dasm_put(Dst, 6217); 9308 dasm_put(Dst, 6218);
9308 break; 9309 break;
9309 9310
9310 case BC_GGET: 9311 case BC_GGET:
9311 case BC_GSET: 9312 case BC_GSET:
9312 dasm_put(Dst, 6226, 32-1, Dt7(->env)); 9313 dasm_put(Dst, 6227, 32-1, Dt7(->env));
9313 if (op == BC_GGET) { 9314 if (op == BC_GGET) {
9314 dasm_put(Dst, 6234); 9315 dasm_put(Dst, 6235);
9315 } else { 9316 } else {
9316 dasm_put(Dst, 6237); 9317 dasm_put(Dst, 6238);
9317 } 9318 }
9318 break; 9319 break;
9319 9320
9320 case BC_TGETV: 9321 case BC_TGETV:
9321 dasm_put(Dst, 6240); 9322 dasm_put(Dst, 6241);
9322 if (LJ_DUALNUM) { 9323 if (LJ_DUALNUM) {
9323 dasm_put(Dst, 6244); 9324 dasm_put(Dst, 6245);
9324 } else { 9325 } else {
9325 dasm_put(Dst, 6246); 9326 dasm_put(Dst, 6247);
9326 } 9327 }
9327 dasm_put(Dst, 6248, LJ_TTAB); 9328 dasm_put(Dst, 6249, LJ_TTAB);
9328 if (LJ_DUALNUM) { 9329 if (LJ_DUALNUM) {
9329 dasm_put(Dst, 6254, Dt6(->asize), Dt6(->array), 31-3); 9330 dasm_put(Dst, 6255, Dt6(->asize), Dt6(->array), 31-3);
9330 } else { 9331 } else {
9331 dasm_put(Dst, 6264, Dt6(->asize), Dt6(->array), 31-3); 9332 dasm_put(Dst, 6265, Dt6(->asize), Dt6(->array), 31-3);
9332 } 9333 }
9333 dasm_put(Dst, 6281, LJ_TNIL, Dt6(->metatable), Dt6(->nomm), 1<<MM_index, LJ_TSTR); 9334 dasm_put(Dst, 6282, LJ_TNIL, Dt6(->metatable), Dt6(->nomm), 1<<MM_index, LJ_TSTR);
9334 if (!LJ_DUALNUM) { 9335 if (!LJ_DUALNUM) {
9335 dasm_put(Dst, 6321); 9336 dasm_put(Dst, 6322);
9336 } 9337 }
9337 dasm_put(Dst, 6323); 9338 dasm_put(Dst, 6324);
9338 break; 9339 break;
9339 case BC_TGETS: 9340 case BC_TGETS:
9340 dasm_put(Dst, 6326, 32-1, LJ_TTAB, Dt6(->hmask), Dt5(->hash), Dt6(->node), 31-5, 31-3, DtB(->key), 4+offsetof(Node, key), DtB(->val), 4+offsetof(Node, val), LJ_TSTR, LJ_TNIL, DtB(->next)); 9341 dasm_put(Dst, 6327, 32-1, LJ_TTAB, Dt6(->hmask), Dt5(->hash), Dt6(->node), 31-5, 31-3, DtB(->key), 4+offsetof(Node, key), DtB(->val), 4+offsetof(Node, val), LJ_TSTR, LJ_TNIL, DtB(->next));
9341 dasm_put(Dst, 6387, LJ_TNIL, Dt6(->metatable), Dt6(->nomm), 1<<MM_index); 9342 dasm_put(Dst, 6388, LJ_TNIL, Dt6(->metatable), Dt6(->nomm), 1<<MM_index);
9342 break; 9343 break;
9343 case BC_TGETB: 9344 case BC_TGETB:
9344 dasm_put(Dst, 6407, 32-3, LJ_TTAB, Dt6(->asize), Dt6(->array), LJ_TNIL, Dt6(->metatable), Dt6(->nomm), 1<<MM_index); 9345 dasm_put(Dst, 6408, 32-3, LJ_TTAB, Dt6(->asize), Dt6(->array), LJ_TNIL, Dt6(->metatable), Dt6(->nomm), 1<<MM_index);
9345 break; 9346 break;
9346 9347
9347 case BC_TSETV: 9348 case BC_TSETV:
9348 dasm_put(Dst, 6455); 9349 dasm_put(Dst, 6456);
9349 if (LJ_DUALNUM) { 9350 if (LJ_DUALNUM) {
9350 dasm_put(Dst, 6459); 9351 dasm_put(Dst, 6460);
9351 } else { 9352 } else {
9352 dasm_put(Dst, 6461); 9353 dasm_put(Dst, 6462);
9353 } 9354 }
9354 dasm_put(Dst, 6463, LJ_TTAB); 9355 dasm_put(Dst, 6464, LJ_TTAB);
9355 if (LJ_DUALNUM) { 9356 if (LJ_DUALNUM) {
9356 dasm_put(Dst, 6469, Dt6(->asize), Dt6(->array), 31-3); 9357 dasm_put(Dst, 6470, Dt6(->asize), Dt6(->array), 31-3);
9357 } else { 9358 } else {
9358 dasm_put(Dst, 6479, Dt6(->asize), Dt6(->array), 31-3); 9359 dasm_put(Dst, 6480, Dt6(->asize), Dt6(->array), 31-3);
9359 } 9360 }
9360 dasm_put(Dst, 6496, Dt6(->marked), LJ_TNIL, LJ_GC_BLACK, Dt6(->metatable), Dt6(->nomm), 1<<MM_newindex, LJ_TSTR); 9361 dasm_put(Dst, 6497, Dt6(->marked), LJ_TNIL, LJ_GC_BLACK, Dt6(->metatable), Dt6(->nomm), 1<<MM_newindex, LJ_TSTR);
9361 if (!LJ_DUALNUM) { 9362 if (!LJ_DUALNUM) {
9362 dasm_put(Dst, 6543); 9363 dasm_put(Dst, 6544);
9363 } 9364 }
9364 dasm_put(Dst, 6545, DISPATCH_GL(gc.grayagain), DISPATCH_GL(gc.grayagain), Dt6(->marked), Dt6(->gclist)); 9365 dasm_put(Dst, 6546, DISPATCH_GL(gc.grayagain), DISPATCH_GL(gc.grayagain), Dt6(->marked), Dt6(->gclist));
9365 break; 9366 break;
9366 case BC_TSETS: 9367 case BC_TSETS:
9367 dasm_put(Dst, 6560, 32-1, LJ_TTAB, Dt6(->hmask), Dt5(->hash), Dt6(->node), Dt6(->nomm), 31-5, 31-3, Dt6(->marked), DtB(->key), 4+offsetof(Node, key), DtB(->val), DtB(->next), LJ_TSTR, LJ_TNIL); 9368 dasm_put(Dst, 6561, 32-1, LJ_TTAB, Dt6(->hmask), Dt5(->hash), Dt6(->node), Dt6(->nomm), 31-5, 31-3, Dt6(->marked), DtB(->key), 4+offsetof(Node, key), DtB(->val), DtB(->next), LJ_TSTR, LJ_TNIL);
9368 dasm_put(Dst, 6611, LJ_GC_BLACK, DtB(->val), Dt6(->metatable), Dt6(->nomm), 1<<MM_newindex, Dt6(->metatable), DISPATCH_GL(tmptv), Dt1(->base), Dt6(->nomm), 1<<MM_newindex, LJ_TSTR); 9369 dasm_put(Dst, 6612, LJ_GC_BLACK, DtB(->val), Dt6(->metatable), Dt6(->nomm), 1<<MM_newindex, Dt6(->metatable), DISPATCH_GL(tmptv), Dt1(->base), Dt6(->nomm), 1<<MM_newindex, LJ_TSTR);
9369 dasm_put(Dst, 6668, Dt1(->base), DISPATCH_GL(gc.grayagain), DISPATCH_GL(gc.grayagain), Dt6(->marked), Dt6(->gclist)); 9370 dasm_put(Dst, 6669, Dt1(->base), DISPATCH_GL(gc.grayagain), DISPATCH_GL(gc.grayagain), Dt6(->marked), Dt6(->gclist));
9370 break; 9371 break;
9371 case BC_TSETB: 9372 case BC_TSETB:
9372 dasm_put(Dst, 6691, 32-3, LJ_TTAB, Dt6(->asize), Dt6(->array), Dt6(->marked), LJ_TNIL, LJ_GC_BLACK, Dt6(->metatable), Dt6(->nomm), 1<<MM_newindex, DISPATCH_GL(gc.grayagain)); 9373 dasm_put(Dst, 6692, 32-3, LJ_TTAB, Dt6(->asize), Dt6(->array), Dt6(->marked), LJ_TNIL, LJ_GC_BLACK, Dt6(->metatable), Dt6(->nomm), 1<<MM_newindex, DISPATCH_GL(gc.grayagain));
9373 dasm_put(Dst, 6749, DISPATCH_GL(gc.grayagain), Dt6(->marked), Dt6(->gclist)); 9374 dasm_put(Dst, 6750, DISPATCH_GL(gc.grayagain), Dt6(->marked), Dt6(->gclist));
9374 break; 9375 break;
9375 9376
9376 case BC_TSETM: 9377 case BC_TSETM:
9377 dasm_put(Dst, 6759, 32-3, Dt6(->asize), 31-3, Dt6(->marked), Dt6(->array), LJ_GC_BLACK, Dt1(->base), DISPATCH_GL(gc.grayagain), DISPATCH_GL(gc.grayagain), Dt6(->marked), Dt6(->gclist)); 9378 dasm_put(Dst, 6760, 32-3, Dt6(->asize), 31-3, Dt6(->marked), Dt6(->array), LJ_GC_BLACK, Dt1(->base), DISPATCH_GL(gc.grayagain), DISPATCH_GL(gc.grayagain), Dt6(->marked), Dt6(->gclist));
9378 dasm_put(Dst, 6828); 9379 dasm_put(Dst, 6829);
9379 break; 9380 break;
9380 9381
9381 /* -- Calls and vararg handling ----------------------------------------- */ 9382 /* -- Calls and vararg handling ----------------------------------------- */
9382 9383
9383 case BC_CALLM: 9384 case BC_CALLM:
9384 dasm_put(Dst, 6831); 9385 dasm_put(Dst, 6832);
9385 break; 9386 break;
9386 case BC_CALL: 9387 case BC_CALL:
9387 dasm_put(Dst, 6833, LJ_TFUNC, Dt7(->pc)); 9388 dasm_put(Dst, 6834, LJ_TFUNC, Dt7(->pc));
9388 break; 9389 break;
9389 9390
9390 case BC_CALLMT: 9391 case BC_CALLMT:
9391 dasm_put(Dst, 6854); 9392 dasm_put(Dst, 6855);
9392 break; 9393 break;
9393 case BC_CALLT: 9394 case BC_CALLT:
9394 dasm_put(Dst, 6856, LJ_TFUNC, FRAME_TYPE, Dt7(->ffid), FRAME_VARG, Dt7(->pc), -4-8, Dt7(->pc), PC2PROTO(k), FRAME_TYPEP); 9395 dasm_put(Dst, 6857, LJ_TFUNC, FRAME_TYPE, Dt7(->ffid), FRAME_VARG, Dt7(->pc), -4-8, Dt7(->pc), PC2PROTO(k), FRAME_TYPEP);
9395 dasm_put(Dst, 6920, FRAME_TYPE); 9396 dasm_put(Dst, 6921, FRAME_TYPE);
9396 break; 9397 break;
9397 9398
9398 case BC_ITERC: 9399 case BC_ITERC:
9399 dasm_put(Dst, 6929, LJ_TFUNC, Dt7(->pc)); 9400 dasm_put(Dst, 6930, LJ_TFUNC, Dt7(->pc));
9400 break; 9401 break;
9401 9402
9402 case BC_ITERN: 9403 case BC_ITERN:
9403#if LJ_HASJIT 9404#if LJ_HASJIT
9404#endif 9405#endif
9405 dasm_put(Dst, 6956, Dt6(->asize), Dt6(->array), 31-3, LJ_TNIL); 9406 dasm_put(Dst, 6957, Dt6(->asize), Dt6(->array), 31-3, LJ_TNIL);
9406 if (LJ_DUALNUM) { 9407 if (LJ_DUALNUM) {
9407 dasm_put(Dst, 6978); 9408 dasm_put(Dst, 6979);
9408 } else { 9409 } else {
9409 dasm_put(Dst, 6981); 9410 dasm_put(Dst, 6982);
9410 } 9411 }
9411 dasm_put(Dst, 6985, -(BCBIAS_J*4 >> 16)); 9412 dasm_put(Dst, 6986, -(BCBIAS_J*4 >> 16));
9412 if (!LJ_DUALNUM) { 9413 if (!LJ_DUALNUM) {
9413 dasm_put(Dst, 6993); 9414 dasm_put(Dst, 6994);
9414 } 9415 }
9415 dasm_put(Dst, 6995, Dt6(->hmask), Dt6(->node), 31-5, 31-3, LJ_TNIL, DtB(->key), -(BCBIAS_J*4 >> 16)); 9416 dasm_put(Dst, 6996, Dt6(->hmask), Dt6(->node), 31-5, 31-3, LJ_TNIL, DtB(->key), -(BCBIAS_J*4 >> 16));
9416 break; 9417 break;
9417 9418
9418 case BC_ISNEXT: 9419 case BC_ISNEXT:
9419 dasm_put(Dst, 7051, LJ_TTAB, LJ_TFUNC, LJ_TNIL, Dt8(->ffid), FF_next_N, 32-1, -(BCBIAS_J*4 >> 16), BC_JMP, BC_ITERC, -(BCBIAS_J*4 >> 16)); 9420 dasm_put(Dst, 7052, LJ_TTAB, LJ_TFUNC, LJ_TNIL, Dt8(->ffid), FF_next_N, 32-1, -(BCBIAS_J*4 >> 16), BC_JMP, BC_ITERC, -(BCBIAS_J*4 >> 16));
9420 break; 9421 break;
9421 9422
9422 case BC_VARG: 9423 case BC_VARG:
9423 dasm_put(Dst, 7101, FRAME_VARG, Dt1(->maxstack), Dt1(->top), Dt1(->base), 32-3, Dt1(->base)); 9424 dasm_put(Dst, 7102, FRAME_VARG, Dt1(->maxstack), Dt1(->top), Dt1(->base), 32-3, Dt1(->base));
9424 dasm_put(Dst, 7181); 9425 dasm_put(Dst, 7182);
9425 break; 9426 break;
9426 9427
9427 /* -- Returns ----------------------------------------------------------- */ 9428 /* -- Returns ----------------------------------------------------------- */
9428 9429
9429 case BC_RETM: 9430 case BC_RETM:
9430 dasm_put(Dst, 7187); 9431 dasm_put(Dst, 7188);
9431 break; 9432 break;
9432 9433
9433 case BC_RET: 9434 case BC_RET:
9434 dasm_put(Dst, 7189, FRAME_TYPE, FRAME_VARG, Dt7(->pc), PC2PROTO(k), FRAME_TYPEP); 9435 dasm_put(Dst, 7190, FRAME_TYPE, FRAME_VARG, Dt7(->pc), PC2PROTO(k), FRAME_TYPEP);
9435 break; 9436 break;
9436 9437
9437 case BC_RET0: case BC_RET1: 9438 case BC_RET0: case BC_RET1:
9438 dasm_put(Dst, 7259, FRAME_TYPE, FRAME_VARG); 9439 dasm_put(Dst, 7260, FRAME_TYPE, FRAME_VARG);
9439 if (op == BC_RET1) { 9440 if (op == BC_RET1) {
9440 dasm_put(Dst, 7272); 9441 dasm_put(Dst, 7273);
9441 } 9442 }
9442 dasm_put(Dst, 7275, Dt7(->pc), PC2PROTO(k)); 9443 dasm_put(Dst, 7276, Dt7(->pc), PC2PROTO(k));
9443 break; 9444 break;
9444 9445
9445 /* -- Loops and branches ------------------------------------------------ */ 9446 /* -- Loops and branches ------------------------------------------------ */
9446 9447
9447 case BC_FORL: 9448 case BC_FORL:
9448#if LJ_HASJIT 9449#if LJ_HASJIT
9449 dasm_put(Dst, 7303, GG_DISP2HOT, -HOTCOUNT_LOOP); 9450 dasm_put(Dst, 7304, GG_DISP2HOT, -HOTCOUNT_LOOP);
9450#endif 9451#endif
9451 break; 9452 break;
9452 9453
@@ -9459,100 +9460,100 @@ static void build_ins(BuildCtx *ctx, BCOp op, int defop)
9459 case BC_IFORL: 9460 case BC_IFORL:
9460 vk = (op == BC_IFORL || op == BC_JFORL); 9461 vk = (op == BC_IFORL || op == BC_JFORL);
9461 if (LJ_DUALNUM) { 9462 if (LJ_DUALNUM) {
9462 dasm_put(Dst, 7313, FORL_IDX*8+4); 9463 dasm_put(Dst, 7314, FORL_IDX*8+4);
9463 if (vk) { 9464 if (vk) {
9464 dasm_put(Dst, 7318, FORL_STEP*8+4, FORL_STOP*8+4, FORL_IDX*8+4); 9465 dasm_put(Dst, 7319, FORL_STEP*8+4, FORL_STOP*8+4, FORL_IDX*8+4);
9465 } else { 9466 } else {
9466 dasm_put(Dst, 7332, FORL_STEP*8, FORL_STEP*8+4, FORL_STOP*8, FORL_STOP*8+4); 9467 dasm_put(Dst, 7333, FORL_STEP*8, FORL_STEP*8+4, FORL_STOP*8, FORL_STOP*8+4);
9467 } 9468 }
9468 dasm_put(Dst, 7348, FORL_EXT*8); 9469 dasm_put(Dst, 7349, FORL_EXT*8);
9469 if (op != BC_JFORL) { 9470 if (op != BC_JFORL) {
9470 dasm_put(Dst, 7355, 32-1); 9471 dasm_put(Dst, 7356, 32-1);
9471 } 9472 }
9472 dasm_put(Dst, 7358, FORL_EXT*8+4); 9473 dasm_put(Dst, 7359, FORL_EXT*8+4);
9473 if (op != BC_JFORL) { 9474 if (op != BC_JFORL) {
9474 dasm_put(Dst, 7361); 9475 dasm_put(Dst, 7362);
9475 } 9476 }
9476 if (op == BC_FORI) { 9477 if (op == BC_FORI) {
9477 dasm_put(Dst, 7363); 9478 dasm_put(Dst, 7364);
9478 } else if (op == BC_JFORI) { 9479 } else if (op == BC_JFORI) {
9479 dasm_put(Dst, 7366, -(BCBIAS_J*4 >> 16)); 9480 dasm_put(Dst, 7367, -(BCBIAS_J*4 >> 16));
9480 } else if (op == BC_IFORL) { 9481 } else if (op == BC_IFORL) {
9481 dasm_put(Dst, 7371, -(BCBIAS_J*4 >> 16)); 9482 dasm_put(Dst, 7372, -(BCBIAS_J*4 >> 16));
9482 } else { 9483 } else {
9483 dasm_put(Dst, 7376, BC_JLOOP); 9484 dasm_put(Dst, 7377, BC_JLOOP);
9484 } 9485 }
9485 dasm_put(Dst, 7379); 9486 dasm_put(Dst, 7380);
9486 if (vk) { 9487 if (vk) {
9487 dasm_put(Dst, 7395); 9488 dasm_put(Dst, 7396);
9488 } 9489 }
9489 } 9490 }
9490 if (vk) { 9491 if (vk) {
9491 if (LJ_DUALNUM) { 9492 if (LJ_DUALNUM) {
9492 dasm_put(Dst, 7402, FORL_IDX*8); 9493 dasm_put(Dst, 7403, FORL_IDX*8);
9493 } else { 9494 } else {
9494 dasm_put(Dst, 7406); 9495 dasm_put(Dst, 7407);
9495 } 9496 }
9496 dasm_put(Dst, 7408, FORL_STEP*8, FORL_STOP*8, FORL_STEP*8, FORL_IDX*8); 9497 dasm_put(Dst, 7409, FORL_STEP*8, FORL_STOP*8, FORL_STEP*8, FORL_IDX*8);
9497 } else { 9498 } else {
9498 if (LJ_DUALNUM) { 9499 if (LJ_DUALNUM) {
9499 dasm_put(Dst, 7418); 9500 dasm_put(Dst, 7419);
9500 } else { 9501 } else {
9501 dasm_put(Dst, 7420, FORL_STEP*8, FORL_STOP*8); 9502 dasm_put(Dst, 7421, FORL_STEP*8, FORL_STOP*8);
9502 } 9503 }
9503 dasm_put(Dst, 7429, FORL_IDX*8, FORL_STOP*8); 9504 dasm_put(Dst, 7430, FORL_IDX*8, FORL_STOP*8);
9504 } 9505 }
9505 dasm_put(Dst, 7438); 9506 dasm_put(Dst, 7439);
9506 if (op != BC_JFORL) { 9507 if (op != BC_JFORL) {
9507 dasm_put(Dst, 7440, 32-1); 9508 dasm_put(Dst, 7441, 32-1);
9508 } 9509 }
9509 dasm_put(Dst, 7443, FORL_EXT*8); 9510 dasm_put(Dst, 7444, FORL_EXT*8);
9510 if (op != BC_JFORL) { 9511 if (op != BC_JFORL) {
9511 dasm_put(Dst, 7446); 9512 dasm_put(Dst, 7447);
9512 } 9513 }
9513 dasm_put(Dst, 7448); 9514 dasm_put(Dst, 7449);
9514 if (op == BC_JFORI) { 9515 if (op == BC_JFORI) {
9515 dasm_put(Dst, 7450, -(BCBIAS_J*4 >> 16)); 9516 dasm_put(Dst, 7451, -(BCBIAS_J*4 >> 16));
9516 } 9517 }
9517 dasm_put(Dst, 7453); 9518 dasm_put(Dst, 7454);
9518 if (op == BC_FORI) { 9519 if (op == BC_FORI) {
9519 dasm_put(Dst, 7456); 9520 dasm_put(Dst, 7457);
9520 } else if (op == BC_IFORL) { 9521 } else if (op == BC_IFORL) {
9521 if (LJ_DUALNUM) { 9522 if (LJ_DUALNUM) {
9522 dasm_put(Dst, 7459); 9523 dasm_put(Dst, 7460);
9523 } else { 9524 } else {
9524 dasm_put(Dst, 7462); 9525 dasm_put(Dst, 7463);
9525 } 9526 }
9526 dasm_put(Dst, 7465, -(BCBIAS_J*4 >> 16)); 9527 dasm_put(Dst, 7466, -(BCBIAS_J*4 >> 16));
9527 } else if (op == BC_JFORI) { 9528 } else if (op == BC_JFORI) {
9528 dasm_put(Dst, 7469); 9529 dasm_put(Dst, 7470);
9529 } else { 9530 } else {
9530 dasm_put(Dst, 7472, BC_JLOOP); 9531 dasm_put(Dst, 7473, BC_JLOOP);
9531 } 9532 }
9532 if (LJ_DUALNUM) { 9533 if (LJ_DUALNUM) {
9533 dasm_put(Dst, 7475); 9534 dasm_put(Dst, 7476);
9534 } else { 9535 } else {
9535 dasm_put(Dst, 7478); 9536 dasm_put(Dst, 7479);
9536 } 9537 }
9537 dasm_put(Dst, 7490); 9538 dasm_put(Dst, 7491);
9538 if (op == BC_FORI) { 9539 if (op == BC_FORI) {
9539 dasm_put(Dst, 7492, -(BCBIAS_J*4 >> 16)); 9540 dasm_put(Dst, 7493, -(BCBIAS_J*4 >> 16));
9540 } else if (op == BC_IFORL) { 9541 } else if (op == BC_IFORL) {
9541 dasm_put(Dst, 7498); 9542 dasm_put(Dst, 7499);
9542 } else if (op == BC_JFORI) { 9543 } else if (op == BC_JFORI) {
9543 dasm_put(Dst, 7501); 9544 dasm_put(Dst, 7502);
9544 } else { 9545 } else {
9545 dasm_put(Dst, 7504, BC_JLOOP); 9546 dasm_put(Dst, 7505, BC_JLOOP);
9546 } 9547 }
9547 dasm_put(Dst, 7507); 9548 dasm_put(Dst, 7508);
9548 if (op == BC_JFORI) { 9549 if (op == BC_JFORI) {
9549 dasm_put(Dst, 7510, BC_JLOOP); 9550 dasm_put(Dst, 7511, BC_JLOOP);
9550 } 9551 }
9551 break; 9552 break;
9552 9553
9553 case BC_ITERL: 9554 case BC_ITERL:
9554#if LJ_HASJIT 9555#if LJ_HASJIT
9555 dasm_put(Dst, 7516, GG_DISP2HOT, -HOTCOUNT_LOOP); 9556 dasm_put(Dst, 7517, GG_DISP2HOT, -HOTCOUNT_LOOP);
9556#endif 9557#endif
9557 break; 9558 break;
9558 9559
@@ -9561,40 +9562,40 @@ static void build_ins(BuildCtx *ctx, BCOp op, int defop)
9561 break; 9562 break;
9562#endif 9563#endif
9563 case BC_IITERL: 9564 case BC_IITERL:
9564 dasm_put(Dst, 7526, LJ_TNIL); 9565 dasm_put(Dst, 7527, LJ_TNIL);
9565 if (op == BC_JITERL) { 9566 if (op == BC_JITERL) {
9566 dasm_put(Dst, 7533, BC_JLOOP); 9567 dasm_put(Dst, 7534, BC_JLOOP);
9567 } else { 9568 } else {
9568 dasm_put(Dst, 7538, 32-1, -(BCBIAS_J*4 >> 16)); 9569 dasm_put(Dst, 7539, 32-1, -(BCBIAS_J*4 >> 16));
9569 } 9570 }
9570 dasm_put(Dst, 7546); 9571 dasm_put(Dst, 7547);
9571 break; 9572 break;
9572 9573
9573 case BC_LOOP: 9574 case BC_LOOP:
9574#if LJ_HASJIT 9575#if LJ_HASJIT
9575 dasm_put(Dst, 7558, GG_DISP2HOT, -HOTCOUNT_LOOP); 9576 dasm_put(Dst, 7559, GG_DISP2HOT, -HOTCOUNT_LOOP);
9576#endif 9577#endif
9577 break; 9578 break;
9578 9579
9579 case BC_ILOOP: 9580 case BC_ILOOP:
9580 dasm_put(Dst, 7568); 9581 dasm_put(Dst, 7569);
9581 break; 9582 break;
9582 9583
9583 case BC_JLOOP: 9584 case BC_JLOOP:
9584#if LJ_HASJIT 9585#if LJ_HASJIT
9585 dasm_put(Dst, 7579, DISPATCH_J(trace), 32-1, DISPATCH_GL(vmstate), DtD(->mcode), DISPATCH_GL(jit_base), DISPATCH_GL(jit_L), GG_DISP2G+32768); 9586 dasm_put(Dst, 7580, DISPATCH_J(trace), 32-1, DISPATCH_GL(vmstate), DtD(->mcode), DISPATCH_GL(jit_base), DISPATCH_GL(jit_L), GG_DISP2G+32768);
9586#endif 9587#endif
9587 break; 9588 break;
9588 9589
9589 case BC_JMP: 9590 case BC_JMP:
9590 dasm_put(Dst, 7598, 32-1, -(BCBIAS_J*4 >> 16)); 9591 dasm_put(Dst, 7599, 32-1, -(BCBIAS_J*4 >> 16));
9591 break; 9592 break;
9592 9593
9593 /* -- Function headers -------------------------------------------------- */ 9594 /* -- Function headers -------------------------------------------------- */
9594 9595
9595 case BC_FUNCF: 9596 case BC_FUNCF:
9596#if LJ_HASJIT 9597#if LJ_HASJIT
9597 dasm_put(Dst, 7614, GG_DISP2HOT, -HOTCOUNT_CALL); 9598 dasm_put(Dst, 7615, GG_DISP2HOT, -HOTCOUNT_CALL);
9598#endif 9599#endif
9599 case BC_FUNCV: /* NYI: compiled vararg functions. */ 9600 case BC_FUNCV: /* NYI: compiled vararg functions. */
9600 break; 9601 break;
@@ -9604,42 +9605,42 @@ static void build_ins(BuildCtx *ctx, BCOp op, int defop)
9604 break; 9605 break;
9605#endif 9606#endif
9606 case BC_IFUNCF: 9607 case BC_IFUNCF:
9607 dasm_put(Dst, 7624, Dt1(->maxstack), -4+PC2PROTO(numparams), -4+PC2PROTO(k), 31-3); 9608 dasm_put(Dst, 7625, Dt1(->maxstack), -4+PC2PROTO(numparams), -4+PC2PROTO(k), 31-3);
9608 if (op != BC_JFUNCF) { 9609 if (op != BC_JFUNCF) {
9609 dasm_put(Dst, 7636); 9610 dasm_put(Dst, 7637);
9610 } 9611 }
9611 dasm_put(Dst, 7639); 9612 dasm_put(Dst, 7640);
9612 if (op == BC_JFUNCF) { 9613 if (op == BC_JFUNCF) {
9613 dasm_put(Dst, 7644, BC_JLOOP); 9614 dasm_put(Dst, 7645, BC_JLOOP);
9614 } else { 9615 } else {
9615 dasm_put(Dst, 7648); 9616 dasm_put(Dst, 7649);
9616 } 9617 }
9617 dasm_put(Dst, 7657); 9618 dasm_put(Dst, 7658);
9618 break; 9619 break;
9619 9620
9620 case BC_JFUNCV: 9621 case BC_JFUNCV:
9621#if !LJ_HASJIT 9622#if !LJ_HASJIT
9622 break; 9623 break;
9623#endif 9624#endif
9624 dasm_put(Dst, 7663); 9625 dasm_put(Dst, 7664);
9625 break; /* NYI: compiled vararg functions. */ 9626 break; /* NYI: compiled vararg functions. */
9626 9627
9627 case BC_IFUNCV: 9628 case BC_IFUNCV:
9628 dasm_put(Dst, 7665, Dt1(->maxstack), 8+FRAME_VARG, -4+PC2PROTO(k), -4+PC2PROTO(numparams), LJ_TNIL); 9629 dasm_put(Dst, 7666, Dt1(->maxstack), 8+FRAME_VARG, -4+PC2PROTO(k), -4+PC2PROTO(numparams), LJ_TNIL);
9629 break; 9630 break;
9630 9631
9631 case BC_FUNCC: 9632 case BC_FUNCC:
9632 case BC_FUNCCW: 9633 case BC_FUNCCW:
9633 if (op == BC_FUNCC) { 9634 if (op == BC_FUNCC) {
9634 dasm_put(Dst, 7718, Dt8(->f)); 9635 dasm_put(Dst, 7719, Dt8(->f));
9635 } else { 9636 } else {
9636 dasm_put(Dst, 7721, DISPATCH_GL(wrapf)); 9637 dasm_put(Dst, 7722, DISPATCH_GL(wrapf));
9637 } 9638 }
9638 dasm_put(Dst, 7724, Dt1(->maxstack), Dt1(->base), Dt1(->top), ~LJ_VMST_C); 9639 dasm_put(Dst, 7725, Dt1(->maxstack), Dt1(->base), Dt1(->top), ~LJ_VMST_C);
9639 if (op == BC_FUNCCW) { 9640 if (op == BC_FUNCCW) {
9640 dasm_put(Dst, 7737, Dt8(->f)); 9641 dasm_put(Dst, 7738, Dt8(->f));
9641 } 9642 }
9642 dasm_put(Dst, 7740, DISPATCH_GL(vmstate), Dt1(->base), 31-3, Dt1(->top), ~LJ_VMST_INTERP, DISPATCH_GL(vmstate)); 9643 dasm_put(Dst, 7741, DISPATCH_GL(vmstate), Dt1(->base), 31-3, Dt1(->top), ~LJ_VMST_INTERP, DISPATCH_GL(vmstate));
9643 break; 9644 break;
9644 9645
9645 /* ---------------------------------------------------------------------- */ 9646 /* ---------------------------------------------------------------------- */
@@ -9659,7 +9660,7 @@ static int build_backend(BuildCtx *ctx)
9659 9660
9660 build_subroutines(ctx); 9661 build_subroutines(ctx);
9661 9662
9662 dasm_put(Dst, 7761); 9663 dasm_put(Dst, 7762);
9663 for (op = 0; op < BC__MAX; op++) 9664 for (op = 0; op < BC__MAX; op++)
9664 build_ins(ctx, (BCOp)op, op); 9665 build_ins(ctx, (BCOp)op, op);
9665 9666