diff options
Diffstat (limited to 'compiler')
| -rw-r--r-- | compiler/elymasAsmLib.ey | 30 |
1 files changed, 17 insertions, 13 deletions
diff --git a/compiler/elymasAsmLib.ey b/compiler/elymasAsmLib.ey index 8a0d139..d571a4e 100644 --- a/compiler/elymasAsmLib.ey +++ b/compiler/elymasAsmLib.ey @@ -521,6 +521,7 @@ /rbx /rbp :cmpqRegReg /noFreeBlockAvailable :jbeLbl32 + @resumeFreeBlockStartSearch /rsi /rsi :xorqRegReg # rsi > 0 => currently counting block extent of free block @@ -533,26 +534,29 @@ /rdx :notqReg /rdx /rax :andqRegReg /rbx /rcx :movqRegReg - 63 /rcx :andqImm8Reg + # 63 /rcx :andqImm8Reg /rax :shrqClReg /rax :shlqClReg /rax /rax :bsfqRegReg # rax == lowest bit which denotes free block start /immediateHit :jnzLbl8 - /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 - - @resumeFreeBlockStartSearch - /rsi /rsi :xorqRegReg - - @nonFreeBlockStartFound - /rbx :incqReg + %C0 /rbx :andqImm8Reg + 64 /rbx :addqImm8Reg /rbx /rbp :cmpqRegReg /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 %C0 /rbx :andqImm8Reg /rax /rbx :addqRegReg @@ -586,12 +590,12 @@ /rsi /rdx :movqRegMem # save old freelist start into heap /rdx /rcx :movqRegMem # save freelist entry - /resumeFreeBlockStartSearch :jmpLbl8 + /resumeFreeBlockStartSearch :jmpLbl32 @freeListEmpty 0 /rdx :andqImm8Mem # put zero into heap to signal end of list /rdx /rcx :movqRegMem # save freelist entry - /resumeFreeBlockStartSearch :jmpLbl8 + /resumeFreeBlockStartSearch :jmpLbl32 @freeBlockFound # rdi == size of block to allocate |
