mirror of
https://github.com/fluencelabs/assemblyscript
synced 2025-04-26 15:32:16 +00:00
24 lines
646 B
TypeScript
24 lines
646 B
TypeScript
import "allocator/arena";
|
|
import { gc } from "collector/itcm";
|
|
|
|
// a class to test with
|
|
class MyObject {
|
|
a: u32;
|
|
}
|
|
function MyObject_visit(ref: usize): void { }
|
|
|
|
// allocate a managed instance
|
|
var obj = changetype<MyObject>(gc.alloc(offsetof<MyObject>(), MyObject_visit));
|
|
obj.a = 123;
|
|
var head = changetype<usize>(obj) - 16;
|
|
|
|
// header
|
|
assert(load<u32>(head, 0) == 0); // nextWithFlags
|
|
assert(load<u32>(head, 4) == 0); // prev
|
|
assert(load<u32>(head, 8) == changetype<u32>(MyObject_visit)); // visitFn
|
|
assert(load<u32>(head, 12) == 0); // unused
|
|
// contents
|
|
assert(load<u32>(head, 16) == 123); // Obj#a
|
|
|
|
// gc.collect(); // FIXME: endless loop
|