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

Side by Side Diff: src/debug.cc

Issue 751833003: Version 3.30.33.4 (cherry-pick) (Closed) Base URL: https://chromium.googlesource.com/v8/v8.git@3.30
Patch Set: Created 6 years 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
« no previous file with comments | « src/debug.h ('k') | src/version.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 #include "src/v8.h" 5 #include "src/v8.h"
6 6
7 #include "src/api.h" 7 #include "src/api.h"
8 #include "src/arguments.h" 8 #include "src/arguments.h"
9 #include "src/bootstrapper.h" 9 #include "src/bootstrapper.h"
10 #include "src/code-stubs.h" 10 #include "src/code-stubs.h"
(...skipping 22 matching lines...) Expand all
33 event_listener_data_(Handle<Object>()), 33 event_listener_data_(Handle<Object>()),
34 message_handler_(NULL), 34 message_handler_(NULL),
35 command_received_(0), 35 command_received_(0),
36 command_queue_(isolate->logger(), kQueueInitialSize), 36 command_queue_(isolate->logger(), kQueueInitialSize),
37 event_command_queue_(isolate->logger(), kQueueInitialSize), 37 event_command_queue_(isolate->logger(), kQueueInitialSize),
38 is_active_(false), 38 is_active_(false),
39 is_suppressed_(false), 39 is_suppressed_(false),
40 live_edit_enabled_(true), // TODO(yangguo): set to false by default. 40 live_edit_enabled_(true), // TODO(yangguo): set to false by default.
41 has_break_points_(false), 41 has_break_points_(false),
42 break_disabled_(false), 42 break_disabled_(false),
43 in_debug_event_listener_(false),
43 break_on_exception_(false), 44 break_on_exception_(false),
44 break_on_uncaught_exception_(false), 45 break_on_uncaught_exception_(false),
45 script_cache_(NULL), 46 script_cache_(NULL),
46 debug_info_list_(NULL), 47 debug_info_list_(NULL),
47 isolate_(isolate) { 48 isolate_(isolate) {
48 ThreadInit(); 49 ThreadInit();
49 } 50 }
50 51
51 52
52 static v8::Handle<v8::Context> GetDebugEventContext(Isolate* isolate) { 53 static v8::Handle<v8::Context> GetDebugEventContext(Isolate* isolate) {
(...skipping 804 matching lines...) Expand 10 before | Expand all | Expand 10 after
857 858
858 void Debug::Break(Arguments args, JavaScriptFrame* frame) { 859 void Debug::Break(Arguments args, JavaScriptFrame* frame) {
859 Heap* heap = isolate_->heap(); 860 Heap* heap = isolate_->heap();
860 HandleScope scope(isolate_); 861 HandleScope scope(isolate_);
861 DCHECK(args.length() == 0); 862 DCHECK(args.length() == 0);
862 863
863 // Initialize LiveEdit. 864 // Initialize LiveEdit.
864 LiveEdit::InitializeThreadLocal(this); 865 LiveEdit::InitializeThreadLocal(this);
865 866
866 // Just continue if breaks are disabled or debugger cannot be loaded. 867 // Just continue if breaks are disabled or debugger cannot be loaded.
867 if (break_disabled_) return; 868 if (break_disabled()) return;
868 869
869 // Enter the debugger. 870 // Enter the debugger.
870 DebugScope debug_scope(this); 871 DebugScope debug_scope(this);
871 if (debug_scope.failed()) return; 872 if (debug_scope.failed()) return;
872 873
873 // Postpone interrupt during breakpoint processing. 874 // Postpone interrupt during breakpoint processing.
874 PostponeInterruptsScope postpone(isolate_); 875 PostponeInterruptsScope postpone(isolate_);
875 876
876 // Get the debug info (create it if it does not exist). 877 // Get the debug info (create it if it does not exist).
877 Handle<SharedFunctionInfo> shared = 878 Handle<SharedFunctionInfo> shared =
(...skipping 1896 matching lines...) Expand 10 before | Expand all | Expand 10 after
2774 command.Dispose(); 2775 command.Dispose();
2775 } 2776 }
2776 } 2777 }
2777 } 2778 }
2778 2779
2779 2780
2780 void Debug::CallEventCallback(v8::DebugEvent event, 2781 void Debug::CallEventCallback(v8::DebugEvent event,
2781 Handle<Object> exec_state, 2782 Handle<Object> exec_state,
2782 Handle<Object> event_data, 2783 Handle<Object> event_data,
2783 v8::Debug::ClientData* client_data) { 2784 v8::Debug::ClientData* client_data) {
2784 DisableBreak no_break(this, true); 2785 bool previous = in_debug_event_listener_;
2786 in_debug_event_listener_ = true;
2785 if (event_listener_->IsForeign()) { 2787 if (event_listener_->IsForeign()) {
2786 // Invoke the C debug event listener. 2788 // Invoke the C debug event listener.
2787 v8::Debug::EventCallback callback = 2789 v8::Debug::EventCallback callback =
2788 FUNCTION_CAST<v8::Debug::EventCallback>( 2790 FUNCTION_CAST<v8::Debug::EventCallback>(
2789 Handle<Foreign>::cast(event_listener_)->foreign_address()); 2791 Handle<Foreign>::cast(event_listener_)->foreign_address());
2790 EventDetailsImpl event_details(event, 2792 EventDetailsImpl event_details(event,
2791 Handle<JSObject>::cast(exec_state), 2793 Handle<JSObject>::cast(exec_state),
2792 Handle<JSObject>::cast(event_data), 2794 Handle<JSObject>::cast(event_data),
2793 event_listener_data_, 2795 event_listener_data_,
2794 client_data); 2796 client_data);
2795 callback(event_details); 2797 callback(event_details);
2796 DCHECK(!isolate_->has_scheduled_exception()); 2798 DCHECK(!isolate_->has_scheduled_exception());
2797 } else { 2799 } else {
2798 // Invoke the JavaScript debug event listener. 2800 // Invoke the JavaScript debug event listener.
2799 DCHECK(event_listener_->IsJSFunction()); 2801 DCHECK(event_listener_->IsJSFunction());
2800 Handle<Object> argv[] = { Handle<Object>(Smi::FromInt(event), isolate_), 2802 Handle<Object> argv[] = { Handle<Object>(Smi::FromInt(event), isolate_),
2801 exec_state, 2803 exec_state,
2802 event_data, 2804 event_data,
2803 event_listener_data_ }; 2805 event_listener_data_ };
2804 Handle<JSReceiver> global(isolate_->global_proxy()); 2806 Handle<JSReceiver> global(isolate_->global_proxy());
2805 Execution::TryCall(Handle<JSFunction>::cast(event_listener_), 2807 Execution::TryCall(Handle<JSFunction>::cast(event_listener_),
2806 global, arraysize(argv), argv); 2808 global, arraysize(argv), argv);
2807 } 2809 }
2810 in_debug_event_listener_ = previous;
2808 } 2811 }
2809 2812
2810 2813
2811 Handle<Context> Debug::GetDebugContext() { 2814 Handle<Context> Debug::GetDebugContext() {
2812 DebugScope debug_scope(this); 2815 DebugScope debug_scope(this);
2813 // The global handle may be destroyed soon after. Return it reboxed. 2816 // The global handle may be destroyed soon after. Return it reboxed.
2814 return handle(*debug_context(), isolate_); 2817 return handle(*debug_context(), isolate_);
2815 } 2818 }
2816 2819
2817 2820
(...skipping 233 matching lines...) Expand 10 before | Expand all | Expand 10 after
3051 Handle<Object>(debug_context()->global_proxy(), isolate_), 3054 Handle<Object>(debug_context()->global_proxy(), isolate_),
3052 arraysize(argv), 3055 arraysize(argv),
3053 argv); 3056 argv);
3054 } 3057 }
3055 3058
3056 3059
3057 void Debug::HandleDebugBreak() { 3060 void Debug::HandleDebugBreak() {
3058 // Ignore debug break during bootstrapping. 3061 // Ignore debug break during bootstrapping.
3059 if (isolate_->bootstrapper()->IsActive()) return; 3062 if (isolate_->bootstrapper()->IsActive()) return;
3060 // Just continue if breaks are disabled. 3063 // Just continue if breaks are disabled.
3061 if (break_disabled_) return; 3064 if (break_disabled()) return;
3062 // Ignore debug break if debugger is not active. 3065 // Ignore debug break if debugger is not active.
3063 if (!is_active()) return; 3066 if (!is_active()) return;
3064 3067
3065 StackLimitCheck check(isolate_); 3068 StackLimitCheck check(isolate_);
3066 if (check.HasOverflowed()) return; 3069 if (check.HasOverflowed()) return;
3067 3070
3068 { JavaScriptFrameIterator it(isolate_); 3071 { JavaScriptFrameIterator it(isolate_);
3069 DCHECK(!it.done()); 3072 DCHECK(!it.done());
3070 Object* fun = it.frame()->function(); 3073 Object* fun = it.frame()->function();
3071 if (fun && fun->IsJSFunction()) { 3074 if (fun && fun->IsJSFunction()) {
(...skipping 333 matching lines...) Expand 10 before | Expand all | Expand 10 after
3405 logger_->DebugEvent("Put", message.text()); 3408 logger_->DebugEvent("Put", message.text());
3406 } 3409 }
3407 3410
3408 3411
3409 void LockingCommandMessageQueue::Clear() { 3412 void LockingCommandMessageQueue::Clear() {
3410 base::LockGuard<base::Mutex> lock_guard(&mutex_); 3413 base::LockGuard<base::Mutex> lock_guard(&mutex_);
3411 queue_.Clear(); 3414 queue_.Clear();
3412 } 3415 }
3413 3416
3414 } } // namespace v8::internal 3417 } } // namespace v8::internal
OLDNEW
« no previous file with comments | « src/debug.h ('k') | src/version.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698