weakref-creation-keeps-alive.js 659 Bytes
Newer Older
1 2 3 4
// Copyright 2018 the V8 project authors. All rights reserved.
// Use of this source code is governed by a BSD-style license that can be
// found in the LICENSE file.

5
// Flags: --harmony-weak-refs --expose-gc --noincremental-marking
6 7 8 9

let wr;
(function() {
  let o = {};
10
  wr = new WeakRef(o);
11 12 13 14 15 16 17 18 19 20 21
  // Don't deref here, we want to test that the creation is enough to keep the
  // WeakRef alive until the end of the turn.
})();

gc();

// Since the WeakRef was created during this turn, it is not cleared by GC.
(function() {
  assertNotEquals(undefined, wr.deref());
})();

22 23 24 25 26
// Next task.
setTimeout(() => {
  gc();
  assertEquals(undefined, wr.deref());
}, 0);