OLD | NEW |
---|---|
1 // Copyright (c) 2012, the Dart project authors. Please see the AUTHORS file | 1 // Copyright (c) 2012, 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/io_natives.h" | 11 #include "bin/io_natives.h" |
12 | 12 |
13 | 13 |
14 namespace dart { | 14 namespace dart { |
15 namespace bin { | 15 namespace bin { |
16 | 16 |
17 Builtin::builtin_lib_props Builtin::builtin_libraries_[] = { | 17 Builtin::builtin_lib_props Builtin::builtin_libraries_[] = { |
18 /* { url_, source_, patch_url_, patch_source_, has_natives_ } */ | 18 /* { url_, source_, patch_url_, patch_source_, has_natives_ } */ |
19 { DartUtils::kBuiltinLibURL, NULL, NULL, NULL, true }, | 19 { DartUtils::kBuiltinLibURL, NULL, NULL, NULL, true }, |
20 { DartUtils::kIOLibURL, NULL, NULL, NULL, true }, | 20 { DartUtils::kIOLibURL, NULL, NULL, NULL, true }, |
21 }; | 21 }; |
22 | 22 |
23 Dart_Port Builtin::load_port_ = ILLEGAL_PORT; | |
23 | 24 |
24 Dart_Handle Builtin::Source(BuiltinLibraryId id) { | 25 Dart_Handle Builtin::Source(BuiltinLibraryId id) { |
25 return DartUtils::NewError("Unreachable code in Builtin::Source (%d).", id); | 26 return DartUtils::NewError("Unreachable code in Builtin::Source (%d).", id); |
26 } | 27 } |
27 | 28 |
28 | 29 |
29 Dart_Handle Builtin::PartSource(BuiltinLibraryId id, const char* uri) { | 30 Dart_Handle Builtin::PartSource(BuiltinLibraryId id, const char* uri) { |
30 return DartUtils::NewError( | 31 return DartUtils::NewError( |
31 "Unreachable code in Builtin::PartSource (%d).", id); | 32 "Unreachable code in Builtin::PartSource (%d).", id); |
32 } | 33 } |
(...skipping 29 matching lines...) Expand all Loading... | |
62 Dart_Handle Builtin::LoadAndCheckLibrary(BuiltinLibraryId id) { | 63 Dart_Handle Builtin::LoadAndCheckLibrary(BuiltinLibraryId id) { |
63 ASSERT((sizeof(builtin_libraries_) / sizeof(builtin_lib_props)) == | 64 ASSERT((sizeof(builtin_libraries_) / sizeof(builtin_lib_props)) == |
64 kInvalidLibrary); | 65 kInvalidLibrary); |
65 ASSERT(id >= kBuiltinLibrary && id < kInvalidLibrary); | 66 ASSERT(id >= kBuiltinLibrary && id < kInvalidLibrary); |
66 Dart_Handle url = DartUtils::NewString(builtin_libraries_[id].url_); | 67 Dart_Handle url = DartUtils::NewString(builtin_libraries_[id].url_); |
67 Dart_Handle library = Dart_LookupLibrary(url); | 68 Dart_Handle library = Dart_LookupLibrary(url); |
68 DART_CHECK_VALID(library); | 69 DART_CHECK_VALID(library); |
69 return library; | 70 return library; |
70 } | 71 } |
71 | 72 |
73 | |
74 void Builtin::SetLoadPort(Dart_Port port) { | |
75 load_port_ = port; | |
76 ASSERT(load_port_ != ILLEGAL_PORT); | |
77 Dart_Handle field_name = DartUtils::NewString("_loadPort"); | |
78 ASSERT(!Dart_IsError(field_name)); | |
79 Dart_Handle builtin_lib = | |
80 Builtin::LoadAndCheckLibrary(Builtin::kBuiltinLibrary); | |
81 ASSERT(!Dart_IsError(builtin_lib)); | |
82 Dart_Handle send_port = Dart_GetField(builtin_lib, field_name); | |
83 ASSERT(!Dart_IsError(send_port)); | |
84 if (!Dart_IsNull(send_port)) { | |
85 // Already created and set. | |
86 return; | |
87 } | |
88 send_port = Dart_NewSendPort(load_port_); | |
89 ASSERT(!Dart_IsError(send_port)); | |
90 Dart_Handle result = Dart_SetField(builtin_lib, field_name, send_port); | |
91 ASSERT(!Dart_IsError(result)); | |
siva
2015/01/22 22:39:31
This code seems to be identical to the one in buil
Cutch
2015/01/26 18:59:30
Done.
| |
92 } | |
93 | |
72 } // namespace bin | 94 } // namespace bin |
73 } // namespace dart | 95 } // namespace dart |
OLD | NEW |