diff options
author | Anna Henningsen <anna@addaleax.net> | 2019-11-24 00:34:36 +0100 |
---|---|---|
committer | Anna Henningsen <anna@addaleax.net> | 2019-11-29 02:17:12 +0100 |
commit | fad952adbd8a2508d62c6df7ab20376d3898e228 (patch) | |
tree | a27475731ef2b778de617609574c1d11acec55fa /test/parallel/test-finalization-group-regular-gc.js | |
parent | ff48009fefcecedfee2c6ff1719e5be3f6969049 (diff) | |
download | android-node-v8-fad952adbd8a2508d62c6df7ab20376d3898e228.tar.gz android-node-v8-fad952adbd8a2508d62c6df7ab20376d3898e228.tar.bz2 android-node-v8-fad952adbd8a2508d62c6df7ab20376d3898e228.zip |
src: use uv_async_t for WeakRefs
Schedule a task on the main event loop, similar to what the HTML
spec recommends for browsers.
Alternative to https://github.com/nodejs/node/pull/30198
PR-URL: https://github.com/nodejs/node/pull/30616
Reviewed-By: Gus Caplan <me@gus.host>
Reviewed-By: Ben Noordhuis <info@bnoordhuis.nl>
Diffstat (limited to 'test/parallel/test-finalization-group-regular-gc.js')
-rw-r--r-- | test/parallel/test-finalization-group-regular-gc.js | 25 |
1 files changed, 25 insertions, 0 deletions
diff --git a/test/parallel/test-finalization-group-regular-gc.js b/test/parallel/test-finalization-group-regular-gc.js new file mode 100644 index 0000000000..7a4a4797ea --- /dev/null +++ b/test/parallel/test-finalization-group-regular-gc.js @@ -0,0 +1,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(); +}); |