mirror of
https://github.com/zebrajr/node.git
synced 2026-01-15 12:15:26 +00:00
src: add more can_call_into_js() guards
This is in preparation for running native `SetImmediate()` callbacks during shutdown. PR-URL: https://github.com/nodejs/node/pull/30666 Fixes: https://github.com/nodejs/node/issues/30643 Refs: https://github.com/nodejs/node/pull/30374 Reviewed-By: Rich Trott <rtrott@gmail.com> Reviewed-By: James M Snell <jasnell@gmail.com>
This commit is contained in:
@@ -527,6 +527,9 @@ void Environment::RegisterHandleCleanups() {
|
||||
}
|
||||
|
||||
void Environment::CleanupHandles() {
|
||||
Isolate::DisallowJavascriptExecutionScope disallow_js(isolate(),
|
||||
Isolate::DisallowJavascriptExecutionScope::THROW_ON_FAILURE);
|
||||
|
||||
for (ReqWrapBase* request : req_wrap_queue_)
|
||||
request->Cancel();
|
||||
|
||||
@@ -661,7 +664,7 @@ void Environment::RunAndClearNativeImmediates() {
|
||||
|
||||
head->Call(this);
|
||||
if (UNLIKELY(try_catch.HasCaught())) {
|
||||
if (!try_catch.HasTerminated())
|
||||
if (!try_catch.HasTerminated() && can_call_into_js())
|
||||
errors::TriggerUncaughtException(isolate(), try_catch);
|
||||
|
||||
// We are done with the current callback. Move one iteration along,
|
||||
|
||||
@@ -278,6 +278,9 @@ static void ReportFatalException(Environment* env,
|
||||
Local<Value> error,
|
||||
Local<Message> message,
|
||||
EnhanceFatalException enhance_stack) {
|
||||
if (!env->can_call_into_js())
|
||||
enhance_stack = EnhanceFatalException::kDontEnhance;
|
||||
|
||||
Isolate* isolate = env->isolate();
|
||||
CHECK(!error.IsEmpty());
|
||||
CHECK(!message.IsEmpty());
|
||||
@@ -956,7 +959,7 @@ void TriggerUncaughtException(Isolate* isolate,
|
||||
}
|
||||
|
||||
MaybeLocal<Value> handled;
|
||||
{
|
||||
if (env->can_call_into_js()) {
|
||||
// We do not expect the global uncaught exception itself to throw any more
|
||||
// exceptions. If it does, exit the current Node.js instance.
|
||||
errors::TryCatchScope try_catch(env,
|
||||
|
||||
@@ -34,6 +34,8 @@ Maybe<bool> ProcessEmitWarningGeneric(Environment* env,
|
||||
const char* warning,
|
||||
const char* type,
|
||||
const char* code) {
|
||||
if (!env->can_call_into_js()) return Just(false);
|
||||
|
||||
HandleScope handle_scope(env->isolate());
|
||||
Context::Scope context_scope(env->context());
|
||||
|
||||
|
||||
Reference in New Issue
Block a user