aboutsummaryrefslogtreecommitdiff
path: root/examples/selfpatch.zc
diff options
context:
space:
mode:
Diffstat (limited to 'examples/selfpatch.zc')
-rw-r--r--examples/selfpatch.zc11
1 files changed, 7 insertions, 4 deletions
diff --git a/examples/selfpatch.zc b/examples/selfpatch.zc
index e3f821d..56d7767 100644
--- a/examples/selfpatch.zc
+++ b/examples/selfpatch.zc
@@ -1,9 +1,12 @@
+namespace;
+include rt;
+
// code is data: find the literal 'A' inside f's compiled words and rewrite it.
// on the jit the store lands on translated code, which gets dropped and
// retranslated on the next call.
-fn f() { put_c('A'); return 0; }
+void f() { rt.put_c('A'); return; }
fn litw(v) { return v + v + 1; } // how the vm encodes a literal push
-fn main() {
+void main() {
let p = f;
f();
while (*p != litw('A')) p++;
@@ -11,6 +14,6 @@ fn main() {
f();
*p = litw('C');
f();
- put_c(10);
- return 0;
+ rt.put_c(10);
+ return;
}