Skip to content

Commit 911a4bb

Browse files
committed
design
1 parent dd5430a commit 911a4bb

File tree

1 file changed

+8
-4
lines changed

1 file changed

+8
-4
lines changed

std/assembly/internal/runtime.ts

Lines changed: 8 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -14,7 +14,7 @@ export class HEADER {
1414
}
1515

1616
/** Whether a GC is present or not. */
17-
@inline export const GC = true;
17+
@inline export const GC = isDefined(__REGISTER_IMPL);
1818

1919
/** Size of the common runtime header. */
2020
@inline export const HEADER_SIZE: usize = GC
@@ -96,11 +96,15 @@ export function FREE(ref: usize): void {
9696
memory.free(changetype<usize>(header));
9797
}
9898

99-
/** Registers a managed object with GC. */
99+
function CLASSID<T>(): u32 {
100+
return 1;
101+
}
102+
103+
/** Registers a managed object with GC. Cannot be changed anymore afterwards. */
100104
export function REGISTER<T>(ref: usize, parentRef: usize): void {
101105
var header = UNREF(ref);
102-
header.classId = /* TODO: CLASSID<T>() */ 1;
103-
// TODO
106+
header.classId = CLASSID<T>();
107+
if (GC) __REGISTER_IMPL(ref, parentRef);
104108
}
105109

106110
/** ArrayBuffer base class. */

0 commit comments

Comments
 (0)