aboutsummaryrefslogtreecommitdiff
path: root/elymas
diff options
context:
space:
mode:
authorDrahflow <drahflow@gmx.de>2015-06-16 16:45:09 +0200
committerDrahflow <drahflow@gmx.de>2015-06-16 16:45:09 +0200
commit87b60ff694de44bbf7a91cd408d675cad681be76 (patch)
tree8a5ab041baba6fe02ef26721664605c6daaf5503 /elymas
parent7f5b57f1f6e6ba311c24f6b38c27cf2bff31d190 (diff)
Some performance improvements
Diffstat (limited to 'elymas')
-rw-r--r--elymas/lib/map.ey21
-rw-r--r--elymas/lib/sys/opt.ey13
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