var z;
var resurrect = true;
class foo {
public var a, b;
public proc create(x) {
a = @x; b = x;
"foo.create - returning ", self, '\n';
}
public proc destroy() {
"", self, ".destroy() {\n";
" self.readonly() = ", self.readonly(), '\n';
" oadl::deleted(self) = ", oadl::deleted(self), '\n';
" dynamic copy ", a, " vs static ref ", b, '\n';
"}\n";
if (resurrect) z = self;
}
}
proc main()
{
var a = new foo("foo");
a = nil;
oadl::gc();
// Set z.b to a dynamic copy of the string - it will get deleted
// next time around
z.b = @z.b;
"Examining resurrected zombie ", z, '\n';
"z.b = ", z.b, '\n';
"oadl::deleted(z) = ", oadl::deleted(z), '\n';
resurrect = false;
z = nil;
oadl::gc();
}