diff options
| author | Drahflow <drahflow@gmx.de> | 2013-12-31 00:54:59 +0100 |
|---|---|---|
| committer | Drahflow <drahflow@gmx.de> | 2013-12-31 00:54:59 +0100 |
| commit | 643d6dca1e6026ebf8cfa551ae3e95cc69003c47 (patch) | |
| tree | df79289945ee98efee9be9ca201eb1a6fda8c840 /compiler/elymasGlobal.ey | |
| parent | 9699795a62506f69cb83fa35cb58e7641690eb5f (diff) | |
Less memory usage still
Also, sys .opt now needs less luck to execute correctly.
Diffstat (limited to 'compiler/elymasGlobal.ey')
| -rw-r--r-- | compiler/elymasGlobal.ey | 32 |
1 files changed, 32 insertions, 0 deletions
diff --git a/compiler/elymasGlobal.ey b/compiler/elymasGlobal.ey index ba1cbca..4bc5075 100644 --- a/compiler/elymasGlobal.ey +++ b/compiler/elymasGlobal.ey @@ -2146,6 +2146,38 @@ :retn ]] /ey.? defv + # test whether a scope member exists without following parent pointers + # 0 -> member name + # 1 -> scope + # 0 <- 1 if scope member exists directly in scope, 0 otherwise + [[ + 8 /r15 :subqImm8Reg + /r15 :popqMem + + /rsi :popqReg # fetch identifier + /rdi :popqReg # fetch scope + ::internalResolve /rax :movqImmReg + /rax :callqReg + + /rax /rax :testqRegReg + /unresolvedZero :jzLbl8 + /rdi /rdi :testqRegReg + /unresolved :jnzLbl8 + 1 /rax :movqImmReg + /resolved :jmpLbl8 + + @unresolved + /rax /rax :xorqRegReg + @unresolvedZero + @resolved + 63 /rax :btsqImm8Reg + /rax :pushqReg + + /r15 :pushqMem + 8 /r15 :addqImm8Reg + :retn + ]] /ey.?' defv + # enumerate scope keys # 0 -> scope # 0 <- array of keys |
