| Index: src/debug.cc
|
| diff --git a/src/debug.cc b/src/debug.cc
|
| index 2ae8630885b804640cd77f5e4363b62cfd5db8a6..d974cd70026836bb2fc6d08aefd278638e878092 100644
|
| --- a/src/debug.cc
|
| +++ b/src/debug.cc
|
| @@ -568,7 +568,6 @@ void Debug::ThreadInit() {
|
| // TODO(isolates): frames_are_dropped_?
|
| thread_local_.current_debug_scope_ = NULL;
|
| thread_local_.restarter_frame_function_pointer_ = NULL;
|
| - thread_local_.promise_on_stack_ = NULL;
|
| }
|
|
|
|
|
| @@ -855,9 +854,6 @@ void Debug::Unload() {
|
| ClearAllBreakPoints();
|
| ClearStepping();
|
|
|
| - // Match unmatched PopPromise calls.
|
| - while (thread_local_.promise_on_stack_) PopPromise();
|
| -
|
| // Return debugger is not loaded.
|
| if (!is_loaded()) return;
|
|
|
| @@ -1272,57 +1268,6 @@ bool Debug::IsBreakOnException(ExceptionBreakType type) {
|
| }
|
|
|
|
|
| -PromiseOnStack::PromiseOnStack(Isolate* isolate, PromiseOnStack* prev,
|
| - Handle<JSObject> promise)
|
| - : isolate_(isolate), prev_(prev) {
|
| - handler_ = StackHandler::FromAddress(
|
| - Isolate::handler(isolate->thread_local_top()));
|
| - promise_ =
|
| - Handle<JSObject>::cast(isolate->global_handles()->Create(*promise));
|
| -}
|
| -
|
| -
|
| -PromiseOnStack::~PromiseOnStack() {
|
| - isolate_->global_handles()->Destroy(
|
| - Handle<Object>::cast(promise_).location());
|
| -}
|
| -
|
| -
|
| -void Debug::PushPromise(Handle<JSObject> promise) {
|
| - PromiseOnStack* prev = thread_local_.promise_on_stack_;
|
| - thread_local_.promise_on_stack_ = new PromiseOnStack(isolate_, prev, promise);
|
| -}
|
| -
|
| -
|
| -void Debug::PopPromise() {
|
| - if (thread_local_.promise_on_stack_ == NULL) return;
|
| - PromiseOnStack* prev = thread_local_.promise_on_stack_->prev();
|
| - delete thread_local_.promise_on_stack_;
|
| - thread_local_.promise_on_stack_ = prev;
|
| -}
|
| -
|
| -
|
| -Handle<Object> Debug::GetPromiseOnStackOnThrow() {
|
| - Handle<Object> undefined = isolate_->factory()->undefined_value();
|
| - if (thread_local_.promise_on_stack_ == NULL) return undefined;
|
| - StackHandler* promise_try = thread_local_.promise_on_stack_->handler();
|
| - // Find the top-most try-catch handler.
|
| - StackHandler* handler = StackHandler::FromAddress(
|
| - Isolate::handler(isolate_->thread_local_top()));
|
| - do {
|
| - if (handler == promise_try) {
|
| - // Mark the pushed try-catch handler to prevent a later duplicate event
|
| - // triggered with the following reject.
|
| - return thread_local_.promise_on_stack_->promise();
|
| - }
|
| - handler = handler->next();
|
| - // Throwing inside a Promise can be intercepted by an inner try-catch, so
|
| - // we stop at the first try-catch handler.
|
| - } while (handler != NULL && !handler->is_catch());
|
| - return undefined;
|
| -}
|
| -
|
| -
|
| bool Debug::PromiseHasRejectHandler(Handle<JSObject> promise) {
|
| Handle<JSFunction> fun = Handle<JSFunction>::cast(
|
| JSObject::GetDataProperty(isolate_->js_builtins_object(),
|
| @@ -2567,7 +2512,7 @@ MaybeHandle<Object> Debug::MakeAsyncTaskEvent(Handle<JSObject> task_event) {
|
| void Debug::OnThrow(Handle<Object> exception, bool uncaught) {
|
| if (in_debug_scope() || ignore_events()) return;
|
| HandleScope scope(isolate_);
|
| - OnException(exception, uncaught, GetPromiseOnStackOnThrow());
|
| + OnException(exception, uncaught, isolate_->GetPromiseOnStackOnThrow());
|
| }
|
|
|
|
|
|
|