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

Unified Diff: src/debug.cc

Issue 300683005: Rename EnterDebugger to DebugScope. (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 side-by-side diff with in-line comments
Download patch
« no previous file with comments | « src/debug.h ('k') | src/isolate.cc » ('j') | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
Index: src/debug.cc
diff --git a/src/debug.cc b/src/debug.cc
index e2964a91f55d4daa5b267cb77c24fb3acc789da9..66fb65218bb0fa7814c91928c59dd432ac1d7f4a 100644
--- a/src/debug.cc
+++ b/src/debug.cc
@@ -565,7 +565,7 @@ void Debug::ThreadInit() {
thread_local_.step_into_fp_ = 0;
thread_local_.step_out_fp_ = 0;
// TODO(isolates): frames_are_dropped_?
- thread_local_.debugger_entry_ = NULL;
+ thread_local_.current_debug_scope_ = NULL;
thread_local_.restarter_frame_function_pointer_ = NULL;
thread_local_.promise_on_stack_ = NULL;
}
@@ -894,8 +894,8 @@ void Debug::Break(Arguments args, JavaScriptFrame* frame) {
if (break_disabled_) return;
// Enter the debugger.
- EnterDebugger debugger(isolate_);
- if (debugger.FailedToEnter()) return;
+ DebugScope debug_scope(this);
+ if (debug_scope.failed()) return;
// Postpone interrupt during breakpoint processing.
PostponeInterruptsScope postpone(isolate_);
@@ -1348,7 +1348,7 @@ void Debug::PrepareStep(StepAction step_action,
PrepareForBreakPoints();
- ASSERT(is_entered());
+ ASSERT(in_debug_scope());
// Remember this step action and count.
thread_local_.last_step_action_ = step_action;
@@ -2458,7 +2458,7 @@ bool Debug::IsDebugGlobal(GlobalObject* global) {
void Debug::ClearMirrorCache() {
PostponeInterruptsScope postpone(isolate_);
HandleScope scope(isolate_);
- ASSERT(isolate_->context() == *Debug::debug_context());
+ AssertDebugContext();
// Clear the mirror cache.
Handle<Object> fun = Object::GetProperty(
@@ -2514,7 +2514,7 @@ void Debug::AfterGarbageCollection() {
MaybeHandle<Object> Debug::MakeJSObject(const char* constructor_name,
int argc,
Handle<Object> argv[]) {
- ASSERT(isolate_->context() == *debug_context());
+ AssertDebugContext();
// Create the execution state object.
Handle<Object> constructor = Object::GetProperty(
isolate_, isolate_->global_object(), constructor_name).ToHandleChecked();
@@ -2581,7 +2581,7 @@ MaybeHandle<Object> Debug::MakeScriptCollectedEvent(int id) {
void Debug::OnException(Handle<Object> exception, bool uncaught) {
- if (is_entered() || ignore_events()) return;
+ if (in_debug_scope() || ignore_events()) return;
HandleScope scope(isolate_);
Handle<Object> promise = GetPromiseForUncaughtException();
@@ -2596,9 +2596,8 @@ void Debug::OnException(Handle<Object> exception, bool uncaught) {
if (!break_on_exception_) return;
}
- // Enter the debugger.
- EnterDebugger debugger(isolate_);
- if (debugger.FailedToEnter()) return;
+ DebugScope debug_scope(this);
+ if (debug_scope.failed()) return;
// Clear all current stepping setup.
ClearStepping();
@@ -2619,8 +2618,8 @@ void Debug::OnException(Handle<Object> exception, bool uncaught) {
void Debug::OnDebugBreak(Handle<Object> break_points_hit,
bool auto_continue) {
- // Debugger has already been entered by caller.
- ASSERT(isolate_->context() == *debug_context());
+ // The caller provided for DebugScope.
+ AssertDebugContext();
// Bail out if there is no listener for this event
if (ignore_events()) return;
@@ -2638,12 +2637,11 @@ void Debug::OnDebugBreak(Handle<Object> break_points_hit,
void Debug::OnBeforeCompile(Handle<Script> script) {
- if (is_entered() || ignore_events()) return;
+ if (in_debug_scope() || ignore_events()) return;
HandleScope scope(isolate_);
- // Enter the debugger.
- EnterDebugger debugger(isolate_);
- if (debugger.FailedToEnter()) return;
+ DebugScope debug_scope(this);
+ if (debug_scope.failed()) return;
// Create the event data object.
Handle<Object> event_data;
@@ -2664,15 +2662,14 @@ void Debug::OnAfterCompile(Handle<Script> script,
if (script_cache_ != NULL) script_cache_->Add(script);
// No more to do if not debugging.
- if (is_entered() || ignore_events()) return;
+ if (in_debug_scope() || ignore_events()) return;
HandleScope scope(isolate_);
// Store whether in debugger before entering debugger.
- bool in_debugger = is_entered();
+ bool was_in_scope = in_debug_scope();
- // Enter the debugger.
- EnterDebugger debugger(isolate_);
- if (debugger.FailedToEnter()) return;
+ DebugScope debug_scope(this);
+ if (debug_scope.failed()) return;
// If debugging there might be script break points registered for this
// script. Make sure that these break points are set.
@@ -2703,7 +2700,7 @@ void Debug::OnAfterCompile(Handle<Script> script,
return;
}
// Bail out based on state or if there is no listener for this event
- if (in_debugger && (after_compile_flags & SEND_WHEN_DEBUGGING) == 0) return;
+ if (was_in_scope && (after_compile_flags & SEND_WHEN_DEBUGGING) == 0) return;
// Create the compile state object.
Handle<Object> event_data;
@@ -2716,12 +2713,11 @@ void Debug::OnAfterCompile(Handle<Script> script,
void Debug::OnScriptCollected(int id) {
- if (is_entered() || ignore_events()) return;
+ if (in_debug_scope() || ignore_events()) return;
HandleScope scope(isolate_);
- // Enter the debugger.
- EnterDebugger debugger(isolate_);
- if (debugger.FailedToEnter()) return;
+ DebugScope debug_scope(this);
+ if (debug_scope.failed()) return;
// Create the script collected state object.
Handle<Object> event_data;
@@ -2806,7 +2802,7 @@ void Debug::CallEventCallback(v8::DebugEvent event,
Handle<Context> Debug::GetDebugContext() {
- EnterDebugger debugger(isolate_);
+ DebugScope debug_scope(this);
// The global handle may be destroyed soon after. Return it reboxed.
return handle(*debug_context(), isolate_);
}
@@ -2845,7 +2841,7 @@ void Debug::NotifyMessageHandler(v8::DebugEvent event,
// The debug command interrupt flag might have been set when the command was
// added. It should be enough to clear the flag only once while we are in the
// debugger.
- ASSERT(is_entered());
+ ASSERT(in_debug_scope());
isolate_->stack_guard()->ClearDebugCommand();
// Notify the debugger that a debug event has occurred unless auto continue is
@@ -2967,7 +2963,7 @@ void Debug::SetEventListener(Handle<Object> callback,
void Debug::SetMessageHandler(v8::Debug::MessageHandler handler) {
message_handler_ = handler;
UpdateState();
- if (handler == NULL && is_entered()) {
+ if (handler == NULL && in_debug_scope()) {
// Send an empty command to the debugger if in a break to make JavaScript
// run again if the debugger is closed.
EnqueueCommandMessage(Vector<const uint16_t>::empty());
@@ -2978,12 +2974,12 @@ void Debug::SetMessageHandler(v8::Debug::MessageHandler handler) {
void Debug::UpdateState() {
is_active_ = message_handler_ != NULL || !event_listener_.is_null();
- if (is_active_ || is_entered()) {
+ if (is_active_ || in_debug_scope()) {
// Note that the debug context could have already been loaded to
// bootstrap test cases.
isolate_->compilation_cache()->Disable();
is_active_ = Load();
- } else if (is_loaded() && !is_active_) {
+ } else if (is_loaded()) {
isolate_->compilation_cache()->Enable();
Unload();
}
@@ -3013,7 +3009,7 @@ void Debug::EnqueueCommandMessage(Vector<const uint16_t> command,
command_received_.Signal();
// Set the debug command break flag to have the command processed.
- if (!is_entered()) isolate_->stack_guard()->RequestDebugCommand();
+ if (!in_debug_scope()) isolate_->stack_guard()->RequestDebugCommand();
}
@@ -3022,16 +3018,13 @@ void Debug::EnqueueDebugCommand(v8::Debug::ClientData* client_data) {
event_command_queue_.Put(message);
// Set the debug command break flag to have the command processed.
- if (!is_entered()) isolate_->stack_guard()->RequestDebugCommand();
+ if (!in_debug_scope()) isolate_->stack_guard()->RequestDebugCommand();
}
MaybeHandle<Object> Debug::Call(Handle<JSFunction> fun, Handle<Object> data) {
- // Enter the debugger.
- EnterDebugger debugger(isolate_);
- if (debugger.FailedToEnter()) {
- return isolate_->factory()->undefined_value();
- }
+ DebugScope debug_scope(this);
+ if (debug_scope.failed()) return isolate_->factory()->undefined_value();
// Create the execution state.
Handle<Object> exec_state;
@@ -3089,9 +3082,8 @@ void Debug::ProcessDebugMessages(bool debug_command_only) {
if (check.HasOverflowed()) return;
HandleScope scope(isolate_);
- // Enter the debugger. Just continue if we fail to enter the debugger.
- EnterDebugger debugger(isolate_);
- if (debugger.FailedToEnter()) return;
+ DebugScope debug_scope(this);
+ if (debug_scope.failed()) return;
// Notify the debug event listeners. Indicate auto continue if the break was
// a debug command break.
@@ -3099,59 +3091,54 @@ void Debug::ProcessDebugMessages(bool debug_command_only) {
}
-EnterDebugger::EnterDebugger(Isolate* isolate)
- : isolate_(isolate),
- prev_(isolate_->debug()->debugger_entry()),
- save_(isolate_) {
- Debug* debug = isolate_->debug();
-
+DebugScope::DebugScope(Debug* debug) : debug_(debug),
+ prev_(debug->debugger_entry()),
+ save_(debug_->isolate_) {
// Link recursive debugger entry.
- debug->thread_local_.debugger_entry_ = this;
+ debug_->thread_local_.current_debug_scope_ = this;
// Store the previous break id and frame id.
- break_id_ = debug->break_id();
- break_frame_id_ = debug->break_frame_id();
+ break_id_ = debug_->break_id();
+ break_frame_id_ = debug_->break_frame_id();
// Create the new break info. If there is no JavaScript frames there is no
// break frame id.
- JavaScriptFrameIterator it(isolate_);
+ JavaScriptFrameIterator it(isolate());
bool has_js_frames = !it.done();
- debug->thread_local_.break_frame_id_ = has_js_frames ? it.frame()->id()
- : StackFrame::NO_ID;
- debug->SetNextBreakId();
+ debug_->thread_local_.break_frame_id_ = has_js_frames ? it.frame()->id()
+ : StackFrame::NO_ID;
+ debug_->SetNextBreakId();
- debug->UpdateState();
+ debug_->UpdateState();
// Make sure that debugger is loaded and enter the debugger context.
// The previous context is kept in save_.
- load_failed_ = !debug->is_loaded();
- if (!load_failed_) isolate_->set_context(*debug->debug_context());
+ failed_ = !debug_->is_loaded();
+ if (!failed_) isolate()->set_context(*debug->debug_context());
}
-EnterDebugger::~EnterDebugger() {
- Debug* debug = isolate_->debug();
- // Restore to the previous break state.
- debug->thread_local_.break_frame_id_ = break_frame_id_;
- debug->thread_local_.break_id_ = break_id_;
-
- // Check for leaving the debugger.
- if (!load_failed_ && prev_ == NULL) {
+DebugScope::~DebugScope() {
+ if (!failed_ && prev_ == NULL) {
// Clear mirror cache when leaving the debugger. Skip this if there is a
// pending exception as clearing the mirror cache calls back into
// JavaScript. This can happen if the v8::Debug::Call is used in which
// case the exception should end up in the calling code.
- if (!isolate_->has_pending_exception()) debug->ClearMirrorCache();
+ if (!isolate()->has_pending_exception()) debug_->ClearMirrorCache();
// If there are commands in the queue when leaving the debugger request
// that these commands are processed.
- if (debug->has_commands()) isolate_->stack_guard()->RequestDebugCommand();
+ if (debug_->has_commands()) isolate()->stack_guard()->RequestDebugCommand();
}
// Leaving this debugger entry.
- debug->thread_local_.debugger_entry_ = prev_;
+ debug_->thread_local_.current_debug_scope_ = prev_;
+
+ // Restore to the previous break state.
+ debug_->thread_local_.break_frame_id_ = break_frame_id_;
+ debug_->thread_local_.break_id_ = break_id_;
- debug->UpdateState();
+ debug_->UpdateState();
}
« no previous file with comments | « src/debug.h ('k') | src/isolate.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698