test: fix napi test_reference for recent V8
PR-URL: https://github.com/nodejs/node/pull/12864 Ref: https://github.com/nodejs/node/pull/12551#issuecomment-297949361 Reviewed-By: James M Snell <jasnell@gmail.com> Reviewed-By: Michael Dawson <michael_dawson@ca.ibm.com>
This commit is contained in:
parent
42958d1a75
commit
0a734fec88
@ -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();
|
||||||
|
}));
|
||||||
|
}
|
||||||
|
Loading…
x
Reference in New Issue
Block a user