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

Side by Side Diff: vm/snapshot.cc

Issue 9124012: - Pass in the isolate parameter when creating handles. (Closed) Base URL: http://dart.googlecode.com/svn/branches/bleeding_edge/dart/runtime/
Patch Set: '' Created 8 years, 11 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 | Annotate | Revision Log
« no previous file with comments | « vm/snapshot.h ('k') | vm/snapshot_test.cc » ('j') | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
OLDNEW
1 // Copyright (c) 2011, the Dart project authors. Please see the AUTHORS file 1 // Copyright (c) 2011, 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/snapshot.h" 5 #include "vm/snapshot.h"
6 6
7 #include "vm/assert.h" 7 #include "vm/assert.h"
8 #include "vm/bootstrap.h" 8 #include "vm/bootstrap.h"
9 #include "vm/heap.h" 9 #include "vm/heap.h"
10 #include "vm/object.h" 10 #include "vm/object.h"
(...skipping 49 matching lines...) Expand 10 before | Expand all | Expand 10 after
60 ASSERT((value <= kIntptrMax) && (value >= kIntptrMin)); 60 ASSERT((value <= kIntptrMax) && (value >= kIntptrMin));
61 return ReadObjectImpl(value); 61 return ReadObjectImpl(value);
62 } 62 }
63 63
64 64
65 RawClass* SnapshotReader::ReadClassId(intptr_t object_id) { 65 RawClass* SnapshotReader::ReadClassId(intptr_t object_id) {
66 ASSERT(kind_ != Snapshot::kFull); 66 ASSERT(kind_ != Snapshot::kFull);
67 // Read the class header information and lookup the class. 67 // Read the class header information and lookup the class.
68 intptr_t class_header = ReadIntptrValue(); 68 intptr_t class_header = ReadIntptrValue();
69 ASSERT((class_header & kSmiTagMask) != 0); 69 ASSERT((class_header & kSmiTagMask) != 0);
70 Class& cls = Class::ZoneHandle(); 70 Class& cls = Class::ZoneHandle(isolate(), Class::null());
71 cls ^= LookupInternalClass(class_header); 71 cls ^= LookupInternalClass(class_header);
72 AddBackwardReference(object_id, &cls); 72 AddBackwardReference(object_id, &cls);
73 if (cls.IsNull()) { 73 if (cls.IsNull()) {
74 // Read the library/class information and lookup the class. 74 // Read the library/class information and lookup the class.
75 String& library_url = String::Handle(); 75 String& library_url = String::Handle(isolate(), String::null());
76 library_url ^= ReadObjectImpl(class_header); 76 library_url ^= ReadObjectImpl(class_header);
77 String& class_name = String::Handle(); 77 String& class_name = String::Handle(isolate(), String::null());
78 class_name ^= ReadObject(); 78 class_name ^= ReadObject();
79 const Library& library = 79 const Library& library =
80 Library::Handle(Library::LookupLibrary(library_url)); 80 Library::Handle(isolate(), Library::LookupLibrary(library_url));
81 ASSERT(!library.IsNull()); 81 ASSERT(!library.IsNull());
82 cls ^= library.LookupClass(class_name); 82 cls ^= library.LookupClass(class_name);
83 } 83 }
84 ASSERT(!cls.IsNull()); 84 ASSERT(!cls.IsNull());
85 return cls.raw(); 85 return cls.raw();
86 } 86 }
87 87
88 88
89 void SnapshotReader::AddBackwardReference(intptr_t id, Object* obj) { 89 void SnapshotReader::AddBackwardReference(intptr_t id, Object* obj) {
90 ASSERT((id - kMaxPredefinedObjectIds) == backward_references_.length()); 90 ASSERT((id - kMaxPredefinedObjectIds) == backward_references_.length());
(...skipping 74 matching lines...) Expand 10 before | Expand all | Expand 10 after
165 intptr_t index = object_id - kMaxPredefinedObjectIds; 165 intptr_t index = object_id - kMaxPredefinedObjectIds;
166 ASSERT(index < backward_references_.length()); 166 ASSERT(index < backward_references_.length());
167 return backward_references_[index]->raw(); 167 return backward_references_[index]->raw();
168 } 168 }
169 169
170 170
171 RawObject* SnapshotReader::ReadInlinedObject(intptr_t object_id) { 171 RawObject* SnapshotReader::ReadInlinedObject(intptr_t object_id) {
172 // Read the class header information and lookup the class. 172 // Read the class header information and lookup the class.
173 intptr_t class_header = ReadIntptrValue(); 173 intptr_t class_header = ReadIntptrValue();
174 intptr_t tags = ReadIntptrValue(); 174 intptr_t tags = ReadIntptrValue();
175 Class& cls = Class::Handle(); 175 Class& cls = Class::Handle(isolate(), Class::null());
176 Object& obj = Object::Handle(); 176 Object& obj = Object::Handle(isolate(), Object::null());
177 if (SerializedHeaderData::decode(class_header) == kInstanceId) { 177 if (SerializedHeaderData::decode(class_header) == kInstanceId) {
178 // Object is regular dart instance. 178 // Object is regular dart instance.
179 Instance& result = Instance::ZoneHandle(); 179 Instance& result = Instance::ZoneHandle(isolate(), Instance::null());
180 AddBackwardReference(object_id, &result); 180 AddBackwardReference(object_id, &result);
181 181
182 cls ^= ReadObject(); 182 cls ^= ReadObject();
183 ASSERT(!cls.IsNull()); 183 ASSERT(!cls.IsNull());
184 intptr_t instance_size = cls.instance_size(); 184 intptr_t instance_size = cls.instance_size();
185 ASSERT(instance_size > 0); 185 ASSERT(instance_size > 0);
186 // Allocate the instance and read in all the fields for the object. 186 // Allocate the instance and read in all the fields for the object.
187 RawObject* raw = Object::Allocate(cls, instance_size, Heap::kNew); 187 RawObject* raw = Object::Allocate(cls, instance_size, Heap::kNew);
188 result ^= raw; 188 result ^= raw;
189 intptr_t offset = Object::InstanceSize(); 189 intptr_t offset = Object::InstanceSize();
(...skipping 255 matching lines...) Expand 10 before | Expand all | Expand 10 after
445 445
446 446
447 void SnapshotWriterVisitor::VisitPointers(RawObject** first, RawObject** last) { 447 void SnapshotWriterVisitor::VisitPointers(RawObject** first, RawObject** last) {
448 for (RawObject** current = first; current <= last; current++) { 448 for (RawObject** current = first; current <= last; current++) {
449 RawObject* raw_obj = *current; 449 RawObject* raw_obj = *current;
450 writer_->WriteObject(raw_obj); 450 writer_->WriteObject(raw_obj);
451 } 451 }
452 } 452 }
453 453
454 } // namespace dart 454 } // namespace dart
OLDNEW
« no previous file with comments | « vm/snapshot.h ('k') | vm/snapshot_test.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698