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

Unified Diff: runtime/vm/isolate.cc

Issue 2981173002: Remove the debugger_ field from Isolate in a PRODUCT build (Closed)
Patch Set: Remove flag support_debugger Created 3 years, 5 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 | « runtime/vm/isolate.h ('k') | runtime/vm/kernel_to_il.cc » ('j') | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
Index: runtime/vm/isolate.cc
diff --git a/runtime/vm/isolate.cc b/runtime/vm/isolate.cc
index 7abc24875e8326b68c05ac17eb201afa40e21d7f..770c70e74882686ce35748cec82c5ad341d5cd1d 100644
--- a/runtime/vm/isolate.cc
+++ b/runtime/vm/isolate.cc
@@ -344,10 +344,12 @@ RawError* IsolateMessageHandler::HandleLibMessage(const Array& message) {
Object& obj = Object::Handle(zone, message.At(2));
if (!I->VerifyPauseCapability(obj)) return Error::null();
+#if !defined(PRODUCT)
// If we are already paused, don't pause again.
- if (FLAG_support_debugger && (I->debugger()->PauseEvent() == NULL)) {
+ if (I->debugger()->PauseEvent() == NULL) {
return I->debugger()->PauseInterrupted();
}
+#endif
break;
}
@@ -662,6 +664,7 @@ MessageHandler::MessageStatus IsolateMessageHandler::ProcessUnhandledException(
} else {
T->set_sticky_error(result);
}
+#if !defined(PRODUCT)
// Notify the debugger about specific unhandled exceptions which are
// withheld when being thrown. Do this after setting the sticky error
// so the isolate has an error set when paused with the unhandled
@@ -672,11 +675,10 @@ MessageHandler::MessageStatus IsolateMessageHandler::ProcessUnhandledException(
if ((exception == I->object_store()->out_of_memory()) ||
(exception == I->object_store()->stack_overflow())) {
// We didn't notify the debugger when the stack was full. Do it now.
- if (FLAG_support_debugger) {
- I->debugger()->PauseException(Instance::Handle(exception));
- }
+ I->debugger()->PauseException(Instance::Handle(exception));
}
}
+#endif // !defined(PRODUCT)
return kError;
}
}
@@ -755,7 +757,9 @@ Isolate::Isolate(const Dart_IsolateFlags& api_flags)
environment_callback_(NULL),
library_tag_handler_(NULL),
api_state_(NULL),
+#if !defined(PRODUCT)
debugger_(NULL),
+#endif
resume_request_(false),
last_resume_timestamp_(OS::GetCurrentTimeMillis()),
random_(),
@@ -825,9 +829,7 @@ Isolate::~Isolate() {
delete object_store_;
delete api_state_;
#ifndef PRODUCT
- if (FLAG_support_debugger) {
- delete debugger_;
- }
+ delete debugger_;
#endif // !PRODUCT
#if defined(USING_SIMULATOR)
delete simulator_;
@@ -920,10 +922,10 @@ Isolate* Isolate::Init(const char* name_prefix,
result->set_terminate_capability(result->random()->NextUInt64());
result->BuildName(name_prefix);
- if (FLAG_support_debugger) {
- result->debugger_ = new Debugger();
- result->debugger_->Initialize(result);
- }
+#if !defined(PRODUCT)
+ result->debugger_ = new Debugger();
+ result->debugger_->Initialize(result);
+#endif
if (FLAG_trace_isolates) {
if (name_prefix == NULL || strcmp(name_prefix, "vm-isolate") != 0) {
OS::Print(
@@ -981,13 +983,15 @@ int64_t Isolate::UptimeMicros() const {
}
bool Isolate::IsPaused() const {
+#if defined(PRODUCT)
+ return false;
+#else
return (debugger_ != NULL) && (debugger_->PauseEvent() != NULL);
+#endif
}
RawError* Isolate::PausePostRequest() {
- if (!FLAG_support_debugger) {
- return Error::null();
- }
+#if !defined(PRODUCT)
if (debugger_ == NULL) {
return Error::null();
}
@@ -1001,6 +1005,7 @@ RawError* Isolate::PausePostRequest() {
UNREACHABLE();
}
}
+#endif
return Error::null();
}
@@ -1092,12 +1097,10 @@ bool Isolate::MakeRunnable() {
ASSERT(object_store()->root_library() != Library::null());
set_is_runnable(true);
#ifndef PRODUCT
- if (FLAG_support_debugger) {
- if (!ServiceIsolate::IsServiceIsolate(this)) {
- debugger()->OnIsolateRunnable();
- if (FLAG_pause_isolates_on_unhandled_exceptions) {
- debugger()->SetExceptionPauseInfo(kPauseOnUnhandledExceptions);
- }
+ if (!ServiceIsolate::IsServiceIsolate(this)) {
+ debugger()->OnIsolateRunnable();
+ if (FLAG_pause_isolates_on_unhandled_exceptions) {
+ debugger()->SetExceptionPauseInfo(kPauseOnUnhandledExceptions);
}
}
#endif // !PRODUCT
@@ -1384,9 +1387,11 @@ static MessageHandler::MessageStatus RunIsolate(uword parameter) {
// way to debug. Set the breakpoint on the static function instead
// of its implicit closure function because that latter is merely
// a dispatcher that is marked as undebuggable.
- if (FLAG_support_debugger && FLAG_break_at_isolate_spawn) {
+#if !defined(PRODUCT)
+ if (FLAG_break_at_isolate_spawn) {
isolate->debugger()->OneTimeBreakAtEntry(func);
}
+#endif
func = func.ImplicitClosureFunction();
@@ -1563,10 +1568,10 @@ void Isolate::LowLevelShutdown() {
}
}
+#if !defined(PRODUCT)
// Clean up debugger resources.
- if (FLAG_support_debugger) {
- debugger()->Shutdown();
- }
+ debugger()->Shutdown();
+#endif
// Close all the ports owned by this isolate.
PortMap::ClosePorts(message_handler());
@@ -1783,12 +1788,10 @@ void Isolate::VisitObjectPointers(ObjectPointerVisitor* visitor,
// when at safepoint or the field_list_mutex_ lock has been taken.
visitor->VisitPointer(reinterpret_cast<RawObject**>(&boxed_field_list_));
+#if !defined(PRODUCT)
// Visit objects in the debugger.
- if (FLAG_support_debugger) {
- debugger()->VisitObjectPointers(visitor);
- }
+ debugger()->VisitObjectPointers(visitor);
-#if !defined(PRODUCT)
// Visit objects that are being used for isolate reload.
if (reload_context() != NULL) {
reload_context()->VisitObjectPointers(visitor);
« no previous file with comments | « runtime/vm/isolate.h ('k') | runtime/vm/kernel_to_il.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698