aboutsummaryrefslogtreecommitdiff
path: root/src/vm_arm.dasc
diff options
context:
space:
mode:
Diffstat (limited to 'src/vm_arm.dasc')
-rw-r--r--src/vm_arm.dasc13
1 files changed, 5 insertions, 8 deletions
diff --git a/src/vm_arm.dasc b/src/vm_arm.dasc
index 0bd9b147..af722f9e 100644
--- a/src/vm_arm.dasc
+++ b/src/vm_arm.dasc
@@ -2086,7 +2086,7 @@ static void build_subroutines(BuildCtx *ctx)
2086 | // RA = resultptr, CARG4 = meta base 2086 | // RA = resultptr, CARG4 = meta base
2087 | ldr RB, SAVE_MULTRES 2087 | ldr RB, SAVE_MULTRES
2088 | ldr INS, [PC, #-4] 2088 | ldr INS, [PC, #-4]
2089 | ldr CARG3, [CARG4, #-24] // Save previous trace number. 2089 | ldr TRACE:CARG3, [CARG4, #-24] // Save previous trace.
2090 | subs RB, RB, #8 2090 | subs RB, RB, #8
2091 | decode_RA8 RC, INS // Call base. 2091 | decode_RA8 RC, INS // Call base.
2092 | beq >2 2092 | beq >2
@@ -2101,23 +2101,20 @@ static void build_subroutines(BuildCtx *ctx)
2101 | decode_RA8 RA, INS 2101 | decode_RA8 RA, INS
2102 | decode_RB8 RB, INS 2102 | decode_RB8 RB, INS
2103 | add RA, RA, RB 2103 | add RA, RA, RB
2104 | ldr CARG1, [DISPATCH, #DISPATCH_J(trace)]
2105 |3: 2104 |3:
2106 | cmp RA, RC 2105 | cmp RA, RC
2107 | mvn CARG2, #~LJ_TNIL 2106 | mvn CARG2, #~LJ_TNIL
2108 | bhi >9 // More results wanted? 2107 | bhi >9 // More results wanted?
2109 | 2108 |
2110 | ldr TRACE:RA, [CARG1, CARG3, lsl #2] 2109 | ldrh RA, TRACE:CARG3->traceno
2111 | cmp TRACE:RA, #0 2110 | ldrh RC, TRACE:CARG3->link
2112 | beq ->cont_nop 2111 | cmp RC, RA
2113 | ldrh RC, TRACE:RA->link
2114 | cmp RC, CARG3
2115 | beq ->cont_nop // Blacklisted. 2112 | beq ->cont_nop // Blacklisted.
2116 | cmp RC, #0 2113 | cmp RC, #0
2117 | bne =>BC_JLOOP // Jump to stitched trace. 2114 | bne =>BC_JLOOP // Jump to stitched trace.
2118 | 2115 |
2119 | // Stitch a new trace to the previous trace. 2116 | // Stitch a new trace to the previous trace.
2120 | str CARG3, [DISPATCH, #DISPATCH_J(exitno)] 2117 | str RA, [DISPATCH, #DISPATCH_J(exitno)]
2121 | str L, [DISPATCH, #DISPATCH_J(L)] 2118 | str L, [DISPATCH, #DISPATCH_J(L)]
2122 | str BASE, L->base 2119 | str BASE, L->base
2123 | sub CARG1, DISPATCH, #-GG_DISP2J 2120 | sub CARG1, DISPATCH, #-GG_DISP2J