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

Side by Side Diff: runtime/vm/raw_object_snapshot.cc

Issue 1955453002: - Use a map to lookup libraries by URL. (Closed) Base URL: git@github.com:dart-lang/sdk.git@master
Patch Set: Fix precompiler handling. Created 4 years, 7 months 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 unified diff | Download patch
OLDNEW
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 "vm/native_entry.h" 5 #include "vm/native_entry.h"
6 #include "vm/object.h" 6 #include "vm/object.h"
7 #include "vm/object_store.h" 7 #include "vm/object_store.h"
8 #include "vm/snapshot.h" 8 #include "vm/snapshot.h"
9 #include "vm/stub_code.h" 9 #include "vm/stub_code.h"
10 #include "vm/symbols.h" 10 #include "vm/symbols.h"
(...skipping 1114 matching lines...) Expand 10 before | Expand all | Expand 10 after
1125 ASSERT(reader != NULL); 1125 ASSERT(reader != NULL);
1126 ASSERT(kind != Snapshot::kMessage); 1126 ASSERT(kind != Snapshot::kMessage);
1127 1127
1128 Library& library = Library::ZoneHandle(reader->zone(), Library::null()); 1128 Library& library = Library::ZoneHandle(reader->zone(), Library::null());
1129 reader->AddBackRef(object_id, &library, kIsDeserialized); 1129 reader->AddBackRef(object_id, &library, kIsDeserialized);
1130 1130
1131 bool is_in_fullsnapshot = reader->Read<bool>(); 1131 bool is_in_fullsnapshot = reader->Read<bool>();
1132 if ((kind == Snapshot::kScript) && is_in_fullsnapshot) { 1132 if ((kind == Snapshot::kScript) && is_in_fullsnapshot) {
1133 // Lookup the object as it should already exist in the heap. 1133 // Lookup the object as it should already exist in the heap.
1134 *reader->StringHandle() ^= reader->ReadObjectImpl(kAsInlinedObject); 1134 *reader->StringHandle() ^= reader->ReadObjectImpl(kAsInlinedObject);
1135 library = Library::LookupLibrary(*reader->StringHandle()); 1135 library = Library::LookupLibrary(reader->thread(), *reader->StringHandle());
1136 ASSERT(library.is_in_fullsnapshot()); 1136 ASSERT(library.is_in_fullsnapshot());
1137 } else { 1137 } else {
1138 // Allocate library object. 1138 // Allocate library object.
1139 library = NEW_OBJECT(Library); 1139 library = NEW_OBJECT(Library);
1140 1140
1141 // Set all non object fields. 1141 // Set all non object fields.
1142 library.StoreNonPointer(&library.raw_ptr()->index_, 1142 library.StoreNonPointer(&library.raw_ptr()->index_,
1143 reader->ReadClassIDValue()); 1143 reader->ReadClassIDValue());
1144 library.StoreNonPointer(&library.raw_ptr()->num_imports_, 1144 library.StoreNonPointer(&library.raw_ptr()->num_imports_,
1145 reader->Read<uint16_t>()); 1145 reader->Read<uint16_t>());
(...skipping 21 matching lines...) Expand all
1167 for (intptr_t i = 0; i <= num_flds; i++) { 1167 for (intptr_t i = 0; i <= num_flds; i++) {
1168 (*reader->PassiveObjectHandle()) = reader->ReadObjectImpl(kAsReference); 1168 (*reader->PassiveObjectHandle()) = reader->ReadObjectImpl(kAsReference);
1169 library.StorePointer((library.raw()->from() + i), 1169 library.StorePointer((library.raw()->from() + i),
1170 reader->PassiveObjectHandle()->raw()); 1170 reader->PassiveObjectHandle()->raw());
1171 } 1171 }
1172 // Initialize cache of resolved names. 1172 // Initialize cache of resolved names.
1173 const intptr_t kInitialNameCacheSize = 64; 1173 const intptr_t kInitialNameCacheSize = 64;
1174 if (!Snapshot::IsFull(kind)) { 1174 if (!Snapshot::IsFull(kind)) {
1175 // The cache of resolved names in library scope is not serialized. 1175 // The cache of resolved names in library scope is not serialized.
1176 library.InitResolvedNamesCache(kInitialNameCacheSize); 1176 library.InitResolvedNamesCache(kInitialNameCacheSize);
1177 library.Register(); 1177 library.Register(reader->thread());
1178 } else { 1178 } else {
1179 library.InitResolvedNamesCache(kInitialNameCacheSize, reader); 1179 library.InitResolvedNamesCache(kInitialNameCacheSize, reader);
1180 } 1180 }
1181 library.StorePointer(&library.raw_ptr()->exported_names_, Array::null()); 1181 library.StorePointer(&library.raw_ptr()->exported_names_, Array::null());
1182 // Initialize cache of loaded scripts. 1182 // Initialize cache of loaded scripts.
1183 library.StorePointer(&library.raw_ptr()->loaded_scripts_, Array::null()); 1183 library.StorePointer(&library.raw_ptr()->loaded_scripts_, Array::null());
1184 } 1184 }
1185 return library.raw(); 1185 return library.raw();
1186 } 1186 }
1187 1187
(...skipping 2515 matching lines...) Expand 10 before | Expand all | Expand 10 after
3703 // We do not allow objects with native fields in an isolate message. 3703 // We do not allow objects with native fields in an isolate message.
3704 writer->SetWriteException(Exceptions::kArgument, 3704 writer->SetWriteException(Exceptions::kArgument,
3705 "Illegal argument in isolate message" 3705 "Illegal argument in isolate message"
3706 " : (object is a UserTag)"); 3706 " : (object is a UserTag)");
3707 } else { 3707 } else {
3708 UNREACHABLE(); 3708 UNREACHABLE();
3709 } 3709 }
3710 } 3710 }
3711 3711
3712 } // namespace dart 3712 } // namespace dart
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698