diff options
Diffstat (limited to 'src/buildvm_ppc.h')
-rw-r--r-- | src/buildvm_ppc.h | 809 |
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 |
15 | static const unsigned int build_actionlist[7762] = { | 15 | static const unsigned int build_actionlist[7763] = { |
16 | 0x00010001, | 16 | 0x00010001, |
17 | 0x00060014, | 17 | 0x00060014, |
18 | 0x72000000, | 18 | 0x72000000, |
@@ -3624,6 +3624,7 @@ static const unsigned int build_actionlist[7762] = { | |||
3624 | 0x00050803, | 3624 | 0x00050803, |
3625 | 0x80f0fffc, | 3625 | 0x80f0fffc, |
3626 | 0x54e8dd78, | 3626 | 0x54e8dd78, |
3627 | 0x39080008, | ||
3627 | 0x0006000d, | 3628 | 0x0006000d, |
3628 | 0x7d287050, | 3629 | 0x7d287050, |
3629 | 0x48000000, | 3630 | 0x48000000, |
@@ -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) | |||
8572 | static void build_ins(BuildCtx *ctx, BCOp op, int defop) | 8573 | static 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 | ||