aboutsummaryrefslogtreecommitdiff
path: root/compiler/elymasAsmLib.ey
diff options
context:
space:
mode:
authorDrahflow <drahflow@gmx.de>2015-06-08 14:41:43 +0200
committerDrahflow <drahflow@gmx.de>2015-06-08 14:41:43 +0200
commite7a57a28b61fe4d4bc1cea55e9bfb40c45ebe4cd (patch)
tree83cf460aff6805973164caf493b956e86f57e4ff /compiler/elymasAsmLib.ey
parent922208ad68d61487bf70a0adfc948514f160ea42 (diff)
Some code cleanup and instruction shuffling
Diffstat (limited to 'compiler/elymasAsmLib.ey')
-rw-r--r--compiler/elymasAsmLib.ey27
1 files changed, 7 insertions, 20 deletions
diff --git a/compiler/elymasAsmLib.ey b/compiler/elymasAsmLib.ey
index d571a4e..33c58de 100644
--- a/compiler/elymasAsmLib.ey
+++ b/compiler/elymasAsmLib.ey
@@ -412,14 +412,14 @@
freeLists /rsi :movqImmReg
8 /rax /rsi /rcx :leaqMemIndexScaleReg # load correct freelist start
- /rcx /rax :movqMemReg # load entry
- /rax /rax :testqRegReg
+ /rax /rax :xorqRegReg
+ /rcx /rax :orqMemReg # load entry
/freeListUseful :jnzLbl8
3 {
8 /rcx :addqImm8Reg
- /rcx /rax :movqMemReg # load entry
- /rax /rax :testqRegReg
+ /rax /rax :xorqRegReg
+ /rcx /rax :orqMemReg # load entry
/freeListUseful :jnzLbl8
} rep # try some larger freelists
@@ -534,11 +534,11 @@
/rdx :notqReg
/rdx /rax :andqRegReg
/rbx /rcx :movqRegReg
- # 63 /rcx :andqImm8Reg
+ # 63 /rcx :andqImm8Reg # no need for this, the shrq/shlq bitmask with 63 anyway
/rax :shrqClReg
/rax :shlqClReg
/rax /rax :bsfqRegReg # rax == lowest bit which denotes free block start
- /immediateHit :jnzLbl8
+ /freeBlockStartFound :jnzLbl8
%C0 /rbx :andqImm8Reg
64 /rbx :addqImm8Reg
@@ -546,22 +546,9 @@
/searchFreeBlockStart :jaLbl8
/noFreeBlockAvailable :jmpLbl32
- # /rbx /r8 :btqRegMem # test block bitmap
- # /nonFreeBlockStartFound :jcLbl8 # block not free
- # /rbx /r9 :btqRegMem # test mark bitmap
- # /freeBlockStartFound :jcLbl8 # block marked, i.e. truly free block start
-
- # @nonFreeBlockStartFound
- # /rbx :incqReg
- # /rbx /rbp :cmpqRegReg
- # /searchFreeBlockStart :jaLbl8
- # /noFreeBlockAvailable :jmpLbl32
-
- @immediateHit
+ @freeBlockStartFound
%C0 /rbx :andqImm8Reg
/rax /rbx :addqRegReg
-
- @freeBlockStartFound
/rbx /rdx :movqRegReg
@freeBlockContinues
16 /rsi :addqImm8Reg