summaryrefslogtreecommitdiff
path: root/src/buildvm_ppc.dasc
diff options
context:
space:
mode:
Diffstat (limited to 'src/buildvm_ppc.dasc')
-rw-r--r--src/buildvm_ppc.dasc11
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