aboutsummaryrefslogtreecommitdiff
path: root/tests/programs/roots.zc
blob: 22f12a59dca8a13ed15c62156e8a7cabdbc01675 (plain) (blame)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
// a pointer left below the live stack is not a root. scrub then clears that word.
unchecked fn main() {
	let p, slot, before, after;
	p = new(2);
	p[0] = 7;
	p[1] = 8;
	slot = DSLO + 8;
	*slot = p;
	before = live_objects();
	p = 0;
	gc();
	after = live_objects();
	put_n(after < before); put_c(32);
	scrub();
	put_n(*slot); put_c(10);
	return 0;
}