@@ -33,19 +33,6 @@ assert.strictEqual(test_reference.finalizeCount, 0);
33
33
assert . strictEqual ( test_reference . finalizeCount , 1 ) ;
34
34
}
35
35
36
- {
37
- // Weak reference
38
- let value = test_reference . createExternalWithFinalize ( ) ;
39
- assert . strictEqual ( test_reference . finalizeCount , 0 ) ;
40
- test_reference . createReference ( value , 0 ) ;
41
- assert . strictEqual ( test_reference . referenceValue , value ) ;
42
- value = null ;
43
- global . gc ( ) ; // Value should be GC'd because there is only a weak ref
44
- assert . strictEqual ( test_reference . referenceValue , undefined ) ;
45
- assert . strictEqual ( test_reference . finalizeCount , 1 ) ;
46
- test_reference . deleteReference ( ) ;
47
- }
48
-
49
36
{
50
37
// Strong reference
51
38
let value = test_reference . createExternalWithFinalize ( ) ;
@@ -85,3 +72,19 @@ assert.strictEqual(test_reference.finalizeCount, 0);
85
72
global . gc ( ) ; // Value was already GC'd
86
73
assert . strictEqual ( test_reference . finalizeCount , 1 ) ;
87
74
}
75
+
76
+ {
77
+ // Weak reference
78
+ let value = test_reference . createExternalWithFinalize ( ) ;
79
+ assert . strictEqual ( test_reference . finalizeCount , 0 ) ;
80
+ test_reference . createReference ( value , 0 ) ;
81
+ assert . strictEqual ( test_reference . referenceValue , value ) ;
82
+ value = null ;
83
+ setImmediate ( common . mustCall ( ( ) => {
84
+ // This test only works if gc() is called from an immediate callback.
85
+ global . gc ( ) ; // Value should be GC'd because there is only a weak ref
86
+ assert . strictEqual ( test_reference . referenceValue , undefined ) ;
87
+ assert . strictEqual ( test_reference . finalizeCount , 1 ) ;
88
+ test_reference . deleteReference ( ) ;
89
+ } ) ) ;
90
+ }
0 commit comments