aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--compiler/elymasAsm.ey1
-rw-r--r--compiler/standardClient.ey12
-rw-r--r--elymas/Makefile2
-rw-r--r--elymas/interpreter.ey2
-rw-r--r--elymas/loaded.ey2
-rw-r--r--elymas/optimized.ey2
6 files changed, 11 insertions, 10 deletions
diff --git a/compiler/elymasAsm.ey b/compiler/elymasAsm.ey
index 3856d8a..1d4d906 100644
--- a/compiler/elymasAsm.ey
+++ b/compiler/elymasAsm.ey
@@ -774,6 +774,7 @@
/jnb _ %73 defJmpRel8 %83 defJmpRel32
/jnc _ %73 defJmpRel8 %83 defJmpRel32
/jne _ %75 defJmpRel8 %85 defJmpRel32
+ /jng _ %7E defJmpRel8 %8E defJmpRel32
/jnl _ %7D defJmpRel8 %8D defJmpRel32
/jnle _ %7F defJmpRel8 %8F defJmpRel32
/jns _ %79 defJmpRel8 %89 defJmpRel32
diff --git a/compiler/standardClient.ey b/compiler/standardClient.ey
index 30b7be2..bdc637c 100644
--- a/compiler/standardClient.ey
+++ b/compiler/standardClient.ey
@@ -806,7 +806,7 @@
{ 0 dumpIndented }
> -- /dump deffd
-{ ==filename # ==f (left on the stack and executed from sys .asm .programStart)
+{ ==filename # ==f (left on the stack a while and executed from sys .asm .programStart)
sys .asm .patchProgramStart ==frozenAllocationCount
# hex decoding
@@ -1004,10 +1004,12 @@
out .close
+ ==f
+
sys .asm .patchProgramStart frozenAllocationCount neq {
"freezing allocated new memory chunks, retrying..." dump
- filename sys .freeze
- }
+ f filename sys .freeze
+ } rep
} /freeze sys .deff
# no long-term stack use here as the executed program uses it as well
@@ -1024,9 +1026,7 @@
}" /includeFile deffd
{ # ==?filename
- sys .file -0010 .open
- includeFile
- .close
+ sys .file _ _ .|open -01 |includeFile -01 .|close ; ; -120 * # can use neither stack nor scope for storage here
}" /include deffd
# vim: syn=elymas
diff --git a/elymas/Makefile b/elymas/Makefile
index 08c7e69..6ee1265 100644
--- a/elymas/Makefile
+++ b/elymas/Makefile
@@ -1,5 +1,5 @@
loaded: optimized loaded.ey $(shell find lib -name '*.ey')
./optimized < loaded.ey || true
-optimized: interpreter optimized.ey $(shell find lib -name '*.ey')
+optimized: interpreter optimized.ey lib/math.ey lib/sys/opt.ey
./interpreter < optimized.ey || true
diff --git a/elymas/interpreter.ey b/elymas/interpreter.ey
index 35c0dad..bb25d00 100644
--- a/elymas/interpreter.ey
+++ b/elymas/interpreter.ey
@@ -1,3 +1,3 @@
#!/usr/bin/env elymas
-{ "/proc/self/fd/0" include }' "interpreter" sys .freeze
+{ "/proc/self/fd/0" include 0 sys .exit }' "interpreter" sys .freeze
diff --git a/elymas/loaded.ey b/elymas/loaded.ey
index c737634..f917b62 100644
--- a/elymas/loaded.ey
+++ b/elymas/loaded.ey
@@ -14,4 +14,4 @@
"lib/net/alg/http.ey"
] { _ dump include }' each
-{ "/proc/self/fd/0" include }' "loaded" sys .freeze
+{ "/proc/self/fd/0" include 0 sys .exit }' "loaded" sys .freeze
diff --git a/elymas/optimized.ey b/elymas/optimized.ey
index ca53b40..f64504e 100644
--- a/elymas/optimized.ey
+++ b/elymas/optimized.ey
@@ -5,4 +5,4 @@
"lib/sys/opt.ey"
] { _ dump include }' each
-2 { { "/proc/self/fd/0" include }' "optimized" sys .freeze } rep # FIXME freeze wonkyness (the optimizer allocates during freeze)
+2 { { "/proc/self/fd/0" include 0 sys .exit }' "optimized" sys .freeze } rep # FIXME freeze wonkyness (the optimizer allocates during freeze)