Chromium Code Reviews| Index: runtime/bin/gen_snapshot.cc |
| diff --git a/runtime/bin/gen_snapshot.cc b/runtime/bin/gen_snapshot.cc |
| index 41d71f10f2fffcf99707adf9711a9d926afa5b32..f30840daf401b3813e7b152c532607b0e4e848c7 100644 |
| --- a/runtime/bin/gen_snapshot.cc |
| +++ b/runtime/bin/gen_snapshot.cc |
| @@ -292,19 +292,41 @@ static Dart_Handle CreateSnapshotLibraryTagHandler(Dart_LibraryTag tag, |
| const char* mapped_url_string = DartUtils::MapLibraryUrl(url_mapping, |
| url_string); |
| + Builtin::BuiltinLibraryId builtinLibraryId = Builtin::kInvalidLibrary; |
| + if (DartUtils::IsDartBuiltinLibURL(library_url_string)) { |
| + builtinLibraryId = Builtin::kBuiltinLibrary; |
| + } else if (DartUtils::IsDartIOLibURL(library_url_string)) { |
| + builtinLibraryId = Builtin::kIOLibrary; |
| + } |
| + |
| if (tag == kCanonicalizeUrl) { |
| // Keep original names for libraries that have a mapping (e.g. dart:io). |
|
siva
2013/05/21 16:45:37
The comment (e.g: dart:io) seems wrong because you
podivilov
2013/05/22 08:54:44
Done.
|
| if (mapped_url_string) { |
| return url; |
| } |
| + // Parts of internal libraries are handled internally. |
| + if (builtinLibraryId != Builtin::kInvalidLibrary) { |
| + return url; |
| + } |
| return ResolveUri(library_url_string, url_string); |
| } |
| - if (DartUtils::IsDartIOLibURL(url_string) && mapped_url_string == NULL) { |
| - // No url mapping for dart:io. Load original version. |
| + if (DartUtils::IsDartBuiltinLibURL(url_string)) { |
| + return Builtin::LoadAndCheckLibrary(Builtin::kBuiltinLibrary); |
|
siva
2013/05/21 16:45:37
You probably need a
if (tag == kImportTag) {
ret
podivilov
2013/05/22 08:54:44
Done.
|
| + } |
| + if (DartUtils::IsDartIOLibURL(url_string)) { |
| return Builtin::LoadAndCheckLibrary(Builtin::kIOLibrary); |
|
siva
2013/05/21 16:45:37
Ditto comment here.
podivilov
2013/05/22 08:54:44
Done.
|
| } |
| + if (builtinLibraryId != Builtin::kInvalidLibrary) { |
| + if (tag == kSourceTag) { |
| + return Dart_LoadSource( |
| + library, url, Builtin::PartSource(builtinLibraryId, url_string)); |
| + } |
| + ASSERT(tag == kImportTag); |
| + return Dart_Error("Unable to import '%s' ", url_string); |
| + } |
| + |
| Dart_Handle resolved_url = url; |
| if (mapped_url_string != NULL) { |
| // Mapped urls are relative to working directory. |