Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(207)

Side by Side Diff: src/debug.h

Issue 296693005: Move promises recorded for debugging to thread local data. (Closed) Base URL: https://v8.googlecode.com/svn/branches/bleeding_edge
Patch Set: Created 6 years, 7 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch | Annotate | Revision Log
« no previous file with comments | « no previous file | src/debug.cc » ('j') | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
OLDNEW
1 // Copyright 2012 the V8 project authors. All rights reserved. 1 // Copyright 2012 the V8 project authors. All rights reserved.
2 // Use of this source code is governed by a BSD-style license that can be 2 // Use of this source code is governed by a BSD-style license that can be
3 // found in the LICENSE file. 3 // found in the LICENSE file.
4 4
5 #ifndef V8_DEBUG_H_ 5 #ifndef V8_DEBUG_H_
6 #define V8_DEBUG_H_ 6 #define V8_DEBUG_H_
7 7
8 #include "allocation.h" 8 #include "allocation.h"
9 #include "arguments.h" 9 #include "arguments.h"
10 #include "assembler.h" 10 #include "assembler.h"
(...skipping 501 matching lines...) Expand 10 before | Expand all | Expand 10 after
512 // Cache of all scripts in the heap. 512 // Cache of all scripts in the heap.
513 ScriptCache* script_cache_; 513 ScriptCache* script_cache_;
514 514
515 // List of active debug info objects. 515 // List of active debug info objects.
516 DebugInfoListNode* debug_info_list_; 516 DebugInfoListNode* debug_info_list_;
517 517
518 bool disable_break_; 518 bool disable_break_;
519 bool break_on_exception_; 519 bool break_on_exception_;
520 bool break_on_uncaught_exception_; 520 bool break_on_uncaught_exception_;
521 521
522 // When a promise is being resolved, we may want to trigger a debug event for 522 class PromiseOnStack {
523 // the case we catch a throw. For this purpose we remember the try-catch 523 public:
524 // handler address that would catch the exception. We also hold onto a 524 PromiseOnStack(Isolate* isolate,
525 // closure that returns a promise if the exception is considered uncaught. 525 PromiseOnStack* prev,
526 // Due to the possibility of reentry we use a list to form a stack. 526 Handle<JSFunction> getter);
527 List<StackHandler*> promise_catch_handlers_; 527 ~PromiseOnStack();
528 List<Handle<JSFunction> > promise_getters_; 528 StackHandler* handler() { return handler_; }
529 Handle<JSFunction> getter() { return getter_; }
530 PromiseOnStack* prev() { return prev_; }
531 private:
532 Isolate* isolate_;
533 StackHandler* handler_;
534 Handle<JSFunction> getter_;
535 PromiseOnStack* prev_;
536 };
529 537
530 // Per-thread data. 538 // Per-thread data.
531 class ThreadLocal { 539 class ThreadLocal {
532 public: 540 public:
533 // Counter for generating next break id. 541 // Counter for generating next break id.
534 int break_count_; 542 int break_count_;
535 543
536 // Current break id. 544 // Current break id.
537 int break_id_; 545 int break_id_;
538 546
(...skipping 32 matching lines...) Expand 10 before | Expand all | Expand 10 after
571 // Top debugger entry. 579 // Top debugger entry.
572 EnterDebugger* debugger_entry_; 580 EnterDebugger* debugger_entry_;
573 581
574 // Pending interrupts scheduled while debugging. 582 // Pending interrupts scheduled while debugging.
575 bool has_pending_interrupt_; 583 bool has_pending_interrupt_;
576 584
577 // When restarter frame is on stack, stores the address 585 // When restarter frame is on stack, stores the address
578 // of the pointer to function being restarted. Otherwise (most of the time) 586 // of the pointer to function being restarted. Otherwise (most of the time)
579 // stores NULL. This pointer is used with 'step in' implementation. 587 // stores NULL. This pointer is used with 'step in' implementation.
580 Object** restarter_frame_function_pointer_; 588 Object** restarter_frame_function_pointer_;
589
590 // When a promise is being resolved, we may want to trigger a debug event
591 // if we catch a throw. For this purpose we remember the try-catch
592 // handler address that would catch the exception. We also hold onto a
593 // closure that returns a promise if the exception is considered uncaught.
594 // Due to the possibility of reentry we use a linked list.
595 PromiseOnStack* promise_on_stack_;
581 }; 596 };
582 597
583 // Storage location for registers when handling debug break calls 598 // Storage location for registers when handling debug break calls
584 ThreadLocal thread_local_; 599 ThreadLocal thread_local_;
585 void ThreadInit(); 600 void ThreadInit();
586 601
587 Isolate* isolate_; 602 Isolate* isolate_;
588 603
589 friend class Isolate; 604 friend class Isolate;
590 605
(...skipping 350 matching lines...) Expand 10 before | Expand all | Expand 10 after
941 } 956 }
942 } 957 }
943 958
944 private: 959 private:
945 Debug::AddressId id_; 960 Debug::AddressId id_;
946 }; 961 };
947 962
948 } } // namespace v8::internal 963 } } // namespace v8::internal
949 964
950 #endif // V8_DEBUG_H_ 965 #endif // V8_DEBUG_H_
OLDNEW
« no previous file with comments | « no previous file | src/debug.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698