diff options
| -rw-r--r-- | compiler/elymasAsmLib.ey | 14 | ||||
| -rw-r--r-- | compiler/elymasAsmOps.ey | 3 |
2 files changed, 8 insertions, 9 deletions
diff --git a/compiler/elymasAsmLib.ey b/compiler/elymasAsmLib.ey index e193111..9219c5d 100644 --- a/compiler/elymasAsmLib.ey +++ b/compiler/elymasAsmLib.ey @@ -457,11 +457,7 @@ /rdi :pushqReg markAndSweepCosts /rax :movqImmReg - /rax /rdx :movqMemReg - /rdx /rdx :testqRegReg - /costAlreadyZero :jzLbl8 - 1 /rax :subqImm8Mem - @costAlreadyZero + 1 /rax :addqImm8Mem /searchForFreeBlock :callqLbl32 /rax /rax :andqRegReg @@ -470,11 +466,9 @@ markAndSweepCosts /rax :movqImmReg MARKANDSWEEPCOST /rdx :movqImmReg - /rdx /rax :addqRegMem - - MARKANDSWEEPCOST 16 add /rdx :movqImmReg /rdx /rax :cmpqRegMem - /allocateFromSystemAtLeastOnce :jaeLbl8 + /allocateFromSystemAtLeastOnce :jbLbl8 + 0 /rax :andqImm8Mem @allocateFromSystemLoop /rdi :popqReg @@ -484,6 +478,8 @@ /success :jnzLbl32 @allocateFromSystemAtLeastOnce + markAndSweepCosts /rax :movqImmReg + 0 /rax :andqImm8Mem /allocateFromSystem :callqLbl32 /allocateFromSystemLoop :jmpLbl8 diff --git a/compiler/elymasAsmOps.ey b/compiler/elymasAsmOps.ey index 0a8c5f6..06efb82 100644 --- a/compiler/elymasAsmOps.ey +++ b/compiler/elymasAsmOps.ey @@ -1461,6 +1461,9 @@ memoryAddressingVariants keys { ==variant memoryAddressingVariants variant . =*p %AB } /stosq deff +/sbb %19 defAsmAddq +/sbb /three defAsmAddImm + { ==reg ==mem reg bit32assert mem bit64assert |
