diff options
| author | Drahflow <drahflow@gmx.de> | 2013-09-26 23:16:04 +0200 |
|---|---|---|
| committer | Drahflow <drahflow@gmx.de> | 2013-09-26 23:16:04 +0200 |
| commit | d83105f2103604e9530657c5996b155c8e8ddf90 (patch) | |
| tree | d9a8b08c49d89916ef492af92e39d1dc83045b72 | |
| parent | fdc87623e8e0394e5b9ffe6019489b60f5c98561 (diff) | |
23.2% faster
| -rw-r--r-- | compiler/elymasAsmLib.ey | 32 |
1 files changed, 15 insertions, 17 deletions
diff --git a/compiler/elymasAsmLib.ey b/compiler/elymasAsmLib.ey index 8d940bb..5bfd938 100644 --- a/compiler/elymasAsmLib.ey +++ b/compiler/elymasAsmLib.ey @@ -81,8 +81,8 @@ { %00 %00 %00 %00 %00 %60 %00 %00 } /HEAPBASE deff { %00 %00 %00 %00 %00 %50 %00 %00 } /BLOCKBASE deff { %00 %00 %00 %00 %00 %40 %00 %00 } /MARKBASE deff - 4096 16 mul 8 mul ==ALLOCCHUNKSIZE # minimum ALLOCCHUNKSIZE - # 4096 16 mul 8 mul 256 mul ==ALLOCCHUNKSIZE # FIXME: there is still some wonkyness with freezing + # 4096 16 mul 8 mul ==ALLOCCHUNKSIZE # minimum ALLOCCHUNKSIZE + 4096 16 mul 8 mul 16 mul ==ALLOCCHUNKSIZE # FIXME: there is still some wonkyness with freezing < # current end of heap memory (grows upwards) @@ -277,21 +277,11 @@ /rbx /r9 :btrqRegMem # reset mark bit # prepare block length and GC header (-> light grey) + 59 /rdi :btsqImm8Reg 4 /rbx :shlqImm8Reg /rax :movqImmOOBReg HEAPBASE /rbx /rax :addqRegReg /rdi /rax :movqRegMem - %08 7 /rax :movbImmMemDisp8 - - # zero rest of block # TODO eliminate this one day - /rax :pushqReg - /rdi /rcx :movqRegReg - 8 /rax /rdi :leaqMemDisp8Reg - 3 /rcx :shrqImm8Reg - /rcx :decqReg - /rax /rax :xorqRegReg - :reprcx :stosq - /rax :popqReg /r9 :popqReg /r8 :popqReg @@ -920,8 +910,17 @@ %26 7 /rax :orbImmMemDisp8 8 /rax :popqMemDisp8 # reference name table 16 /rax :popqMemDisp8 # set parent - /rdi /rdi :xorqRegReg # zero extension - /rdi 24 /rax :movqRegMemDisp8 + + # zero extension and remaining scope + + /rax /ecx :movlMemReg + 3 /rcx :shrqImm8Reg + 3 /rcx :subqImm8Reg + 24 /rax /rdi :leaqMemDisp8Reg + /rsi /rax :xchgqRegReg + /rax /rax :xorqRegReg + :reprcx :stosq + /rsi /rax :xchgqRegReg :retn ] /internalAllocateScope defv @@ -996,8 +995,7 @@ # set type %10 7 /rax :orbImmMemDisp8 - /rdx /rdx :xorqRegReg - /rdx 8 /rax :movqRegMemDisp8 + 0 8 /rax :andqImm8MemDisp8 16 /rax :popqMemDisp8 :retn |
