aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorDrahflow <drahflow@gmx.de>2015-05-27 16:38:46 +0200
committerDrahflow <drahflow@gmx.de>2015-05-27 16:38:46 +0200
commit9f66d9d17beea65c9728ad58d5622f1273f9a789 (patch)
treee433ec85b39c5e8fdbb92fb62ef3e51d60d056f4
parentb8e4ab88e773ca79bd0468461f0a0bae581496be (diff)
More instruction shuffling
-rw-r--r--compiler/elymasAsmLib.ey6
1 files changed, 3 insertions, 3 deletions
diff --git a/compiler/elymasAsmLib.ey b/compiler/elymasAsmLib.ey
index fb6bd76..2d3fe88 100644
--- a/compiler/elymasAsmLib.ey
+++ b/compiler/elymasAsmLib.ey
@@ -803,12 +803,10 @@
# guaranteed not to clobber rcx, rsi (because it is used in many loops)
@markObject
# rdi == address of a reachable object or some other random bits
- 15 /dil :testbImmReg
- /markObjectDone :jnzLbl32 # pointing to unaligned address
-
/rdi /rdx :movqRegReg
/r8 /rdx :subqRegReg
/markObjectDone :jbLbl32 # pointing below the heap
+
/rdi /r11 :cmpqRegReg
/markObjectDone :jbeLbl32 # pointing above the heap
@@ -821,6 +819,8 @@
/markObjectDone :jcLbl8 # was already marked (or not an object at all)
/rdx /r9 :btqRegMem # test block bit
/markObjectDoneFixMarkBit :jncLbl8 # not pointing to an object (... and mark bit should not have been set)
+ 15 /dil :testbImmReg
+ /markObjectDoneFixMarkBit :jnzLbl32 # pointing to unaligned address (... and mark bit should not have been set)
/rbp /rbp :xorqRegReg # rbp == 0: not from stack exploration, function code references ignored if trivial forward