This commit is contained in:
dcode
2019-03-21 17:34:51 +01:00
parent d4d5814fc2
commit d9463c5484
11 changed files with 4254 additions and 3544 deletions

View File

@ -0,0 +1,35 @@
// A dummy GC for looking at generated GC code without actually implementing it.
// @ts-ignore: decorator
@inline
const TRACE = false;
// @ts-ignore: decorator
@global @unsafe
function __gc_register(ref: usize): void {
if (TRACE) trace("gc.register", 1, ref);
}
// @ts-ignore: decorator
@global @unsafe
function __gc_retain(ref: usize, parentRef: usize): void {
if (TRACE) trace("gc.retain", 2, ref, parentRef);
}
// @ts-ignore: decorator
@global @unsafe
function __gc_release(ref: usize, parentRef: usize): void {
if (TRACE) trace("gc.release", 2, ref, parentRef);
}
// @ts-ignore: decorator
@global @unsafe
function __gc_move(ref: usize, oldParentRef: usize, newParentRef: usize): void {
if (TRACE) trace("gc.move", 3, ref, oldParentRef, newParentRef);
}
// @ts-ignore: decorator
@global @unsafe
function __gc_collect(): void {
if (TRACE) trace("gc.collect");
}

View File

@ -214,7 +214,7 @@ function objToRef(obj: ManagedObject): usize {
// @ts-ignore: decorator
@global @unsafe
export function __gc_register(ref: usize): void {
if (TRACE) trace("gc.register", 2, ref);
if (TRACE) trace("gc.register", 1, ref);
step(); // also makes sure it's initialized
var obj = refToObj(ref);
obj.color = white;