aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--compiler/elymasAsmLib.ey14
-rw-r--r--compiler/elymasAsmOps.ey3
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