| OLD | NEW |
| 1 // Copyright (c) 2015, the Dart project authors. Please see the AUTHORS file | 1 // Copyright (c) 2015, 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 <stdio.h> | 5 #include <stdio.h> |
| 6 | 6 |
| 7 #include "include/dart_api.h" | 7 #include "include/dart_api.h" |
| 8 | 8 |
| 9 #include "bin/builtin.h" | 9 #include "bin/builtin.h" |
| 10 #include "bin/dartutils.h" | 10 #include "bin/dartutils.h" |
| 11 #include "bin/platform.h" | 11 #include "bin/platform.h" |
| 12 | 12 |
| 13 // Return the error from the containing function if handle is in error handle. | 13 // Return the error from the containing function if handle is in error handle. |
| 14 #define RETURN_IF_ERROR(handle) \ | 14 #define RETURN_IF_ERROR(handle) \ |
| 15 { \ | 15 { \ |
| 16 Dart_Handle __handle = handle; \ | 16 Dart_Handle __handle = handle; \ |
| 17 if (Dart_IsError((__handle))) { \ | 17 if (Dart_IsError((__handle))) { \ |
| 18 return __handle; \ | 18 return __handle; \ |
| 19 } \ | 19 } \ |
| 20 } | 20 } |
| 21 | 21 |
| 22 namespace dart { | 22 namespace dart { |
| 23 namespace bin { | 23 namespace bin { |
| 24 | 24 |
| 25 Dart_Handle Builtin::SetLoadPort(Dart_Port port) { | 25 Dart_Handle Builtin::SetLoadPort(Dart_Port port) { |
| 26 Dart_Handle builtin_lib = |
| 27 Builtin::LoadAndCheckLibrary(Builtin::kBuiltinLibrary); |
| 28 RETURN_IF_ERROR(builtin_lib); |
| 29 // Set the _isolateId field. |
| 30 Dart_Handle result = Dart_SetField(builtin_lib, |
| 31 DartUtils::NewString("_isolateId"), |
| 32 Dart_NewInteger(Dart_GetMainPortId())); |
| 33 RETURN_IF_ERROR(result); |
| 26 load_port_ = port; | 34 load_port_ = port; |
| 27 ASSERT(load_port_ != ILLEGAL_PORT); | 35 ASSERT(load_port_ != ILLEGAL_PORT); |
| 28 Dart_Handle field_name = DartUtils::NewString("_loadPort"); | 36 Dart_Handle field_name = DartUtils::NewString("_loadPort"); |
| 29 RETURN_IF_ERROR(field_name); | 37 RETURN_IF_ERROR(field_name); |
| 30 Dart_Handle builtin_lib = | |
| 31 Builtin::LoadAndCheckLibrary(Builtin::kBuiltinLibrary); | |
| 32 RETURN_IF_ERROR(builtin_lib); | |
| 33 Dart_Handle send_port = Dart_GetField(builtin_lib, field_name); | 38 Dart_Handle send_port = Dart_GetField(builtin_lib, field_name); |
| 34 RETURN_IF_ERROR(send_port); | 39 RETURN_IF_ERROR(send_port); |
| 35 if (!Dart_IsNull(send_port)) { | 40 if (!Dart_IsNull(send_port)) { |
| 36 // Already created and set. | 41 // Already created and set. |
| 37 return Dart_True(); | 42 return Dart_True(); |
| 38 } | 43 } |
| 39 send_port = Dart_NewSendPort(load_port_); | 44 send_port = Dart_NewSendPort(load_port_); |
| 40 RETURN_IF_ERROR(send_port); | 45 RETURN_IF_ERROR(send_port); |
| 41 Dart_Handle result = Dart_SetField(builtin_lib, field_name, send_port); | 46 result = Dart_SetField(builtin_lib, field_name, send_port); |
| 42 RETURN_IF_ERROR(result); | 47 RETURN_IF_ERROR(result); |
| 43 return Dart_True(); | 48 return Dart_True(); |
| 44 } | 49 } |
| 45 | 50 |
| 46 } // namespace bin | 51 } // namespace bin |
| 47 } // namespace dart | 52 } // namespace dart |
| OLD | NEW |