Index: src/debug/debug.cc |
diff --git a/src/debug/debug.cc b/src/debug/debug.cc |
index bed6b12e864cabf740bf9447d45c0a309765cc83..944842adc1b1303e9603333be29d9dec0852276c 100644 |
--- a/src/debug/debug.cc |
+++ b/src/debug/debug.cc |
@@ -403,6 +403,7 @@ void Debug::ThreadInit() { |
thread_local_.target_fp_ = 0; |
thread_local_.return_value_ = Smi::kZero; |
thread_local_.async_task_count_ = 0; |
+ thread_local_.non_breakable_async_events_ = false; |
clear_suspended_generator(); |
thread_local_.restart_fp_ = nullptr; |
base::NoBarrier_Store(&thread_local_.current_debug_scope_, |
@@ -1927,9 +1928,6 @@ void ResetPromiseHandle(const v8::WeakCallbackInfo<void>& info) { |
// different stacks from direct Promise use, but we save and restore a |
// stack once for all reactions. |
// |
-// If this isn't a case of async function, we return false, otherwise |
-// we set the correct id and return true. |
-// |
// TODO(littledan): Improve this case. |
int GetReferenceAsyncTaskId(Isolate* isolate, Handle<JSPromise> promise) { |
Handle<Symbol> handled_by_symbol = |
@@ -1958,11 +1956,12 @@ void Debug::RunPromiseHook(PromiseHookType type, Handle<JSPromise> promise, |
int id = GetReferenceAsyncTaskId(isolate_, promise); |
switch (type) { |
case PromiseHookType::kInit: |
- debug_delegate_->PromiseEventOccurred( |
- debug::kDebugPromiseCreated, id, |
+ debug_delegate_->PromiseCreatedEvent( |
+ id, |
parent->IsJSPromise() ? GetReferenceAsyncTaskId( |
isolate_, Handle<JSPromise>::cast(parent)) |
- : 0); |
+ : 0, |
+ !thread_local_.non_breakable_async_events_); |
return; |
case PromiseHookType::kResolve: |
// We can't use this hook because it's called before promise object will |
@@ -2043,7 +2042,7 @@ void Debug::OnAsyncTaskEvent(debug::PromiseDebugActionType type, int id) { |
if (in_debug_scope() || ignore_events()) return; |
if (debug_delegate_) { |
- debug_delegate_->PromiseEventOccurred(type, id, 0); |
+ debug_delegate_->PromiseEventOccurred(type, id); |
if (!non_inspector_listener_exists()) return; |
} |