Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(1967)

Unified Diff: bin/builtin_in.cc

Issue 8537023: Implement automatic loading of dart:core_native_fields library (Closed) Base URL: http://dart.googlecode.com/svn/branches/bleeding_edge/dart/runtime/
Patch Set: '' Created 9 years, 1 month ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View side-by-side diff with in-line comments
Download patch
« no previous file with comments | « bin/builtin.dart ('k') | bin/dartutils.h » ('j') | bin/dartutils.cc » ('J')
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
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));
+ }
}
« no previous file with comments | « bin/builtin.dart ('k') | bin/dartutils.h » ('j') | bin/dartutils.cc » ('J')

Powered by Google App Engine
This is Rietveld 408576698