diff options
Diffstat (limited to 'examples/selfpatch.zc')
| -rw-r--r-- | examples/selfpatch.zc | 11 |
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; } |
