summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorMike Pall <mike>2014-12-27 05:59:16 +0100
committerMike Pall <mike>2014-12-27 05:59:16 +0100
commit54826563b2f5e1f41c234bd021b3144efedcdc6f (patch)
tree2d44e492c711d1054a01215c52dffc26c58f11c7
parent1b774d9da38686532c1da623819fedf7b261f607 (diff)
downloadluajit2-54826563b2f5e1f41c234bd021b3144efedcdc6f.tar.gz
ARM: Fix excess stack growth in interpreter.
-rw-r--r--src/vm_arm.dasc4
1 files changed, 2 insertions, 2 deletions
diff --git a/src/vm_arm.dasc b/src/vm_arm.dasc
index 82cba909..0865d016 100644
--- a/src/vm_arm.dasc
+++ b/src/vm_arm.dasc
@@ -335,7 +335,7 @@ static void build_subroutines(BuildCtx *ctx)
| // - The GC shrinks the stack in between.
| // - A return back from a lua_call() with (high) nresults adjustment.
| str BASE, L->top // Save current top held in BASE (yes).
- | mov CARG2, KBASE
+ | lsr CARG2, KBASE, #3
| mov CARG1, L
| bl extern lj_state_growstack // (lua_State *L, int n)
| ldr BASE, L->top // Need the (realloced) L->top in BASE.
@@ -389,7 +389,7 @@ static void build_subroutines(BuildCtx *ctx)
| str BASE, L->base
| add PC, PC, #4 // Must point after first instruction.
| str RC, L->top
- | lsr CARG3, RA, #3
+ | lsr CARG2, RA, #3
|2:
| // L->base = new base, L->top = top
| str PC, SAVE_PC