|
@ -33,19 +33,6 @@ assert.strictEqual(test_reference.finalizeCount, 0); |
|
|
assert.strictEqual(test_reference.finalizeCount, 1); |
|
|
assert.strictEqual(test_reference.finalizeCount, 1); |
|
|
} |
|
|
} |
|
|
|
|
|
|
|
|
{ |
|
|
|
|
|
// Weak reference
|
|
|
|
|
|
let value = test_reference.createExternalWithFinalize(); |
|
|
|
|
|
assert.strictEqual(test_reference.finalizeCount, 0); |
|
|
|
|
|
test_reference.createReference(value, 0); |
|
|
|
|
|
assert.strictEqual(test_reference.referenceValue, value); |
|
|
|
|
|
value = null; |
|
|
|
|
|
global.gc(); // Value should be GC'd because there is only a weak ref
|
|
|
|
|
|
assert.strictEqual(test_reference.referenceValue, undefined); |
|
|
|
|
|
assert.strictEqual(test_reference.finalizeCount, 1); |
|
|
|
|
|
test_reference.deleteReference(); |
|
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
{ |
|
|
{ |
|
|
// Strong reference
|
|
|
// Strong reference
|
|
|
let value = test_reference.createExternalWithFinalize(); |
|
|
let value = test_reference.createExternalWithFinalize(); |
|
@ -85,3 +72,19 @@ assert.strictEqual(test_reference.finalizeCount, 0); |
|
|
global.gc(); // Value was already GC'd
|
|
|
global.gc(); // Value was already GC'd
|
|
|
assert.strictEqual(test_reference.finalizeCount, 1); |
|
|
assert.strictEqual(test_reference.finalizeCount, 1); |
|
|
} |
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
{ |
|
|
|
|
|
// Weak reference
|
|
|
|
|
|
let value = test_reference.createExternalWithFinalize(); |
|
|
|
|
|
assert.strictEqual(test_reference.finalizeCount, 0); |
|
|
|
|
|
test_reference.createReference(value, 0); |
|
|
|
|
|
assert.strictEqual(test_reference.referenceValue, value); |
|
|
|
|
|
value = null; |
|
|
|
|
|
setImmediate(common.mustCall(() => { |
|
|
|
|
|
// This test only works if gc() is called from an immediate callback.
|
|
|
|
|
|
global.gc(); // Value should be GC'd because there is only a weak ref
|
|
|
|
|
|
assert.strictEqual(test_reference.referenceValue, undefined); |
|
|
|
|
|
assert.strictEqual(test_reference.finalizeCount, 1); |
|
|
|
|
|
test_reference.deleteReference(); |
|
|
|
|
|
})); |
|
|
|
|
|
} |
|
|