Chromium Code Reviews| OLD | NEW |
|---|---|
| 1 // Copyright (c) 2013, the Dart project authors. Please see the AUTHORS file | 1 // Copyright (c) 2013, the Dart project authors. Please see the AUTHORS file |
| 2 // for details. All rights reserved. Use of this source code is governed by a | 2 // for details. All rights reserved. Use of this source code is governed by a |
| 3 // BSD-style license that can be found in the LICENSE file. | 3 // BSD-style license that can be found in the LICENSE file. |
| 4 | 4 |
| 5 #include "include/dart_api.h" | 5 #include "include/dart_api.h" |
| 6 #include "include/dart_mirrors_api.h" | 6 #include "include/dart_mirrors_api.h" |
| 7 #include "include/dart_native_api.h" | 7 #include "include/dart_native_api.h" |
| 8 | 8 |
| 9 #include "platform/assert.h" | 9 #include "platform/assert.h" |
| 10 #include "vm/bigint_operations.h" | 10 #include "vm/bigint_operations.h" |
| (...skipping 1171 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
| 1182 | 1182 |
| 1183 | 1183 |
| 1184 DART_EXPORT Dart_Handle Dart_NewSendPort(Dart_Port port_id) { | 1184 DART_EXPORT Dart_Handle Dart_NewSendPort(Dart_Port port_id) { |
| 1185 Isolate* isolate = Isolate::Current(); | 1185 Isolate* isolate = Isolate::Current(); |
| 1186 DARTSCOPE(isolate); | 1186 DARTSCOPE(isolate); |
| 1187 CHECK_CALLBACK_STATE(isolate); | 1187 CHECK_CALLBACK_STATE(isolate); |
| 1188 return Api::NewHandle(isolate, DartLibraryCalls::NewSendPort(port_id)); | 1188 return Api::NewHandle(isolate, DartLibraryCalls::NewSendPort(port_id)); |
| 1189 } | 1189 } |
| 1190 | 1190 |
| 1191 | 1191 |
| 1192 DART_EXPORT Dart_Handle Dart_PortGetId(Dart_Handle port, Dart_Port* port_id) { | |
| 1193 Isolate* isolate = Isolate::Current(); | |
| 1194 DARTSCOPE(isolate); | |
| 1195 CHECK_CALLBACK_STATE(isolate); | |
| 1196 Instance& port_instance = Instance::Handle(isolate); | |
| 1197 port_instance ^= Api::UnwrapHandle(port); | |
|
siva
2014/03/25 23:42:51
Maybe you should use:
const Instance& port_instan
Ivan Posva
2014/03/26 17:17:31
Done.
| |
| 1198 if (!DartLibraryCalls::IsSendPort(port_instance) && | |
| 1199 !DartLibraryCalls::IsReceivePort(port_instance)) { | |
| 1200 return Api::NewError("expected an instance of RawReceivePort or SendPort."); | |
| 1201 } | |
| 1202 const Object& idObj = Object::Handle( | |
| 1203 DartLibraryCalls::PortGetId(port_instance)); | |
| 1204 ASSERT(!idObj.IsError()); | |
|
siva
2014/03/25 23:42:51
ASSERT(idObj.IsInteger());
const Integer id = Inte
Ivan Posva
2014/03/26 17:17:31
Done.
| |
| 1205 Integer& id = Integer::Handle(); | |
| 1206 id ^= idObj.raw(); | |
| 1207 *port_id = static_cast<Dart_Port>(id.AsInt64Value()); | |
| 1208 return Api::Success(); | |
| 1209 } | |
| 1210 | |
| 1211 | |
| 1192 DART_EXPORT Dart_Handle Dart_GetReceivePort(Dart_Port port_id) { | 1212 DART_EXPORT Dart_Handle Dart_GetReceivePort(Dart_Port port_id) { |
| 1193 Isolate* isolate = Isolate::Current(); | 1213 Isolate* isolate = Isolate::Current(); |
| 1194 DARTSCOPE(isolate); | 1214 DARTSCOPE(isolate); |
| 1195 CHECK_CALLBACK_STATE(isolate); | 1215 CHECK_CALLBACK_STATE(isolate); |
| 1196 | 1216 |
| 1197 Library& isolate_lib = Library::Handle(isolate, Library::IsolateLibrary()); | 1217 Library& isolate_lib = Library::Handle(isolate, Library::IsolateLibrary()); |
| 1198 ASSERT(!isolate_lib.IsNull()); | 1218 ASSERT(!isolate_lib.IsNull()); |
| 1199 const String& class_name = String::Handle( | 1219 const String& class_name = String::Handle( |
| 1200 isolate, isolate_lib.PrivateName(Symbols::_RawReceivePortImpl())); | 1220 isolate, isolate_lib.PrivateName(Symbols::_RawReceivePortImpl())); |
| 1201 // TODO(asiva): Symbols should contain private keys. | 1221 // TODO(asiva): Symbols should contain private keys. |
| 1202 const String& function_name = | 1222 const String& function_name = |
| 1203 String::Handle(isolate_lib.PrivateName(Symbols::_get_or_create())); | 1223 String::Handle(isolate_lib.PrivateName(Symbols::_get())); |
| 1204 const int kNumArguments = 1; | 1224 const int kNumArguments = 1; |
| 1205 const Function& function = Function::Handle( | 1225 const Function& function = Function::Handle( |
| 1206 isolate, | 1226 isolate, |
| 1207 Resolver::ResolveStatic(isolate_lib, | 1227 Resolver::ResolveStatic(isolate_lib, |
| 1208 class_name, | 1228 class_name, |
| 1209 function_name, | 1229 function_name, |
| 1210 kNumArguments, | 1230 kNumArguments, |
| 1211 Object::empty_array())); | 1231 Object::empty_array())); |
| 1212 ASSERT(!function.IsNull()); | 1232 ASSERT(!function.IsNull()); |
| 1213 const Array& args = Array::Handle(isolate, Array::New(kNumArguments)); | 1233 const Array& args = Array::Handle(isolate, Array::New(kNumArguments)); |
| (...skipping 3426 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
| 4640 | 4660 |
| 4641 | 4661 |
| 4642 DART_EXPORT void Dart_RegisterRootServiceRequestCallback( | 4662 DART_EXPORT void Dart_RegisterRootServiceRequestCallback( |
| 4643 const char* name, | 4663 const char* name, |
| 4644 Dart_ServiceRequestCallback callback, | 4664 Dart_ServiceRequestCallback callback, |
| 4645 void* user_data) { | 4665 void* user_data) { |
| 4646 Service::RegisterRootEmbedderCallback(name, callback, user_data); | 4666 Service::RegisterRootEmbedderCallback(name, callback, user_data); |
| 4647 } | 4667 } |
| 4648 | 4668 |
| 4649 } // namespace dart | 4669 } // namespace dart |
| OLD | NEW |