mirror of
https://github.com/fluencelabs/assemblyscript
synced 2025-06-24 04:01:46 +00:00
some cleanup
This commit is contained in:
@ -20,7 +20,9 @@ export namespace gc {
|
||||
else throw new Error(E_NOTIMPLEMENTED);
|
||||
}
|
||||
|
||||
/** Retains a reference, making sure that it doesn't become collected. */
|
||||
/** Retains a managed object externally, making sure that it doesn't become collected. */
|
||||
// @ts-ignore: decorator
|
||||
@unsafe
|
||||
export function retain(ref: usize): void {
|
||||
var root = GC_ROOT;
|
||||
if (!root.has(ref)) {
|
||||
@ -28,21 +30,20 @@ export namespace gc {
|
||||
if (implemented) {
|
||||
if (isDefined(__ref_link)) __ref_link(ref, changetype<usize>(root));
|
||||
else if (isDefined(__ref_retain)) __ref_retain(ref);
|
||||
else assert(false);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
/** Releases a reference, allowing it to become collected. */
|
||||
/** Releases a managed object externally, allowing it to become collected. */
|
||||
// @ts-ignore: decorator
|
||||
@unsafe
|
||||
export function release(ref: usize): void {
|
||||
var root = GC_ROOT;
|
||||
if (root.has(ref)) {
|
||||
root.delete(ref);
|
||||
if (implemented) {
|
||||
if (isDefined(__ref_link)) {
|
||||
if (isDefined(__ref_unlink)) __ref_unlink(ref, changetype<usize>(root));
|
||||
} else if (isDefined(__ref_retain)) __ref_release(ref);
|
||||
else assert(false);
|
||||
if (isDefined(__ref_unlink)) __ref_unlink(ref, changetype<usize>(root));
|
||||
else if (isDefined(__ref_release)) __ref_release(ref);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
Reference in New Issue
Block a user