summaryrefslogtreecommitdiff
path: root/test/parallel/test-finalization-group-regular-gc.js
blob: 7a4a4797eadcf02867ad30c20b37060fa7abb5fb (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
// Flags: --harmony-weak-refs
'use strict';
require('../common');
const assert = require('assert');

// Test that finalization callbacks do not crash when caused through a regular
// GC (not global.gc()).

const start = Date.now();
const g = new globalThis.FinalizationGroup(() => {
  const diff = Date.now() - start;
  assert(diff < 10000, `${diff} >= 10000`);
});
g.register({}, 42);

setImmediate(() => {
  const arr = [];
  // Build up enough memory usage to hopefully trigger a platform task but not
  // enough to trigger GC as an interrupt.
  while (arr.length < 1000000) arr.push([]);

  setTimeout(() => {
    g;  // Keep reference alive.
  }, 200000).unref();
});