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

Unified Diff: runtime/vm/message_handler.cc

Issue 995883002: Yesterday's deadlock fix was wrong. It could drop notifications. (Closed) Base URL: https://dart.googlecode.com/svn/branches/bleeding_edge/dart
Patch Set: Created 5 years, 9 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/observatory/lib/src/elements/debugger.dart ('k') | no next file » | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
Index: runtime/vm/message_handler.cc
diff --git a/runtime/vm/message_handler.cc b/runtime/vm/message_handler.cc
index c92cde06ddd9f135f51262922249edc9dd6cd136..68344cb35db67ad979f96ade6edb381ee91f2d2d 100644
--- a/runtime/vm/message_handler.cc
+++ b/runtime/vm/message_handler.cc
@@ -94,34 +94,36 @@ void MessageHandler::Run(ThreadPool* pool,
void MessageHandler::PostMessage(Message* message, bool before_events) {
- MonitorLocker ml(&monitor_);
- if (FLAG_trace_isolates) {
- const char* source_name = "<native code>";
- Isolate* source_isolate = Isolate::Current();
- if (source_isolate) {
- source_name = source_isolate->name();
+ Message::Priority saved_priority;
+ {
+ MonitorLocker ml(&monitor_);
+ if (FLAG_trace_isolates) {
+ const char* source_name = "<native code>";
+ Isolate* source_isolate = Isolate::Current();
+ if (source_isolate) {
+ source_name = source_isolate->name();
+ }
+ OS::Print("[>] Posting message:\n"
+ "\tlen: %" Pd "\n"
+ "\tsource: %s\n"
+ "\tdest: %s\n"
+ "\tdest_port: %" Pd64 "\n",
+ message->len(), source_name, name(), message->dest_port());
}
- OS::Print("[>] Posting message:\n"
- "\tlen: %" Pd "\n"
- "\tsource: %s\n"
- "\tdest: %s\n"
- "\tdest_port: %" Pd64 "\n",
- message->len(), source_name, name(), message->dest_port());
- }
- Message::Priority saved_priority = message->priority();
- if (message->IsOOB()) {
- oob_queue_->Enqueue(message, before_events);
- } else {
- queue_->Enqueue(message, before_events);
- }
- message = NULL; // Do not access message. May have been deleted.
+ saved_priority = message->priority();
+ if (message->IsOOB()) {
+ oob_queue_->Enqueue(message, before_events);
+ } else {
+ queue_->Enqueue(message, before_events);
+ }
+ message = NULL; // Do not access message. May have been deleted.
- if (pool_ != NULL && task_ == NULL) {
- task_ = new MessageHandlerTask(this);
- pool_->Run(task_);
+ if (pool_ != NULL && task_ == NULL) {
+ task_ = new MessageHandlerTask(this);
+ pool_->Run(task_);
+ }
}
-
// Invoke any custom message notification.
MessageNotify(saved_priority);
}
« no previous file with comments | « runtime/observatory/lib/src/elements/debugger.dart ('k') | no next file » | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698