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

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

Issue 9325047: Add token index position to classes and types for more accurate error reporting. (Closed) Base URL: http://dart.googlecode.com/svn/branches/bleeding_edge/dart/
Patch Set: '' Created 8 years, 10 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 | « runtime/vm/raw_object.h ('k') | runtime/vm/runtime_entry_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) 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/bigint_operations.h" 5 #include "vm/bigint_operations.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/visitor.h" 9 #include "vm/visitor.h"
10 10
(...skipping 33 matching lines...) Expand 10 before | Expand all | Expand 10 after
44 reader->AddBackwardReference(object_id, &cls); 44 reader->AddBackwardReference(object_id, &cls);
45 45
46 // Set the object tags. 46 // Set the object tags.
47 cls.set_tags(tags); 47 cls.set_tags(tags);
48 48
49 // Set all non object fields. 49 // Set all non object fields.
50 cls.set_instance_size(reader->ReadIntptrValue()); 50 cls.set_instance_size(reader->ReadIntptrValue());
51 cls.set_type_arguments_instance_field_offset(reader->ReadIntptrValue()); 51 cls.set_type_arguments_instance_field_offset(reader->ReadIntptrValue());
52 cls.set_next_field_offset(reader->ReadIntptrValue()); 52 cls.set_next_field_offset(reader->ReadIntptrValue());
53 cls.set_num_native_fields(reader->ReadIntptrValue()); 53 cls.set_num_native_fields(reader->ReadIntptrValue());
54 cls.set_token_index(reader->ReadIntptrValue());
54 cls.set_class_state(reader->Read<int8_t>()); 55 cls.set_class_state(reader->Read<int8_t>());
55 if (reader->Read<bool>()) { 56 if (reader->Read<bool>()) {
56 cls.set_is_const(); 57 cls.set_is_const();
57 } 58 }
58 if (reader->Read<bool>()) { 59 if (reader->Read<bool>()) {
59 cls.set_is_interface(); 60 cls.set_is_interface();
60 } 61 }
61 62
62 // Set all the object fields. 63 // Set all the object fields.
63 // TODO(5411462): Need to assert No GC can happen here, even though 64 // TODO(5411462): Need to assert No GC can happen here, even though
(...skipping 22 matching lines...) Expand all
86 // Write out the class and tags information. 87 // Write out the class and tags information.
87 writer->WriteObjectHeader(Object::kClassClass, ptr()->tags_); 88 writer->WriteObjectHeader(Object::kClassClass, ptr()->tags_);
88 89
89 // Write out all the non object pointer fields. 90 // Write out all the non object pointer fields.
90 // NOTE: cpp_vtable_ is not written. 91 // NOTE: cpp_vtable_ is not written.
91 writer->Write<ObjectKind>(ptr()->instance_kind_); 92 writer->Write<ObjectKind>(ptr()->instance_kind_);
92 writer->WriteIntptrValue(ptr()->instance_size_); 93 writer->WriteIntptrValue(ptr()->instance_size_);
93 writer->WriteIntptrValue(ptr()->type_arguments_instance_field_offset_); 94 writer->WriteIntptrValue(ptr()->type_arguments_instance_field_offset_);
94 writer->WriteIntptrValue(ptr()->next_field_offset_); 95 writer->WriteIntptrValue(ptr()->next_field_offset_);
95 writer->WriteIntptrValue(ptr()->num_native_fields_); 96 writer->WriteIntptrValue(ptr()->num_native_fields_);
97 writer->WriteIntptrValue(ptr()->token_index_);
96 writer->Write<int8_t>(ptr()->class_state_); 98 writer->Write<int8_t>(ptr()->class_state_);
97 writer->Write<bool>(ptr()->is_const_); 99 writer->Write<bool>(ptr()->is_const_);
98 writer->Write<bool>(ptr()->is_interface_); 100 writer->Write<bool>(ptr()->is_interface_);
99 101
100 // Write out all the object pointer fields. 102 // Write out all the object pointer fields.
101 SnapshotWriterVisitor visitor(writer); 103 SnapshotWriterVisitor visitor(writer);
102 visitor.VisitPointers(from(), to()); 104 visitor.VisitPointers(from(), to());
103 } else { 105 } else {
104 writer->WriteClassId(this); 106 writer->WriteClassId(this);
105 } 107 }
(...skipping 73 matching lines...) Expand 10 before | Expand all | Expand 10 after
179 181
180 // Allocate parameterized type object. 182 // Allocate parameterized type object.
181 Type& parameterized_type = Type::ZoneHandle( 183 Type& parameterized_type = Type::ZoneHandle(
182 reader->isolate(), NEW_OBJECT(Type)); 184 reader->isolate(), NEW_OBJECT(Type));
183 reader->AddBackwardReference(object_id, &parameterized_type); 185 reader->AddBackwardReference(object_id, &parameterized_type);
184 186
185 // Set the object tags. 187 // Set the object tags.
186 parameterized_type.set_tags(tags); 188 parameterized_type.set_tags(tags);
187 189
188 // Set all non object fields. 190 // Set all non object fields.
191 parameterized_type.set_token_index(reader->ReadIntptrValue());
189 parameterized_type.set_type_state(reader->Read<int8_t>()); 192 parameterized_type.set_type_state(reader->Read<int8_t>());
190 193
191 // Set all the object fields. 194 // Set all the object fields.
192 // TODO(5411462): Need to assert No GC can happen here, even though 195 // TODO(5411462): Need to assert No GC can happen here, even though
193 // allocations may happen. 196 // allocations may happen.
194 intptr_t num_flds = (parameterized_type.raw()->to() - 197 intptr_t num_flds = (parameterized_type.raw()->to() -
195 parameterized_type.raw()->from()); 198 parameterized_type.raw()->from());
196 for (intptr_t i = 0; i <= num_flds; i++) { 199 for (intptr_t i = 0; i <= num_flds; i++) {
197 *(parameterized_type.raw()->from() + i) = reader->ReadObject(); 200 *(parameterized_type.raw()->from() + i) = reader->ReadObject();
198 } 201 }
(...skipping 11 matching lines...) Expand all
210 Snapshot::Kind kind) { 213 Snapshot::Kind kind) {
211 ASSERT(writer != NULL); 214 ASSERT(writer != NULL);
212 215
213 // Write out the serialization header value for this object. 216 // Write out the serialization header value for this object.
214 writer->WriteSerializationMarker(kInlined, object_id); 217 writer->WriteSerializationMarker(kInlined, object_id);
215 218
216 // Write out the class and tags information. 219 // Write out the class and tags information.
217 writer->WriteObjectHeader(Object::kTypeClass, ptr()->tags_); 220 writer->WriteObjectHeader(Object::kTypeClass, ptr()->tags_);
218 221
219 // Write out all the non object pointer fields. 222 // Write out all the non object pointer fields.
223 writer->WriteIntptrValue(ptr()->token_index_);
220 writer->Write<int8_t>(ptr()->type_state_); 224 writer->Write<int8_t>(ptr()->type_state_);
221 225
222 // Write out all the object pointer fields. 226 // Write out all the object pointer fields.
223 SnapshotWriterVisitor visitor(writer); 227 SnapshotWriterVisitor visitor(writer);
224 visitor.VisitPointers(from(), to()); 228 visitor.VisitPointers(from(), to());
225 } 229 }
226 230
227 231
228 RawTypeParameter* TypeParameter::ReadFrom(SnapshotReader* reader, 232 RawTypeParameter* TypeParameter::ReadFrom(SnapshotReader* reader,
229 intptr_t object_id, 233 intptr_t object_id,
230 intptr_t tags, 234 intptr_t tags,
231 Snapshot::Kind kind) { 235 Snapshot::Kind kind) {
232 ASSERT(reader != NULL); 236 ASSERT(reader != NULL);
233 237
234 // Allocate type parameter object. 238 // Allocate type parameter object.
235 TypeParameter& type_parameter = TypeParameter::ZoneHandle( 239 TypeParameter& type_parameter = TypeParameter::ZoneHandle(
236 reader->isolate(), NEW_OBJECT(TypeParameter)); 240 reader->isolate(), NEW_OBJECT(TypeParameter));
237 reader->AddBackwardReference(object_id, &type_parameter); 241 reader->AddBackwardReference(object_id, &type_parameter);
238 242
239 // Set the object tags. 243 // Set the object tags.
240 type_parameter.set_tags(tags); 244 type_parameter.set_tags(tags);
241 245
242 // Set all non object fields. 246 // Set all non object fields.
243 type_parameter.set_index(reader->ReadIntptrValue()); 247 type_parameter.set_index(reader->ReadIntptrValue());
248 type_parameter.set_token_index(reader->ReadIntptrValue());
244 type_parameter.set_type_state(reader->Read<int8_t>()); 249 type_parameter.set_type_state(reader->Read<int8_t>());
245 250
246 // Set all the object fields. 251 // Set all the object fields.
247 // TODO(5411462): Need to assert No GC can happen here, even though 252 // TODO(5411462): Need to assert No GC can happen here, even though
248 // allocations may happen. 253 // allocations may happen.
249 intptr_t num_flds = (type_parameter.raw()->to() - 254 intptr_t num_flds = (type_parameter.raw()->to() -
250 type_parameter.raw()->from()); 255 type_parameter.raw()->from());
251 for (intptr_t i = 0; i <= num_flds; i++) { 256 for (intptr_t i = 0; i <= num_flds; i++) {
252 *(type_parameter.raw()->from() + i) = reader->ReadObject(); 257 *(type_parameter.raw()->from() + i) = reader->ReadObject();
253 } 258 }
254 259
255 return type_parameter.raw(); 260 return type_parameter.raw();
256 } 261 }
257 262
258 263
259 void RawTypeParameter::WriteTo(SnapshotWriter* writer, 264 void RawTypeParameter::WriteTo(SnapshotWriter* writer,
260 intptr_t object_id, 265 intptr_t object_id,
261 Snapshot::Kind kind) { 266 Snapshot::Kind kind) {
262 ASSERT(writer != NULL); 267 ASSERT(writer != NULL);
263 268
264 // Write out the serialization header value for this object. 269 // Write out the serialization header value for this object.
265 writer->WriteSerializationMarker(kInlined, object_id); 270 writer->WriteSerializationMarker(kInlined, object_id);
266 271
267 // Write out the class and tags information. 272 // Write out the class and tags information.
268 writer->WriteObjectHeader(Object::kTypeParameterClass, ptr()->tags_); 273 writer->WriteObjectHeader(Object::kTypeParameterClass, ptr()->tags_);
269 274
270 // Write out all the non object pointer fields. 275 // Write out all the non object pointer fields.
271 writer->WriteIntptrValue(ptr()->index_); 276 writer->WriteIntptrValue(ptr()->index_);
277 writer->WriteIntptrValue(ptr()->token_index_);
272 writer->Write<int8_t>(ptr()->type_state_); 278 writer->Write<int8_t>(ptr()->type_state_);
273 279
274 // Write out all the object pointer fields. 280 // Write out all the object pointer fields.
275 SnapshotWriterVisitor visitor(writer); 281 SnapshotWriterVisitor visitor(writer);
276 visitor.VisitPointers(from(), to()); 282 visitor.VisitPointers(from(), to());
277 } 283 }
278 284
279 285
280 RawInstantiatedType* InstantiatedType::ReadFrom(SnapshotReader* reader, 286 RawInstantiatedType* InstantiatedType::ReadFrom(SnapshotReader* reader,
281 intptr_t object_id, 287 intptr_t object_id,
(...skipping 1536 matching lines...) Expand 10 before | Expand all | Expand 10 after
1818 // Write out all the other fields. 1824 // Write out all the other fields.
1819 writer->Write<RawObject*>(ptr()->num_bracket_expressions_); 1825 writer->Write<RawObject*>(ptr()->num_bracket_expressions_);
1820 writer->WriteObject(ptr()->pattern_); 1826 writer->WriteObject(ptr()->pattern_);
1821 writer->WriteIntptrValue(ptr()->type_); 1827 writer->WriteIntptrValue(ptr()->type_);
1822 writer->WriteIntptrValue(ptr()->flags_); 1828 writer->WriteIntptrValue(ptr()->flags_);
1823 1829
1824 // Do not write out the data part which is native. 1830 // Do not write out the data part which is native.
1825 } 1831 }
1826 1832
1827 } // namespace dart 1833 } // namespace dart
OLDNEW
« no previous file with comments | « runtime/vm/raw_object.h ('k') | runtime/vm/runtime_entry_test.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698