summaryrefslogtreecommitdiff
path: root/src/vm_arm.dasc
diff options
context:
space:
mode:
authorMike Pall <mike>2012-10-09 13:19:57 +0200
committerMike Pall <mike>2012-10-09 13:19:57 +0200
commiteabfdfe1aa3b4b9c37b99137e6d5fb7cadbd47e9 (patch)
treeb7cf8922d69daedd5d5733214a77439c8986f570 /src/vm_arm.dasc
parentda682b0e9184d4db7e8e477c682947d106790240 (diff)
downloadluajit2-eabfdfe1aa3b4b9c37b99137e6d5fb7cadbd47e9.tar.gz
Don't use stack unwinding for lua_yield().
Diffstat (limited to 'src/vm_arm.dasc')
-rw-r--r--src/vm_arm.dasc8
1 files changed, 5 insertions, 3 deletions
diff --git a/src/vm_arm.dasc b/src/vm_arm.dasc
index 4909d827..f00b3028 100644
--- a/src/vm_arm.dasc
+++ b/src/vm_arm.dasc
@@ -269,10 +269,12 @@ static void build_subroutines(BuildCtx *ctx)
| sub RA, RA, #8
|
|->vm_returnc:
- | add RC, RC, #8 // RC = (nresults+1)*8.
- | ands CARG1, PC, #FRAME_TYPE
+ | adds RC, RC, #8 // RC = (nresults+1)*8.
+ | mov CRET1, #LUA_YIELD
+ | beq ->vm_unwind_c_eh
| str RC, SAVE_MULTRES
- | beq ->BC_RET_Z // Handle regular return to Lua.
+ | ands CARG1, PC, #FRAME_TYPE
+ | beq ->BC_RET_Z // Handle regular return to Lua.
|
|->vm_return:
| // BASE = base, RA = resultptr, RC/MULTRES = (nresults+1)*8, PC = return