diff options
Diffstat (limited to '')
-rw-r--r-- | src/buildvm_ppc.dasc | 31 |
1 files changed, 10 insertions, 21 deletions
diff --git a/src/buildvm_ppc.dasc b/src/buildvm_ppc.dasc index 99f4586f..77854ae1 100644 --- a/src/buildvm_ppc.dasc +++ b/src/buildvm_ppc.dasc | |||
@@ -1347,7 +1347,6 @@ static void build_subroutines(BuildCtx *ctx) | |||
1347 | | cmplwi NARGS8:RC, 16 | 1347 | | cmplwi NARGS8:RC, 16 |
1348 | | lwz CARG4, 8(BASE) | 1348 | | lwz CARG4, 8(BASE) |
1349 | | lfd FARG2, 8(BASE) | 1349 | | lfd FARG2, 8(BASE) |
1350 | | lwz CARG3, 0(BASE) | ||
1351 | | lfd FARG1, 0(BASE) | 1350 | | lfd FARG1, 0(BASE) |
1352 | | blt ->fff_fallback | 1351 | | blt ->fff_fallback |
1353 | | lbz TMP1, DISPATCH_GL(hookmask)(DISPATCH) | 1352 | | lbz TMP1, DISPATCH_GL(hookmask)(DISPATCH) |
@@ -1356,9 +1355,9 @@ static void build_subroutines(BuildCtx *ctx) | |||
1356 | | la BASE, 16(BASE) | 1355 | | la BASE, 16(BASE) |
1357 | | // Remember active hook before pcall. | 1356 | | // Remember active hook before pcall. |
1358 | | rlwinm TMP1, TMP1, 32-HOOK_ACTIVE_SHIFT, 31, 31 | 1357 | | rlwinm TMP1, TMP1, 32-HOOK_ACTIVE_SHIFT, 31, 31 |
1359 | | stfd FARG2, 0(TMP2) // Swap function and traceback. | 1358 | | stfd FARG2, 0(TMP2) // Swap function and traceback. |
1360 | | subi NARGS8:RC, NARGS8:RC, 16 | 1359 | | subi NARGS8:RC, NARGS8:RC, 16 |
1361 | | stfd FARG1, 8(TMP2) | 1360 | | stfd FARG1, 8(TMP2) |
1362 | | addi PC, TMP1, 16+FRAME_PCALL | 1361 | | addi PC, TMP1, 16+FRAME_PCALL |
1363 | | b ->vm_call_dispatch | 1362 | | b ->vm_call_dispatch |
1364 | | | 1363 | | |
@@ -2570,14 +2569,14 @@ static void build_subroutines(BuildCtx *ctx) | |||
2570 | | bl extern lj_ccallback_enter // (CTState *cts, void *cf) | 2569 | | bl extern lj_ccallback_enter // (CTState *cts, void *cf) |
2571 | | // Returns lua_State *. | 2570 | | // Returns lua_State *. |
2572 | | lwz BASE, L:CRET1->base | 2571 | | lwz BASE, L:CRET1->base |
2573 | | li TISNUM, LJ_TISNUM // Setup type comparison constants. | 2572 | | li TISNUM, LJ_TISNUM // Setup type comparison constants. |
2574 | | lwz RC, L:CRET1->top | 2573 | | lwz RC, L:CRET1->top |
2575 | | lus TMP3, 0x59c0 // TOBIT = 2^52 + 2^51 (float). | 2574 | | lus TMP3, 0x59c0 // TOBIT = 2^52 + 2^51 (float). |
2576 | | li ZERO, 0 | 2575 | | li ZERO, 0 |
2577 | | mr L, CRET1 | 2576 | | mr L, CRET1 |
2578 | | stw TMP3, TMPD | 2577 | | stw TMP3, TMPD |
2579 | | lwz LFUNC:RB, FRAME_FUNC(BASE) | 2578 | | lwz LFUNC:RB, FRAME_FUNC(BASE) |
2580 | | ori TMP3, TMP3, 0x0004 // TONUM = 2^52 + 2^51 + 2^31 (float). | 2579 | | ori TMP3, TMP3, 0x0004 // TONUM = 2^52 + 2^51 + 2^31 (float). |
2581 | | li TISNIL, LJ_TNIL | 2580 | | li TISNIL, LJ_TNIL |
2582 | | li_vmstate INTERP | 2581 | | li_vmstate INTERP |
2583 | | lfs TOBIT, TMPD | 2582 | | lfs TOBIT, TMPD |
@@ -2588,7 +2587,7 @@ static void build_subroutines(BuildCtx *ctx) | |||
2588 | | ins_callt | 2587 | | ins_callt |
2589 | #endif | 2588 | #endif |
2590 | | | 2589 | | |
2591 | |->cont_ffi_callback: // Return from FFI callback. | 2590 | |->cont_ffi_callback: // Return from FFI callback. |
2592 | #if LJ_HASFFI | 2591 | #if LJ_HASFFI |
2593 | | lwz CTSTATE, DISPATCH_GL(ctype_state)(DISPATCH) | 2592 | | lwz CTSTATE, DISPATCH_GL(ctype_state)(DISPATCH) |
2594 | | stw BASE, L->base | 2593 | | stw BASE, L->base |
@@ -2619,7 +2618,6 @@ static void build_subroutines(BuildCtx *ctx) | |||
2619 | | stwux sp, sp, TMP1 | 2618 | | stwux sp, sp, TMP1 |
2620 | | crnot 4*cr1+eq, 4*cr1+eq // For vararg calls. | 2619 | | crnot 4*cr1+eq, 4*cr1+eq // For vararg calls. |
2621 | | stw r14, -4(TMP2) | 2620 | | stw r14, -4(TMP2) |
2622 | | li TMP3, 0 | ||
2623 | | stw CCSTATE, -8(TMP2) | 2621 | | stw CCSTATE, -8(TMP2) |
2624 | | mr r14, TMP2 | 2622 | | mr r14, TMP2 |
2625 | | la TMP1, CCSTATE->stack | 2623 | | la TMP1, CCSTATE->stack |
@@ -3840,14 +3838,6 @@ static void build_ins(BuildCtx *ctx, BCOp op, int defop) | |||
3840 | | barrierback TAB:RB, TMP3, TMP0 | 3838 | | barrierback TAB:RB, TMP3, TMP0 |
3841 | | b <2 | 3839 | | b <2 |
3842 | break; | 3840 | break; |
3843 | |1: | ||
3844 | | checkstr CARG1; bne >4 | ||
3845 | | cmpw TMP0, STR:RC; bne >4 | ||
3846 | | checknil CARG2; beq >5 // Key found, but nil value? | ||
3847 | |3: | ||
3848 | | stwux CARG2, RA, BASE | ||
3849 | | stw TMP1, 4(RA) | ||
3850 | | ins_next | ||
3851 | case BC_TSETS: | 3841 | case BC_TSETS: |
3852 | | // RA = src*8, RB = table*8, RC = str_const*8 (~) | 3842 | | // RA = src*8, RB = table*8, RC = str_const*8 (~) |
3853 | | lwzux CARG1, RB, BASE | 3843 | | lwzux CARG1, RB, BASE |
@@ -3874,7 +3864,7 @@ static void build_ins(BuildCtx *ctx, BCOp op, int defop) | |||
3874 | | lwz CARG1, NODE:TMP2->key | 3864 | | lwz CARG1, NODE:TMP2->key |
3875 | | lwz TMP0, 4+offsetof(Node, key)(NODE:TMP2) | 3865 | | lwz TMP0, 4+offsetof(Node, key)(NODE:TMP2) |
3876 | | lwz CARG2, NODE:TMP2->val | 3866 | | lwz CARG2, NODE:TMP2->val |
3877 | | lwz TMP1, 4+offsetof(Node, val)(NODE:TMP2) | 3867 | | lwz NODE:TMP1, NODE:TMP2->next |
3878 | | checkstr CARG1; bne >5 | 3868 | | checkstr CARG1; bne >5 |
3879 | | cmpw TMP0, STR:RC; bne >5 | 3869 | | cmpw TMP0, STR:RC; bne >5 |
3880 | | checknil CARG2; beq >4 // Key found, but nil value? | 3870 | | checknil CARG2; beq >4 // Key found, but nil value? |
@@ -3895,8 +3885,8 @@ static void build_ins(BuildCtx *ctx, BCOp op, int defop) | |||
3895 | | b ->vmeta_tsets | 3885 | | b ->vmeta_tsets |
3896 | | | 3886 | | |
3897 | |5: // Follow hash chain. | 3887 | |5: // Follow hash chain. |
3898 | | lwz NODE:TMP2, NODE:TMP2->next | 3888 | | cmplwi NODE:TMP1, 0 |
3899 | | cmplwi NODE:TMP2, 0 | 3889 | | mr NODE:TMP2, NODE:TMP1 |
3900 | | bne <1 | 3890 | | bne <1 |
3901 | | // End of hash chain: key not found, add a new one. | 3891 | | // End of hash chain: key not found, add a new one. |
3902 | | | 3892 | | |
@@ -4470,7 +4460,6 @@ static void build_ins(BuildCtx *ctx, BCOp op, int defop) | |||
4470 | } | 4460 | } |
4471 | | lfd f1, FORL_IDX*8(RA) | 4461 | | lfd f1, FORL_IDX*8(RA) |
4472 | | crand 4*cr0+lt, 4*cr0+lt, 4*cr7+lt | 4462 | | crand 4*cr0+lt, 4*cr0+lt, 4*cr7+lt |
4473 | | lfd f3, FORL_STEP*8(RA) | ||
4474 | | crand 4*cr0+lt, 4*cr0+lt, 4*cr1+lt | 4463 | | crand 4*cr0+lt, 4*cr0+lt, 4*cr1+lt |
4475 | | lfd f2, FORL_STOP*8(RA) | 4464 | | lfd f2, FORL_STOP*8(RA) |
4476 | | bge ->vmeta_for | 4465 | | bge ->vmeta_for |
@@ -4625,7 +4614,7 @@ static void build_ins(BuildCtx *ctx, BCOp op, int defop) | |||
4625 | } | 4614 | } |
4626 | |2: | 4615 | |2: |
4627 | | cmplw NARGS8:RC, TMP1 // Check for missing parameters. | 4616 | | cmplw NARGS8:RC, TMP1 // Check for missing parameters. |
4628 | | ble >3 | 4617 | | blt >3 |
4629 | if (op == BC_JFUNCF) { | 4618 | if (op == BC_JFUNCF) { |
4630 | | decode_RD8 RD, INS | 4619 | | decode_RD8 RD, INS |
4631 | | b =>BC_JLOOP | 4620 | | b =>BC_JLOOP |