diff options
author | Joyee Cheung <joyeec9h3@gmail.com> | 2018-11-26 21:50:19 +0800 |
---|---|---|
committer | Rich Trott <rtrott@gmail.com> | 2018-11-28 11:05:28 -0800 |
commit | 804138093abb2c63cfaba5ee058e18df19b38f3e (patch) | |
tree | a78b36a3b246e57210751b78f12e0dbd0e9f1177 /lib | |
parent | 25ad8decc6c15e45659053605af4f7b53dd64e1b (diff) | |
download | android-node-v8-804138093abb2c63cfaba5ee058e18df19b38f3e.tar.gz android-node-v8-804138093abb2c63cfaba5ee058e18df19b38f3e.tar.bz2 android-node-v8-804138093abb2c63cfaba5ee058e18df19b38f3e.zip |
src: use NativeModuleLoader to compile per_context.js
This patch introduces a NativeModuleLoader::CompileAndCall that
can run a JS script under `lib/` as a function called
with a null receiver and arguments specified from the C++ layer.
Since all our bootstrappers are wrapped in functions in the
source to avoid leaking variables into the global scope anyway,
this allows us to remove that extra indentation in the JS source code.
As a start we move the compilation and execution of per_context.js
to NativeModuleLoader::CompileAndCall(). This patch also changes the
return value of NativeModuleLoader::LookupAndCompile() to a MaybeLocal
since the caller has to take care of the result being empty
anyway.
This patch reverts the previous design of having the
NativeModuleLoader::Compile() method magically know about the
parameters of the function - until we have tooling
in-place to guess the parameter names in the source with some
annotation, it's more readable to allow the caller to specify
the parameters along with the arguments values.
PR-URL: https://github.com/nodejs/node/pull/24660
Reviewed-By: Refael Ackermann <refack@gmail.com>
Reviewed-By: Gus Caplan <me@gus.host>
Diffstat (limited to 'lib')
-rw-r--r-- | lib/internal/per_context.js | 64 |
1 files changed, 32 insertions, 32 deletions
diff --git a/lib/internal/per_context.js b/lib/internal/per_context.js index ddf874c7ea..87fc8d247e 100644 --- a/lib/internal/per_context.js +++ b/lib/internal/per_context.js @@ -1,44 +1,44 @@ +// arguments: global + 'use strict'; // node::NewContext calls this script -(function(global) { - // https://github.com/nodejs/node/issues/14909 - if (global.Intl) delete global.Intl.v8BreakIterator; +// https://github.com/nodejs/node/issues/14909 +if (global.Intl) delete global.Intl.v8BreakIterator; - // https://github.com/nodejs/node/issues/21219 - // Adds Atomics.notify and warns on first usage of Atomics.wake - // https://github.com/v8/v8/commit/c79206b363 adds Atomics.notify so - // now we alias Atomics.wake to notify so that we can remove it - // semver major without worrying about V8. +// https://github.com/nodejs/node/issues/21219 +// Adds Atomics.notify and warns on first usage of Atomics.wake +// https://github.com/v8/v8/commit/c79206b363 adds Atomics.notify so +// now we alias Atomics.wake to notify so that we can remove it +// semver major without worrying about V8. - const AtomicsNotify = global.Atomics.notify; - const ReflectApply = global.Reflect.apply; +const AtomicsNotify = global.Atomics.notify; +const ReflectApply = global.Reflect.apply; - const warning = 'Atomics.wake will be removed in a future version, ' + - 'use Atomics.notify instead.'; +const warning = 'Atomics.wake will be removed in a future version, ' + + 'use Atomics.notify instead.'; - let wakeWarned = false; - function wake(typedArray, index, count) { - if (!wakeWarned) { - wakeWarned = true; +let wakeWarned = false; +function wake(typedArray, index, count) { + if (!wakeWarned) { + wakeWarned = true; - if (global.process !== undefined) { - global.process.emitWarning(warning, 'Atomics'); - } else { - global.console.error(`Atomics: ${warning}`); - } + if (global.process !== undefined) { + global.process.emitWarning(warning, 'Atomics'); + } else { + global.console.error(`Atomics: ${warning}`); } - - return ReflectApply(AtomicsNotify, this, arguments); } - global.Object.defineProperties(global.Atomics, { - wake: { - value: wake, - writable: true, - enumerable: false, - configurable: true, - }, - }); -}(this)); + return ReflectApply(AtomicsNotify, this, arguments); +} + +global.Object.defineProperties(global.Atomics, { + wake: { + value: wake, + writable: true, + enumerable: false, + configurable: true, + }, +}); |