diff options
| author | Drahflow <drahflow@gmx.de> | 2014-01-08 14:51:54 +0100 |
|---|---|---|
| committer | Drahflow <drahflow@gmx.de> | 2014-01-08 14:51:54 +0100 |
| commit | 481d950d8a5d53dc465fab61fbd3ae5a3d393fc1 (patch) | |
| tree | 70a6bb6daad07d1725e48d3ce90b609fbf6eba75 /compiler | |
| parent | 90d664bc9e77530113c9a65bd02bae4667a2c25c (diff) | |
Freeing heap type markers 2-3 for scalars (floats)
Diffstat (limited to 'compiler')
| -rw-r--r-- | compiler/elymasAsmLib.ey | 94 | ||||
| -rw-r--r-- | compiler/elymasGlobal.ey | 4 | ||||
| -rw-r--r-- | compiler/standardClient.ey | 16 |
3 files changed, 57 insertions, 57 deletions
diff --git a/compiler/elymasAsmLib.ey b/compiler/elymasAsmLib.ey index 91e3689..14e297c 100644 --- a/compiler/elymasAsmLib.ey +++ b/compiler/elymasAsmLib.ey @@ -471,11 +471,7 @@ /markInteger :jzLbl32 /rax :decqReg /markString :jzLbl32 - /rax :decqReg - /markScope :jzLbl32 - /rax :decqReg - /markNameTable :jzLbl32 - /rax :decqReg + 3 /rax :subqImm8Reg /markExtensionArea :jzLbl32 /rax :decqReg /markFunction :jzLbl32 @@ -485,6 +481,10 @@ /markArray :jzLbl32 /rax :decqReg /markFunctionType :jzLbl32 + /rax :decqReg + /markScope :jzLbl32 + /rax :decqReg + /markNameTable :jzLbl32 @markInvalidType /rax /rbx :movqRegReg # for easier inspection @@ -501,46 +501,6 @@ # " string marked\n" outputError :retn - @markScope - # /rdi :pushqReg - # "scope marked\n" outputError - # /rdi :popqReg - - /rcx :pushqReg - /rsi :pushqReg - /rdi /ecx :movlMemReg - /rdi /rsi :movqRegReg - 8 /rcx :subqImm8Reg - @markScopeLoop - /rsi /rcx /rdi :movqMemIndexReg - /markObject :callqLbl32 - 8 /rcx :subqImm8Reg - /markScopeLoop :jnzLbl8 - /rsi :popqReg - /rcx :popqReg - :retn - - @markNameTable - # /rdi :pushqReg - # "name table marked\n" outputError - # /rdi :popqReg - - /rcx :pushqReg - /rsi :pushqReg - 8 /rdi /ecx :movlMemDisp8Reg - /rdi /rsi :movqRegReg - 16 /rcx :subqImm8Reg - /markNameTableEmpty :jzLbl8 - @markNameTableLoop - /rsi /rcx /rdi :movqMemIndexReg - /markObject :callqLbl32 - 16 /rcx :subqImm8Reg - /markNameTableLoop :jnzLbl8 - @markNameTableEmpty - /rsi :popqReg - /rcx :popqReg - :retn - @markExtensionArea # /rdi :pushqReg # "extension area marked\n" outputError @@ -663,6 +623,46 @@ /rcx :popqReg :retn + @markScope + # /rdi :pushqReg + # "scope marked\n" outputError + # /rdi :popqReg + + /rcx :pushqReg + /rsi :pushqReg + /rdi /ecx :movlMemReg + /rdi /rsi :movqRegReg + 8 /rcx :subqImm8Reg + @markScopeLoop + /rsi /rcx /rdi :movqMemIndexReg + /markObject :callqLbl32 + 8 /rcx :subqImm8Reg + /markScopeLoop :jnzLbl8 + /rsi :popqReg + /rcx :popqReg + :retn + + @markNameTable + # /rdi :pushqReg + # "name table marked\n" outputError + # /rdi :popqReg + + /rcx :pushqReg + /rsi :pushqReg + 8 /rdi /ecx :movlMemDisp8Reg + /rdi /rsi :movqRegReg + 16 /rcx :subqImm8Reg + /markNameTableEmpty :jzLbl8 + @markNameTableLoop + /rsi /rcx /rdi :movqMemIndexReg + /markObject :callqLbl32 + 16 /rcx :subqImm8Reg + /markNameTableLoop :jnzLbl8 + @markNameTableEmpty + /rsi :popqReg + /rcx :popqReg + :retn + # allocate next chunk of memory from the operating system @allocateFromSystem @@ -776,7 +776,7 @@ # CHECK this is just sanity checking 7 /rdi /al :movbMemDisp8Reg %F0 /al :andbImmReg - %20 /al :cmpbImmReg + %90 /al :cmpbImmReg /isScope :jeLbl8 "object resolving in is not a scope" outputError @@ -956,7 +956,7 @@ /rax :callqReg # set type and existence of all pointers - %26 7 /rax :orbImmMemDisp8 + %96 7 /rax :orbImmMemDisp8 16 /rax :popqMemDisp8 # set parent :retn diff --git a/compiler/elymasGlobal.ey b/compiler/elymasGlobal.ey index 01db3b8..b3f3ab6 100644 --- a/compiler/elymasGlobal.ey +++ b/compiler/elymasGlobal.ey @@ -208,7 +208,7 @@ ::internalAllocateAndZero /rax :movqImmReg /rax :callqReg - %30 7 /rax :orbImmMemDisp8 # set type + %A0 7 /rax :orbImmMemDisp8 # set type /rdx :popqReg 8 /rdx /rcx :movqMemDisp8Reg /rcx 8 /rax :movqRegMemDisp8 # copy fill @@ -226,7 +226,7 @@ INITIALNAMETABLESIZE 16 mul 16 add /rdi :movqImmReg ::internalAllocateAndZero /rax :movqImmReg /rax :callqReg - %30 7 /rax :orbImmMemDisp8 # set type + %A0 7 /rax :orbImmMemDisp8 # set type 16 8 /rax :orbImmMemDisp8 # set initial fill 16 /rax /rdi :leaqMemDisp8Reg # load first entry address diff --git a/compiler/standardClient.ey b/compiler/standardClient.ey index 1fb102f..801a003 100644 --- a/compiler/standardClient.ey +++ b/compiler/standardClient.ey @@ -505,8 +505,8 @@ object sys .typed .type [ literal # integer literal # string - literal # scope - invalid # name table + unknown + unknown invalid # extension area { object sys .typed .inputs ==in in len 1 neq { "multi-input function in typeStack" die } rep @@ -518,8 +518,8 @@ invalid # function code { [ 1 0 object len 1 sub ] 0 object * typeStackInternal } # array invalid # function type - unknown - unknown + literal # scope + invalid # name table unknown unknown unknown @@ -792,8 +792,8 @@ sys .typed .type [ { o base16encode64 sys .err .writeall } # integer { "\"" o "\"" cat cat sys .err .writeall } # string - { "<scope: " o sys .asm .rawAddress base16encode64 cat ">" cat sys .err .writeall } - invalid # name table + unknown + unknown invalid # extension area { "<function: " o sys .asm .rawAddress base16encode64 cat ">" cat sys .err .writeall } { "<function code: " o sys .asm .rawAddress base16encode64 cat ">" cat sys .err .writeall } @@ -803,8 +803,8 @@ "" indent { " " cat } rep "]" cat sys .err .writeall } # array invalid # function type - unknown - unknown + { "<scope: " o sys .asm .rawAddress base16encode64 cat ">" cat sys .err .writeall } + invalid # name table unknown unknown unknown |
