aboutsummaryrefslogtreecommitdiff
path: root/src/vm_arm.dasc
diff options
context:
space:
mode:
Diffstat (limited to '')
-rw-r--r--src/vm_arm.dasc17
1 files changed, 15 insertions, 2 deletions
diff --git a/src/vm_arm.dasc b/src/vm_arm.dasc
index 770c1602..4df4b488 100644
--- a/src/vm_arm.dasc
+++ b/src/vm_arm.dasc
@@ -2196,8 +2196,8 @@ static void build_subroutines(BuildCtx *ctx)
2196 |.if JIT 2196 |.if JIT
2197 | ldr L, SAVE_L 2197 | ldr L, SAVE_L
2198 |1: 2198 |1:
2199 | cmp CARG1, #0 2199 | cmn CARG1, #LUA_ERRERR
2200 | blt >9 // Check for error from exit. 2200 | bhs >9 // Check for error from exit.
2201 | lsl RC, CARG1, #3 2201 | lsl RC, CARG1, #3
2202 | ldr LFUNC:CARG2, [BASE, FRAME_FUNC] 2202 | ldr LFUNC:CARG2, [BASE, FRAME_FUNC]
2203 | str RC, SAVE_MULTRES 2203 | str RC, SAVE_MULTRES
@@ -2213,6 +2213,8 @@ static void build_subroutines(BuildCtx *ctx)
2213 | ldr INS, [PC], #4 2213 | ldr INS, [PC], #4
2214 | lsl MASKR8, MASKR8, #3 // MASKR8 = 255*8. 2214 | lsl MASKR8, MASKR8, #3 // MASKR8 = 255*8.
2215 | st_vmstate CARG4 2215 | st_vmstate CARG4
2216 | cmn CARG1, #17 // Static dispatch?
2217 | beq >5
2216 | cmp OP, #BC_FUNCC+2 // Fast function? 2218 | cmp OP, #BC_FUNCC+2 // Fast function?
2217 | bhs >4 2219 | bhs >4
2218 |2: 2220 |2:
@@ -2238,6 +2240,17 @@ static void build_subroutines(BuildCtx *ctx)
2238 | ldr KBASE, [CARG3, #PC2PROTO(k)] 2240 | ldr KBASE, [CARG3, #PC2PROTO(k)]
2239 | b <2 2241 | b <2
2240 | 2242 |
2243 |5: // Dispatch to static entry of original ins replaced by BC_JLOOP.
2244 | ldr CARG1, [DISPATCH, #DISPATCH_J(trace)]
2245 | decode_RD RC, INS
2246 | ldr TRACE:CARG1, [CARG1, RC, lsl #2]
2247 | ldr INS, TRACE:CARG1->startins
2248 | decode_OP OP, INS
2249 | decode_RA8 RA, INS
2250 | add OP, DISPATCH, OP, lsl #2
2251 | decode_RD RC, INS
2252 | ldr pc, [OP, #GG_DISP2STATIC]
2253 |
2241 |9: // Rethrow error from the right C frame. 2254 |9: // Rethrow error from the right C frame.
2242 | rsb CARG2, CARG1, #0 2255 | rsb CARG2, CARG1, #0
2243 | mov CARG1, L 2256 | mov CARG1, L