aboutsummaryrefslogtreecommitdiff
path: root/compiler/standardClient.ey
diff options
context:
space:
mode:
authorDrahflow <drahflow@gmx.de>2013-09-24 10:40:37 +0200
committerDrahflow <drahflow@gmx.de>2013-09-24 10:40:37 +0200
commitc2182784d2237b15dddebec66473a5726faa07a4 (patch)
tree02943cc1fb8d8886d2a0abb00e1d3769e92beb25 /compiler/standardClient.ey
parentbd4fe14e2a77ceac5c8c234de05c514fdd6d7bf4 (diff)
Saner patching of static loads
Diffstat (limited to 'compiler/standardClient.ey')
-rw-r--r--compiler/standardClient.ey14
1 files changed, 9 insertions, 5 deletions
diff --git a/compiler/standardClient.ey b/compiler/standardClient.ey
index 643a805..e00279f 100644
--- a/compiler/standardClient.ey
+++ b/compiler/standardClient.ey
@@ -220,17 +220,20 @@
}" /cloneThread deffd
{ #==thread ==newpc
+ 0 -1201 =[]
+ }" /updateThread deffd
+
+ { #==thread ==newpc
[ -0201 threadGetCaptures _ len dearray ] ]
}" /fullCloneThread deffd
|add /origadd deffd
+ str .|bitTest /bitTest deffd
+ str .|bitSet /bitSet deffd
+ str .|zero /zero deffd
# TODO think about implementation efficiency
{ ==maxSize
- str .|bitTest /bitTest deffd
- str .|bitSet /bitSet deffd
- str .|zero /zero deffd
-
<
0 ==size
[ maxSize { 0 }" rep ] =*get
@@ -281,7 +284,7 @@
clist .clear
}" { # TERM
position maxPosition lt {
- position string * 1 code * { pc 1 add thread cloneThread nlist .add }" rep
+ position string * 1 code * { pc 1 add thread updateThread nlist .add }" rep
}" rep
}" { # JUMP
pc 1 code add thread cloneThread iPush
@@ -302,6 +305,7 @@
0 ==i
{ position maxPosition le }" {
0 =i
+
{ i clist .size lt }" {
i clist .get _ =thread
threadGetPC _ =pc