Chromium Code Reviews| 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)); |
| + } |
| } |