Welcome to mirror list, hosted at ThFree Co, Russian Federation.

github.com/nodejs/node.git - Unnamed repository; edit this file 'description' to name the repository.
summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
Diffstat (limited to 'deps/v8/test/mjsunit/harmony/weakrefs/unregister-inside-cleanup3.js')
-rw-r--r--deps/v8/test/mjsunit/harmony/weakrefs/unregister-inside-cleanup3.js26
1 files changed, 15 insertions, 11 deletions
diff --git a/deps/v8/test/mjsunit/harmony/weakrefs/unregister-inside-cleanup3.js b/deps/v8/test/mjsunit/harmony/weakrefs/unregister-inside-cleanup3.js
index 8f28673205b..e11fd3b8e93 100644
--- a/deps/v8/test/mjsunit/harmony/weakrefs/unregister-inside-cleanup3.js
+++ b/deps/v8/test/mjsunit/harmony/weakrefs/unregister-inside-cleanup3.js
@@ -6,35 +6,39 @@
let cleanup_call_count = 0;
let cleanup_holdings_count = 0;
-let cleanup = function(iter) {
- for (holdings of iter) {
- assertEquals(holdings, "holdings");
- ++cleanup_holdings_count;
- }
- // Unregister an already iterated over weak reference.
+let cleanup = function(holdings) {
+ assertEquals(holdings, "holdings");
+
+ // There's one more object with the same key that we haven't
+ // cleaned up yet so we should be able to unregister the
+ // callback for that one.
let success = fg.unregister(key);
- assertFalse(success);
+
+ assertTrue(success);
+
+ ++cleanup_holdings_count;
++cleanup_call_count;
}
let fg = new FinalizationRegistry(cleanup);
-let key = {"k": "this is the key"};
-
// Create an object and register it in the FinalizationRegistry. The object needs to be inside
// a closure so that we can reliably kill them!
+let key = {"k": "this is the key"};
(function() {
let object = {};
+ let object2 = {};
fg.register(object, "holdings", key);
+ fg.register(object2, "holdings", key);
// object goes out of scope.
})();
-// This GC will reclaim the target object and schedule cleanup.
+// This GC will discover dirty WeakCells and schedule cleanup.
gc();
assertEquals(0, cleanup_call_count);
-// Assert that the cleanup function was called and iterated the holdings.
+// Assert that the cleanup function was called.
let timeout_func = function() {
assertEquals(1, cleanup_call_count);
assertEquals(1, cleanup_holdings_count);