diff options
Diffstat (limited to 'src/buildvm_ppc.dasc')
-rw-r--r-- | src/buildvm_ppc.dasc | 11 |
1 files changed, 5 insertions, 6 deletions
diff --git a/src/buildvm_ppc.dasc b/src/buildvm_ppc.dasc index 7b5919ba..55270280 100644 --- a/src/buildvm_ppc.dasc +++ b/src/buildvm_ppc.dasc | |||
@@ -578,10 +578,9 @@ static void build_subroutines(BuildCtx *ctx) | |||
578 | |->cont_dispatch: | 578 | |->cont_dispatch: |
579 | | // BASE = meta base, RA = resultptr, RD = (nresults+1)*8 | 579 | | // BASE = meta base, RA = resultptr, RD = (nresults+1)*8 |
580 | | lwz TMP0, -12(BASE) // Continuation. | 580 | | lwz TMP0, -12(BASE) // Continuation. |
581 | | rlwinm TMP1, PC, 0, 0, 28 | ||
582 | | mr RB, BASE | 581 | | mr RB, BASE |
583 | | sub BASE, BASE, TMP1 // Restore caller BASE. | 582 | | mr BASE, TMP2 // Restore caller BASE. |
584 | | lwz LFUNC:TMP1, FRAME_FUNC(BASE) | 583 | | lwz LFUNC:TMP1, FRAME_FUNC(TMP2) |
585 | | subi TMP2, RD, 8 | 584 | | subi TMP2, RD, 8 |
586 | | lwz PC, -16(RB) // Restore PC from [cont|PC]. | 585 | | lwz PC, -16(RB) // Restore PC from [cont|PC]. |
587 | | lwz TMP1, LFUNC:TMP1->pc | 586 | | lwz TMP1, LFUNC:TMP1->pc |
@@ -2514,13 +2513,13 @@ static void build_ins(BuildCtx *ctx, BCOp op, int defop) | |||
2514 | | evstdd TMP1, 0(CARG2) | 2513 | | evstdd TMP1, 0(CARG2) |
2515 | | cmplwi cr1, TMP0, 0 | 2514 | | cmplwi cr1, TMP0, 0 |
2516 | | cror 4*cr0+eq, 4*cr0+eq, 4*cr1+eq | 2515 | | cror 4*cr0+eq, 4*cr0+eq, 4*cr1+eq |
2517 | | subi TMP2, TMP2, LJ_TISNUM | 2516 | | subi TMP2, TMP2, (LJ_TISNUM+1) |
2518 | | bne >2 // Upvalue is closed and black? | 2517 | | bne >2 // Upvalue is closed and black? |
2519 | |1: | 2518 | |1: |
2520 | | ins_next | 2519 | | ins_next |
2521 | | | 2520 | | |
2522 | |2: // Check if new value is collectable. | 2521 | |2: // Check if new value is collectable. |
2523 | | cmplwi TMP2, LJ_TISGCV - LJ_TISNUM | 2522 | | cmplwi TMP2, LJ_TISGCV - (LJ_TISNUM+1) |
2524 | | bge <1 // tvisgcv(v) | 2523 | | bge <1 // tvisgcv(v) |
2525 | | lbz TMP3, GCOBJ:TMP1->gch.marked | 2524 | | lbz TMP3, GCOBJ:TMP1->gch.marked |
2526 | | andi. TMP3, TMP3, LJ_GC_WHITES // iswhite(v) | 2525 | | andi. TMP3, TMP3, LJ_GC_WHITES // iswhite(v) |
@@ -2554,7 +2553,7 @@ static void build_ins(BuildCtx *ctx, BCOp op, int defop) | |||
2554 | |2: // Check if string is white and ensure upvalue is closed. | 2553 | |2: // Check if string is white and ensure upvalue is closed. |
2555 | | andi. TMP3, TMP3, LJ_GC_WHITES // iswhite(str) | 2554 | | andi. TMP3, TMP3, LJ_GC_WHITES // iswhite(str) |
2556 | | cmplwi cr1, TMP2, 0 | 2555 | | cmplwi cr1, TMP2, 0 |
2557 | | crand 4*cr0+eq, 4*cr0+eq, 4*cr1+eq | 2556 | | cror 4*cr0+eq, 4*cr0+eq, 4*cr1+eq |
2558 | | la CARG1, GG_DISP2G(DISPATCH) | 2557 | | la CARG1, GG_DISP2G(DISPATCH) |
2559 | | // Crossed a write barrier. Move the barrier forward. | 2558 | | // Crossed a write barrier. Move the barrier forward. |
2560 | | beq <1 | 2559 | | beq <1 |