diff options
Diffstat (limited to 'tests/programs/recycle.zc')
| -rw-r--r-- | tests/programs/recycle.zc | 25 |
1 files changed, 14 insertions, 11 deletions
diff --git a/tests/programs/recycle.zc b/tests/programs/recycle.zc index 98c9b50..55951a5 100644 --- a/tests/programs/recycle.zc +++ b/tests/programs/recycle.zc @@ -1,23 +1,26 @@ +namespace; +include rt; + // a uniquely owned free returns the block to its size class at once. // a plain free still quarantines; that contract lives in quarantine.zc. struct node { node* c; int n; }; unchecked fn addr(p) { return p; } fn main() { - let base = live_objects(), p, q, slot; + let base = rt.live_objects(), p, q, slot; node* a; node* b; - p = new(4); - a = new(node); - b = new(node); + p = rt.new(4); + a = rt.new(node); + b = rt.new(node); p[0] = 111; a.c = b; a.n = 1; b.c = 0; b.n = 2; slot = addr(p); - free(d*p); - q = new(4); - free(d*a); - put_n(q == slot); put_c(' '); - put_n(q[0]); put_c(' '); - put_n(live_objects() - base); put_c(10); - free(d*q); + rt.free(d*p); + q = rt.new(4); + rt.free(d*a); + rt.put_n(q == slot); rt.put_c(' '); + rt.put_n(q[0]); rt.put_c(' '); + rt.put_n(rt.live_objects() - base); rt.put_c(10); + rt.free(d*q); return 0; } |
