aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--elymas/lib/sys/opt.ey12
1 files changed, 5 insertions, 7 deletions
diff --git a/elymas/lib/sys/opt.ey b/elymas/lib/sys/opt.ey
index 300a454..e71a6fc 100644
--- a/elymas/lib/sys/opt.ey
+++ b/elymas/lib/sys/opt.ey
@@ -2345,9 +2345,8 @@
isScoping {
allocatedScopeMightEscape {
[
- 8 /r15 :subqImm8Reg
- /r15 :popqMem
- 8 /r15 :subqImm8Reg
+ 8 neg /r15 :popqMemDisp8
+ 16 /r15 :subqImm8Reg
/r14 /r15 :movqRegMem
/r14 /rsi :movqRegReg
INITIALSCOPESIZE /rdi :movqImmReg
@@ -2360,9 +2359,8 @@
# this works even though we cannot GC the scope object anymore, because
# the stack contents are tracked anyway
[
- 8 /r15 :subqImm8Reg
- /r15 :popqMem
- 8 /r15 :subqImm8Reg
+ 8 neg /r15 :popqMemDisp8
+ 16 /r15 :subqImm8Reg
/r14 /r15 :movqRegMem
INITIALSCOPESIZE 8 mul 32 add /r15 :subqImm8Reg
/rax /rax :xorqRegReg
@@ -2389,8 +2387,8 @@
} { } ? *
}' {
[
+ 8 neg /r15 :popqMemDisp8
8 /r15 :subqImm8Reg
- /r15 :popqMem
] emitOpcodes
}' ? *