From ecc350ca5c2eb50be8309c5f14f8bf0d87db9a02 Mon Sep 17 00:00:00 2001 From: Moon Flower Date: Mon, 12 Oct 2026 08:46:23 +0330 Subject: a --- docs/history/15-o3/code/examples/selfpatch.zc | 17 +++++++++++++++++ 1 file changed, 17 insertions(+) create mode 100644 docs/history/15-o3/code/examples/selfpatch.zc (limited to 'docs/history/15-o3/code/examples/selfpatch.zc') diff --git a/docs/history/15-o3/code/examples/selfpatch.zc b/docs/history/15-o3/code/examples/selfpatch.zc new file mode 100644 index 0000000..074ccec --- /dev/null +++ b/docs/history/15-o3/code/examples/selfpatch.zc @@ -0,0 +1,17 @@ +// 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() { putc('A'); return 0; } +fn litw(v) { return v + v + 1; } // how the vm encodes a literal push +fn main() +{ + let p = f; + f(); + while (*p != litw('A')) p++; + *p = litw('B'); + f(); + *p = litw('C'); + f(); + putc(10); + return 0; +} -- cgit v1.2.3