Commit e23f0aa6 authored by Camillo Bruni's avatar Camillo Bruni Committed by Commit Bot

[runtime] Cleaning up PromiseHook runtime functions

- remove redundant checks
- use switch over PromiseHookType

Change-Id: I89a5328009634a7025feb77e22334773c2886868
Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/2224225Reviewed-by: 's avatarSathya Gunasekaran  <gsathya@chromium.org>
Reviewed-by: 's avatarSimon Zünd <szuend@chromium.org>
Commit-Queue: Camillo Bruni <cbruni@chromium.org>
Cr-Commit-Position: refs/heads/master@{#68210}
parent f3dd0f48
...@@ -4142,18 +4142,20 @@ void Isolate::RunPromiseHook(PromiseHookType type, Handle<JSPromise> promise, ...@@ -4142,18 +4142,20 @@ void Isolate::RunPromiseHook(PromiseHookType type, Handle<JSPromise> promise,
void Isolate::RunPromiseHookForAsyncEventDelegate(PromiseHookType type, void Isolate::RunPromiseHookForAsyncEventDelegate(PromiseHookType type,
Handle<JSPromise> promise) { Handle<JSPromise> promise) {
if (!async_event_delegate_) return; if (!async_event_delegate_) return;
if (type == PromiseHookType::kResolve) return; switch (type) {
case PromiseHookType::kResolve:
if (type == PromiseHookType::kBefore) { return;
case PromiseHookType::kBefore:
if (!promise->async_task_id()) return; if (!promise->async_task_id()) return;
async_event_delegate_->AsyncEventOccurred(debug::kDebugWillHandle, async_event_delegate_->AsyncEventOccurred(
promise->async_task_id(), false); debug::kDebugWillHandle, promise->async_task_id(), false);
} else if (type == PromiseHookType::kAfter) { break;
case PromiseHookType::kAfter:
if (!promise->async_task_id()) return; if (!promise->async_task_id()) return;
async_event_delegate_->AsyncEventOccurred(debug::kDebugDidHandle, async_event_delegate_->AsyncEventOccurred(
promise->async_task_id(), false); debug::kDebugDidHandle, promise->async_task_id(), false);
} else { break;
DCHECK(type == PromiseHookType::kInit); case PromiseHookType::kInit:
debug::DebugAsyncActionType type = debug::kDebugPromiseThen; debug::DebugAsyncActionType type = debug::kDebugPromiseThen;
bool last_frame_was_promise_builtin = false; bool last_frame_was_promise_builtin = false;
JavaScriptFrameIterator it(this); JavaScriptFrameIterator it(this);
...@@ -4182,7 +4184,8 @@ void Isolate::RunPromiseHookForAsyncEventDelegate(PromiseHookType type, ...@@ -4182,7 +4184,8 @@ void Isolate::RunPromiseHookForAsyncEventDelegate(PromiseHookType type,
} else if (info->builtin_id() == Builtins::kPromisePrototypeCatch) { } else if (info->builtin_id() == Builtins::kPromisePrototypeCatch) {
type = debug::kDebugPromiseCatch; type = debug::kDebugPromiseCatch;
last_frame_was_promise_builtin = true; last_frame_was_promise_builtin = true;
} else if (info->builtin_id() == Builtins::kPromisePrototypeFinally) { } else if (info->builtin_id() ==
Builtins::kPromisePrototypeFinally) {
type = debug::kDebugPromiseFinally; type = debug::kDebugPromiseFinally;
last_frame_was_promise_builtin = true; last_frame_was_promise_builtin = true;
} }
......
...@@ -217,10 +217,8 @@ RUNTIME_FUNCTION(Runtime_PromiseHookBefore) { ...@@ -217,10 +217,8 @@ RUNTIME_FUNCTION(Runtime_PromiseHookBefore) {
return ReadOnlyRoots(isolate).undefined_value(); return ReadOnlyRoots(isolate).undefined_value();
Handle<JSPromise> promise = Handle<JSPromise>::cast(maybe_promise); Handle<JSPromise> promise = Handle<JSPromise>::cast(maybe_promise);
if (isolate->debug()->is_active()) isolate->PushPromise(promise); if (isolate->debug()->is_active()) isolate->PushPromise(promise);
if (promise->IsJSPromise()) {
isolate->RunPromiseHook(PromiseHookType::kBefore, promise, isolate->RunPromiseHook(PromiseHookType::kBefore, promise,
isolate->factory()->undefined_value()); isolate->factory()->undefined_value());
}
return ReadOnlyRoots(isolate).undefined_value(); return ReadOnlyRoots(isolate).undefined_value();
} }
...@@ -232,10 +230,8 @@ RUNTIME_FUNCTION(Runtime_PromiseHookAfter) { ...@@ -232,10 +230,8 @@ RUNTIME_FUNCTION(Runtime_PromiseHookAfter) {
return ReadOnlyRoots(isolate).undefined_value(); return ReadOnlyRoots(isolate).undefined_value();
Handle<JSPromise> promise = Handle<JSPromise>::cast(maybe_promise); Handle<JSPromise> promise = Handle<JSPromise>::cast(maybe_promise);
if (isolate->debug()->is_active()) isolate->PopPromise(); if (isolate->debug()->is_active()) isolate->PopPromise();
if (promise->IsJSPromise()) {
isolate->RunPromiseHook(PromiseHookType::kAfter, promise, isolate->RunPromiseHook(PromiseHookType::kAfter, promise,
isolate->factory()->undefined_value()); isolate->factory()->undefined_value());
}
return ReadOnlyRoots(isolate).undefined_value(); return ReadOnlyRoots(isolate).undefined_value();
} }
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment