diff options
| author | Drahflow <drahflow@gmx.de> | 2015-06-16 16:45:09 +0200 |
|---|---|---|
| committer | Drahflow <drahflow@gmx.de> | 2015-06-16 16:45:09 +0200 |
| commit | 87b60ff694de44bbf7a91cd408d675cad681be76 (patch) | |
| tree | 8a5ab041baba6fe02ef26721664605c6daaf5503 /elymas | |
| parent | 7f5b57f1f6e6ba311c24f6b38c27cf2bff31d190 (diff) | |
Some performance improvements
Diffstat (limited to 'elymas')
| -rw-r--r-- | elymas/lib/map.ey | 21 | ||||
| -rw-r--r-- | elymas/lib/sys/opt.ey | 13 |
2 files changed, 22 insertions, 12 deletions
diff --git a/elymas/lib/map.ey b/elymas/lib/map.ey index d58a9a3..536ad8a 100644 --- a/elymas/lib/map.ey +++ b/elymas/lib/map.ey @@ -1,15 +1,16 @@ < - { { .v -01 . }_ [ 0 ] [ 0 ] '' * } "#*" defmd - { [ 0 ] } "#in" deffd - { [ 0 ] } "#out" deffd - { .v keys } "#dom" defmd - { .v ==v =*f v keys { v -01 . f } each } "#each" defmd + 0 ==m # placeholder, zero value is never read + { { =m m .v -01 . }_ [ 0 ] [ 0 ] '' * }' "#*" defmd + { [ 0 ] }" "#in" deffd + { [ 0 ] }" "#out" deffd + { =m m .v keys }' "#dom" defmd + { =m m .v ==v =*f v keys { v -01 . f }' each }' "#each" defmd { 0 } "#istart" deffd - { .v keys len eq } "#iend" defmd - { 1 add } "#istep" deffd - { .v keys * } "#itrans" defmd - { .v -01 .?' } /has defmd - { .v ==v "#iclone" | * ==n v keys { _ v -01 . -01 n =[] } each n } /clone defmd + { =m m .v keys len eq }' "#iend" defmd + { 1 add }" "#istep" deffd + { =m m .v keys * }' "#itrans" defmd + { =m m .v -01 .?' }' /has defmd + { =m m .v ==v "#iclone" | * ==n v keys { _ v -01 . -01 n =[] } each n }' /clone defmd { < < { defv }' > ==v "#=[]" =* > } _ "#iclone" deffd > -- /map deffd diff --git a/elymas/lib/sys/opt.ey b/elymas/lib/sys/opt.ey index 6a8f0c1..2ad40b8 100644 --- a/elymas/lib/sys/opt.ey +++ b/elymas/lib/sys/opt.ey @@ -495,10 +495,14 @@ { action CALL eq { 1 entry * "." | ::rawCodeAddress eq }' andif { 0 last * PUSH eq }' andif - { 0 secondLast * STATICTYPED eq }' andif + { 0 secondLast * STATICTYPED eq 0 secondLast * PUSH eq or }' andif }' { 1 last * ::rawObject ==constant - 4 secondLast * ==relevantScope + 0 secondLast * STATICTYPED eq { + 4 secondLast * + } { + 1 secondLast * ::rawObject + } ? * ==relevantScope constant relevantScope sys .resolveInfo _ ==loadedObject { ==mode -- ==parentCount 32 add ==offsetInScope ==inExtensionArea @@ -1789,6 +1793,11 @@ } ? * } ? * } + { action CALL eq { 1 entry * "[" | ::rawCodeAddress eq }' andif }' { + [ NATIVENOSCOPE [ + ARRAYMARKER :pushqImm32 + ] ] =entry + } ] conds last |
