diff options
Diffstat (limited to 'compiler')
| -rw-r--r-- | compiler/elymasAsmLib.ey | 19 | ||||
| -rw-r--r-- | compiler/elymasGlobal.ey | 12 |
2 files changed, 22 insertions, 9 deletions
diff --git a/compiler/elymasAsmLib.ey b/compiler/elymasAsmLib.ey index fdf97b8..ce5ffcf 100644 --- a/compiler/elymasAsmLib.ey +++ b/compiler/elymasAsmLib.ey @@ -938,8 +938,17 @@ @allocateFromSystem heapSize /rax :movqImmReg /rax /rdi :movqMemReg - ALLOCCHUNKSIZE /rsi :movqImmReg # size of new block + ALLOCCHUNKSIZE /rax :movqImmReg # minimum size of new block + /rdi /rcx :movqRegReg + 24 /rcx :shrqImm8Reg + /rcx :incqReg + /rdx /rdx :xorqRegReg + /rcx :mulqReg # allocate more if heap is already large + /rax /rsi :movqRegReg + /rsi :pushqReg + /rsi /rdi :addqRegReg + heapSize /rax :movqImmReg /rdi /rax :movqRegMem /rsi /rdi :subqRegReg /rax :movqImmOOBReg HEAPBASE @@ -950,7 +959,11 @@ heapSize /rax :movqImmReg /rax /rdi :movqMemReg 7 /rdi :shrqImm8Reg - ALLOCCHUNKSIZE 128 udiv /rsi :movqImmReg + + /rsi :popqReg + 7 /rsi :shrqImm8Reg + /rsi :pushqReg + /rsi /rdi :subqRegReg /rax :movqImmOOBReg BLOCKBASE /rax /rdi :addqRegReg @@ -959,7 +972,7 @@ heapSize /rax :movqImmReg /rax /rdi :movqMemReg 7 /rdi :shrqImm8Reg - ALLOCCHUNKSIZE 128 udiv /rsi :movqImmReg + /rsi :popqReg /rsi /rdi :subqRegReg /rax :movqImmOOBReg MARKBASE /rax /rdi :addqRegReg diff --git a/compiler/elymasGlobal.ey b/compiler/elymasGlobal.ey index e7cea98..90fbfda 100644 --- a/compiler/elymasGlobal.ey +++ b/compiler/elymasGlobal.ey @@ -1809,12 +1809,12 @@ %30 -101* /eydefvst defv %31 -101* /eydeffst defv %33 -101* /eydefmst defv - %50 -101* /eydefvc defv - %51 -101* /eydeffc defv - %53 -101* /eydefmc defv - %D0 -101* /eydefvd defv - %D1 -101* /eydeffd defv - %D3 -101* /eydefmd defv + %40 -101* /eydefvc defv + %41 -101* /eydeffc defv + %43 -101* /eydefmc defv + %C0 -101* /eydefvd defv + %C1 -101* /eydeffd defv + %C3 -101* /eydefmd defv -- # retype a function |
