diff options
| author | Drahflow <drahflow@gmx.de> | 2015-05-13 15:05:07 +0200 |
|---|---|---|
| committer | Drahflow <drahflow@gmx.de> | 2015-05-13 15:05:07 +0200 |
| commit | ec762220e5ec0785b8860af226fa517aac8494bc (patch) | |
| tree | d30db40fc45ccdd8bf4c3d00aa6b9abb894c737d /compiler | |
| parent | 505524b45f59263fb29057e829b9a39ef86e0e99 (diff) | |
Now with 57% less runtime
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 |
