Chromium Code Reviews| Index: runtime/vm/port.cc |
| =================================================================== |
| --- runtime/vm/port.cc (revision 3210) |
| +++ runtime/vm/port.cc (working copy) |
| @@ -6,6 +6,7 @@ |
| #include "vm/dart_api_impl.h" |
| #include "vm/isolate.h" |
| +#include "vm/message_queue.h" |
| #include "vm/thread.h" |
| #include "vm/utils.h" |
| @@ -164,12 +165,7 @@ |
| deleted_++; |
| MaintainInvariants(); |
| } |
| - |
| - // Notify the embedder that this port is closed. |
| - Dart_ClosePortCallback callback = isolate->close_port_callback(); |
| - ASSERT(callback); |
| - ASSERT(port != kCloseAllPorts); |
| - (*callback)(Api::CastIsolate(isolate), port); |
| + isolate->ClosePort(port); |
| } |
| @@ -190,19 +186,13 @@ |
| } |
| MaintainInvariants(); |
| } |
| - |
| - // Notify the embedder that all ports are closed. |
| - Dart_ClosePortCallback callback = isolate->close_port_callback(); |
| - ASSERT(callback); |
| - (*callback)(Api::CastIsolate(isolate), kCloseAllPorts); |
| + isolate->CloseAllPorts(); |
| } |
| -bool PortMap::PostMessage(Dart_Port dest_port, |
| - Dart_Port reply_port, |
| - Dart_Message message) { |
| +bool PortMap::PostMessage(Message* message) { |
| mutex_->Lock(); |
|
Ivan Posva
2012/01/23 22:00:43
MutexLocker ml(mutex_);
turnidge
2012/01/23 22:32:52
We can post from a non-isolate via Dart_PostIntArr
|
| - intptr_t index = FindPort(dest_port); |
| + intptr_t index = FindPort(message->dest_port()); |
| if (index < 0) { |
| free(message); |
| mutex_->Unlock(); |
| @@ -213,15 +203,9 @@ |
| Isolate* isolate = map_[index].isolate; |
| ASSERT(map_[index].port != 0); |
| ASSERT((isolate != NULL) && (isolate != deleted_entry_)); |
| - |
| - // Delegate message delivery to the embedder. |
| - Dart_PostMessageCallback callback = isolate->post_message_callback(); |
| - ASSERT(callback); |
| - bool result = |
| - (*callback)(Api::CastIsolate(isolate), dest_port, reply_port, message); |
| - |
| + isolate->PostMessage(message); |
| mutex_->Unlock(); |
| - return result; |
| + return true; |
| } |