blob: 56d7767e8516202cb7ceaf326b94ffe32a669ec4 (
plain) (
blame)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
|
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.
void f() { rt.put_c('A'); return; }
fn litw(v) { return v + v + 1; } // how the vm encodes a literal push
void main() {
let p = f;
f();
while (*p != litw('A')) p++;
*p = litw('B');
f();
*p = litw('C');
f();
rt.put_c(10);
return;
}
|