From 513f921219d32fe5deea264f6604b54b24d81d8f Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Bartek=20Iwa=C5=84czuk?= Date: Fri, 2 Jul 2021 10:46:37 +0200 Subject: feat(core): pump V8 message loop on event loop tick (#11221) This commit adds support for Atomics and FinalizationRegistry by integrating V8's message loop into "JsRuntime::poll_event_loop". --- cli/tests/finalization_registry.js | 20 ++++++++++++++++++++ cli/tests/finalization_registry.js.out | 1 + cli/tests/integration/run_tests.rs | 6 ++++++ 3 files changed, 27 insertions(+) create mode 100644 cli/tests/finalization_registry.js create mode 100644 cli/tests/finalization_registry.js.out (limited to 'cli/tests') diff --git a/cli/tests/finalization_registry.js b/cli/tests/finalization_registry.js new file mode 100644 index 000000000..f75979358 --- /dev/null +++ b/cli/tests/finalization_registry.js @@ -0,0 +1,20 @@ +// Copyright 2018-2021 the Deno authors. All rights reserved. MIT license. +"use strict"; + +function assertEquals(a, b) { + if (a === b) return; + throw a + " does not equal " + b; +} + +const registry = new FinalizationRegistry((value) => { + assertEquals(value, "called!"); + Deno.core.print("FinalizationRegistry called!\n"); +}); + +(function () { + let x = {}; + registry.register(x, "called!"); + x = null; +})(); + +gc(); diff --git a/cli/tests/finalization_registry.js.out b/cli/tests/finalization_registry.js.out new file mode 100644 index 000000000..fee61413a --- /dev/null +++ b/cli/tests/finalization_registry.js.out @@ -0,0 +1 @@ +FinalizationRegistry called! diff --git a/cli/tests/integration/run_tests.rs b/cli/tests/integration/run_tests.rs index 964d2dd7c..025ee07e1 100644 --- a/cli/tests/integration/run_tests.rs +++ b/cli/tests/integration/run_tests.rs @@ -660,6 +660,12 @@ itest!(heapstats { output: "heapstats.js.out", }); +itest!(finalization_registry { + args: + "run --quiet --unstable --v8-flags=--expose-gc finalization_registry.js", + output: "finalization_registry.js.out", +}); + itest!(https_import { args: "run --quiet --reload --cert tls/RootCA.pem https_import.ts", output: "https_import.ts.out", -- cgit v1.2.3