diff options
author | Joyee Cheung <joyeec9h3@gmail.com> | 2019-02-01 08:28:05 +0800 |
---|---|---|
committer | Joyee Cheung <joyeec9h3@gmail.com> | 2019-02-08 08:09:56 +0800 |
commit | b44131ab927008edff85a9efb196e1e192d28a29 (patch) | |
tree | 2a466221bbcf86f291903df54f5800b1e196f13d | |
parent | 09a5f0252ed8e367dd29ba77e2931e5cf2a39a9e (diff) | |
download | android-node-v8-b44131ab927008edff85a9efb196e1e192d28a29.tar.gz android-node-v8-b44131ab927008edff85a9efb196e1e192d28a29.tar.bz2 android-node-v8-b44131ab927008edff85a9efb196e1e192d28a29.zip |
lib: use `internal/options` to query `--abort-on-uncaught-exception`
Instead of using
`internalBinding('config').shouldAbortOnUncaughtException`.
Also removes that property from the binding.
PR-URL: https://github.com/nodejs/node/pull/25862
Reviewed-By: Richard Lau <riclau@uk.ibm.com>
Reviewed-By: Luigi Pinca <luigipinca@gmail.com>
Reviewed-By: Gus Caplan <me@gus.host>
Reviewed-By: Anna Henningsen <anna@addaleax.net>
Reviewed-By: Colin Ihrig <cjihrig@gmail.com>
-rw-r--r-- | lib/internal/async_hooks.js | 7 | ||||
-rw-r--r-- | lib/internal/policy/manifest.js | 4 | ||||
-rw-r--r-- | src/node_config.cc | 3 | ||||
-rw-r--r-- | src/node_options.cc | 9 |
4 files changed, 17 insertions, 6 deletions
diff --git a/lib/internal/async_hooks.js b/lib/internal/async_hooks.js index d382fe36e1..165d44b702 100644 --- a/lib/internal/async_hooks.js +++ b/lib/internal/async_hooks.js @@ -4,6 +4,11 @@ const { ERR_ASYNC_TYPE, ERR_INVALID_ASYNC_ID } = require('internal/errors').codes; + +const { getOptionValue } = require('internal/options'); +const shouldAbortOnUncaughtException = + getOptionValue('--abort-on-uncaught-exception'); + const async_wrap = internalBinding('async_wrap'); /* async_hook_fields is a Uint32Array wrapping the uint32_t array of * Environment::AsyncHooks::fields_[]. Each index tracks the number of active @@ -107,7 +112,7 @@ function fatalError(e) { Error.captureStackTrace(o, fatalError); process._rawDebug(o.stack); } - if (internalBinding('config').shouldAbortOnUncaughtException) { + if (shouldAbortOnUncaughtException) { process.abort(); } process.exit(1); diff --git a/lib/internal/policy/manifest.js b/lib/internal/policy/manifest.js index f6adca125b..6c777a7c78 100644 --- a/lib/internal/policy/manifest.js +++ b/lib/internal/policy/manifest.js @@ -25,7 +25,9 @@ const { entries } = Object; const kIntegrities = new SafeWeakMap(); const kReactions = new SafeWeakMap(); const kRelativeURLStringPattern = /^\.{0,2}\//; -const { shouldAbortOnUncaughtException } = internalBinding('config'); +const { getOptionValue } = require('internal/options'); +const shouldAbortOnUncaughtException = + getOptionValue('--abort-on-uncaught-exception'); const { abort, exit, _rawDebug } = process; function REACTION_THROW(error) { diff --git a/src/node_config.cc b/src/node_config.cc index 56672308d1..d9b2c8112e 100644 --- a/src/node_config.cc +++ b/src/node_config.cc @@ -69,9 +69,6 @@ static void Initialize(Local<Object> target, READONLY_FALSE_PROPERTY(target, "hasInspector"); #endif - if (env->abort_on_uncaught_exception()) - READONLY_TRUE_PROPERTY(target, "shouldAbortOnUncaughtException"); - READONLY_PROPERTY(target, "bits", Number::New(env->isolate(), 8 * sizeof(intptr_t))); diff --git a/src/node_options.cc b/src/node_options.cc index 86a986521c..20caac5c37 100644 --- a/src/node_options.cc +++ b/src/node_options.cc @@ -540,7 +540,14 @@ void GetOptions(const FunctionCallbackInfo<Value>& args) { switch (option_info.type) { case kNoOp: case kV8Option: - value = Undefined(isolate); + // Special case for --abort-on-uncaught-exception which is also + // respected by Node.js internals + if (item.first == "--abort-on-uncaught-exception") { + value = Boolean::New( + isolate, original_per_env->abort_on_uncaught_exception); + } else { + value = Undefined(isolate); + } break; case kBoolean: value = Boolean::New(isolate, *parser.Lookup<bool>(field, opts)); |