aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorDrahflow <drahflow@gmx.de>2015-06-22 17:29:55 +0200
committerDrahflow <drahflow@gmx.de>2015-06-22 17:29:55 +0200
commit745d1e3cdf2ea0275f4a955a353e3a3a04cafd69 (patch)
tree08ddc52754faa2fe23ea2ca89cad417cbef3e680
parent9fe65a93ad8ba92808fcef1a077dc9e818130f1a (diff)
Some instruction shuffling (3% performance boost)
-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
}' ? *