Chromium Code Reviews| Index: runtime/vm/dart_api_impl.cc |
| diff --git a/runtime/vm/dart_api_impl.cc b/runtime/vm/dart_api_impl.cc |
| index f607b189a0cd005500ddd7ce5959c4976a70e346..868a920c9f11428d8546d210d706530dccf6060e 100644 |
| --- a/runtime/vm/dart_api_impl.cc |
| +++ b/runtime/vm/dart_api_impl.cc |
| @@ -1587,7 +1587,15 @@ DART_EXPORT bool Dart_Post(Dart_Port port_id, Dart_Handle handle) { |
| if (port_id == ILLEGAL_PORT) { |
| return false; |
| } |
| - const Object& object = Object::Handle(Z, Api::UnwrapHandle(handle)); |
| + |
| + // Smis and null can be sent without serialization. |
| + RawObject* raw_obj = Api::UnwrapHandle(handle); |
|
Ivan Posva
2015/12/11 21:02:38
Please make sure that this code is wrapped in a No
zra
2015/12/11 22:01:30
Done.
|
| + if (ApiObjectConverter::CanConvert(raw_obj)) { |
| + return PortMap::PostMessage(new Message( |
| + port_id, raw_obj, Message::kNormalPriority)); |
| + } |
| + |
| + const Object& object = Object::Handle(Z, raw_obj); |
| uint8_t* data = NULL; |
| MessageWriter writer(&data, &allocator, false); |
| writer.WriteMessage(object); |