Index: bin/builtin_in.cc |
=================================================================== |
--- bin/builtin_in.cc (revision 1465) |
+++ bin/builtin_in.cc (working copy) |
@@ -92,51 +92,52 @@ |
} |
-void Builtin_LoadLibrary() { |
- Dart_Handle url = Dart_NewString(DartUtils::kBuiltinLibURL); |
- Dart_Handle result = Dart_LookupLibrary(url); |
- if (Dart_IsValid(result)) { |
- // Builtin library already loaded. |
- return; |
- } |
- |
- // Load the library. |
- Dart_Handle source = Dart_NewString(Builtin_source_); |
- Dart_Handle builtin_lib = Dart_LoadLibrary(url, source); |
- ASSERT(Dart_IsValid(builtin_lib)); |
- |
- // Lookup the core libraries and inject the builtin library into them. |
- Dart_Handle core_lib = Dart_LookupLibrary(Dart_NewString("dart:core")); |
+static void SetupCorelibImports(Dart_Handle builtin_lib) { |
+ // Lookup the core libraries and import the builtin library into them. |
+ Dart_Handle url = Dart_NewString(DartUtils::kCoreLibURL); |
+ Dart_Handle core_lib = Dart_LookupLibrary(url); |
ASSERT(Dart_IsValid(core_lib)); |
Anton Muhin
2011/11/13 16:19:32
you probably need rebase to new API.
siva
2011/11/15 02:16:52
Done.
|
- result = Dart_LibraryImportLibrary(core_lib, builtin_lib); |
+ Dart_Handle result = Dart_LibraryImportLibrary(core_lib, builtin_lib); |
ASSERT(Dart_IsValid(result)); |
- Dart_Handle coreimpl_lib = |
- Dart_LookupLibrary(Dart_NewString("dart:coreimpl")); |
+ url = Dart_NewString(DartUtils::kCoreImplLibURL); |
+ Dart_Handle coreimpl_lib = Dart_LookupLibrary(url); |
ASSERT(Dart_IsValid(coreimpl_lib)); |
result = Dart_LibraryImportLibrary(coreimpl_lib, builtin_lib); |
ASSERT(Dart_IsValid(result)); |
result = Dart_LibraryImportLibrary(builtin_lib, coreimpl_lib); |
ASSERT(Dart_IsValid(result)); |
+} |
- // Create a native wrapper "EventHandlerNativeWrapper" so that we can add a |
- // native field to store the event handle for implementing all |
- // event operations. |
- Dart_Handle name = Dart_NewString("EventHandlerNativeWrapper"); |
- const int kNumEventHandlerFields = 1; |
- result = Dart_CreateNativeWrapperClass(builtin_lib, |
- name, |
- kNumEventHandlerFields); |
- ASSERT(Dart_IsValid(result)); |
+ |
+Dart_Handle Builtin_LoadLibrary(Dart_LibraryTagHandler handler) { |
+ Dart_Handle url = Dart_NewString(DartUtils::kBuiltinLibURL); |
+ Dart_Handle source = Dart_NewString(Builtin_source_); |
+ Dart_Handle builtin_lib = Dart_LoadScript(url, source, handler); |
Anton Muhin
2011/11/13 16:19:32
why Dart_LoadScript here? why not Dart_LoadLibrar
siva
2011/11/15 02:16:52
Yes this is Dart_LoadLibrary.
On 2011/11/13 16:19
|
+ if (Dart_IsValid(builtin_lib)) { |
+ // Setup the native resolver for built in library functions. |
+ Dart_Handle result = Dart_SetNativeResolver(builtin_lib, native_lookup); |
+ ASSERT(Dart_IsValid(result)); |
+ SetupCorelibImports(builtin_lib); |
+ } |
+ return builtin_lib; |
} |
void Builtin_ImportLibrary(Dart_Handle library) { |
- Builtin_LoadLibrary(); |
- |
Dart_Handle url = Dart_NewString(DartUtils::kBuiltinLibURL); |
Dart_Handle builtin_lib = Dart_LookupLibrary(url); |
- ASSERT(Dart_IsValid(builtin_lib)); |
+ if (!Dart_IsValid(builtin_lib)) { |
+ // Load the Builtin library. |
+ Dart_Handle source = Dart_NewString(Builtin_source_); |
+ builtin_lib = Dart_LoadLibrary(url, source); |
+ ASSERT(Dart_IsValid(builtin_lib)); |
+ // Setup the native resolver for built in library functions. |
+ Dart_Handle result = Dart_SetNativeResolver(builtin_lib, native_lookup); |
+ ASSERT(Dart_IsValid(result)); |
+ SetupCorelibImports(builtin_lib); |
+ } |
+ // Import the builtin library into current library. |
Dart_Handle result = Dart_LibraryImportLibrary(library, builtin_lib); |
ASSERT(Dart_IsValid(result)); |
} |
@@ -145,7 +146,9 @@ |
void Builtin_SetNativeResolver() { |
Dart_Handle url = Dart_NewString(DartUtils::kBuiltinLibURL); |
Dart_Handle builtin_lib = Dart_LookupLibrary(url); |
- ASSERT(Dart_IsValid(builtin_lib)); |
- Dart_Handle result = Dart_SetNativeResolver(builtin_lib, native_lookup); |
- ASSERT(Dart_IsValid(result)); |
+ if (Dart_IsValid(builtin_lib)) { |
Anton Muhin
2011/11/13 16:19:32
isn't it an error if one invokes Builtin_SetNative
siva
2011/11/15 02:16:52
True, converted to an assert.
On 2011/11/13 16:19
|
+ // Setup the native resolver for built in library functions. |
+ Dart_Handle result = Dart_SetNativeResolver(builtin_lib, native_lookup); |
+ ASSERT(Dart_IsValid(result)); |
+ } |
} |