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

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

Issue 2849803002: Revert "Add typedef AST node boilerplate." (Closed)
Patch Set: Created 3 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
« no previous file with comments | « runtime/vm/kernel_binary.h ('k') | no next file » | 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) 2016, the Dart project authors. Please see the AUTHORS file 1 // Copyright (c) 2016, 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 #if !defined(DART_PRECOMPILED_RUNTIME) 4 #if !defined(DART_PRECOMPILED_RUNTIME)
5 5
6 #include "vm/kernel_binary.h" 6 #include "vm/kernel_binary.h"
7 #include "platform/globals.h" 7 #include "platform/globals.h"
8 #include "vm/flags.h" 8 #include "vm/flags.h"
9 #include "vm/growable_array.h" 9 #include "vm/growable_array.h"
10 #include "vm/kernel.h" 10 #include "vm/kernel.h"
(...skipping 197 matching lines...) Expand 10 before | Expand all | Expand 10 after
208 canonical_name_ = reader->ReadCanonicalNameReference(); 208 canonical_name_ = reader->ReadCanonicalNameReference();
209 name_ = Reference::ReadStringFrom(reader); 209 name_ = Reference::ReadStringFrom(reader);
210 import_uri_ = canonical_name_->name(); 210 import_uri_ = canonical_name_->name();
211 source_uri_index_ = reader->ReadUInt(); 211 source_uri_index_ = reader->ReadUInt();
212 reader->set_current_script_id(source_uri_index_); 212 reader->set_current_script_id(source_uri_index_);
213 213
214 int num_imports = reader->ReadUInt(); 214 int num_imports = reader->ReadUInt();
215 if (num_imports != 0) { 215 if (num_imports != 0) {
216 FATAL("Deferred imports not implemented in VM"); 216 FATAL("Deferred imports not implemented in VM");
217 } 217 }
218 int num_typedefs = reader->ReadUInt();
219 typedefs().EnsureInitialized(num_typedefs);
220 for (intptr_t i = 0; i < num_typedefs; i++) {
221 typedefs().GetOrCreate<Typedef>(i, this)->ReadFrom(reader);
222 }
223 int num_classes = reader->ReadUInt(); 218 int num_classes = reader->ReadUInt();
224 classes().EnsureInitialized(num_classes); 219 classes().EnsureInitialized(num_classes);
225 for (intptr_t i = 0; i < num_classes; i++) { 220 for (intptr_t i = 0; i < num_classes; i++) {
226 Tag tag = reader->ReadTag(); 221 Tag tag = reader->ReadTag();
227 ASSERT(tag == kClass); 222 ASSERT(tag == kClass);
228 NormalClass* klass = classes().GetOrCreate<NormalClass>(i, this); 223 NormalClass* klass = classes().GetOrCreate<NormalClass>(i, this);
229 klass->ReadFrom(reader); 224 klass->ReadFrom(reader);
230 } 225 }
231 226
232 fields().ReadFrom<Field>(reader, this); 227 fields().ReadFrom<Field>(reader, this);
233 procedures().ReadFrom<Procedure>(reader, this); 228 procedures().ReadFrom<Procedure>(reader, this);
234 return this; 229 return this;
235 } 230 }
236 231
237 232
238 Typedef* Typedef::ReadFrom(Reader* reader) {
239 TRACE_READ_OFFSET();
240
241 canonical_name_ = reader->ReadCanonicalNameReference();
242 position_ = reader->ReadPosition(false);
243 name_ = Reference::ReadStringFrom(reader);
244 source_uri_index_ = reader->ReadUInt();
245 type_parameters_.ReadFrom(reader);
246 type_ = DartType::ReadFrom(reader);
247
248 return this;
249 }
250
251
252 Class* Class::ReadFrom(Reader* reader) { 233 Class* Class::ReadFrom(Reader* reader) {
253 TRACE_READ_OFFSET(); 234 TRACE_READ_OFFSET();
254 235
255 canonical_name_ = reader->ReadCanonicalNameReference(); 236 canonical_name_ = reader->ReadCanonicalNameReference();
256 position_ = reader->ReadPosition(false); 237 position_ = reader->ReadPosition(false);
257 is_abstract_ = reader->ReadBool(); 238 is_abstract_ = reader->ReadBool();
258 name_ = Reference::ReadStringFrom(reader); 239 name_ = Reference::ReadStringFrom(reader);
259 source_uri_index_ = reader->ReadUInt(); 240 source_uri_index_ = reader->ReadUInt();
260 reader->set_current_script_id(source_uri_index_); 241 reader->set_current_script_id(source_uri_index_);
261 reader->record_token_position(position_); 242 reader->record_token_position(position_);
(...skipping 63 matching lines...) Expand 10 before | Expand all | Expand 10 after
325 } 306 }
326 307
327 if (canonical_name != NULL) { 308 if (canonical_name != NULL) {
328 canonical_name->set_referenced(true); 309 canonical_name->set_referenced(true);
329 } 310 }
330 311
331 return canonical_name; 312 return canonical_name;
332 } 313 }
333 314
334 315
335 CanonicalName* Reference::ReadTypedefFrom(Reader* reader) {
336 TRACE_READ_OFFSET();
337
338 CanonicalName* canonical_name = reader->ReadCanonicalNameReference();
339 if (canonical_name == NULL) {
340 FATAL("Expected a valid typedef reference, but got `null`");
341 }
342
343 canonical_name->set_referenced(true);
344
345 return canonical_name;
346 }
347
348
349 String* Reference::ReadStringFrom(Reader* reader) { 316 String* Reference::ReadStringFrom(Reader* reader) {
350 int index = reader->ReadUInt(); 317 int index = reader->ReadUInt();
351 return reader->helper()->program()->string_table().strings()[index]; 318 return reader->helper()->program()->string_table().strings()[index];
352 } 319 }
353 320
354 321
355 Field* Field::ReadFrom(Reader* reader) { 322 Field* Field::ReadFrom(Reader* reader) {
356 TRACE_READ_OFFSET(); 323 TRACE_READ_OFFSET();
357 kernel_offset_ = reader->offset(); // Notice the ReadTag() below. 324 kernel_offset_ = reader->offset(); // Notice the ReadTag() below.
358 Tag tag = reader->ReadTag(); 325 Tag tag = reader->ReadTag();
(...skipping 1078 matching lines...) Expand 10 before | Expand all | Expand 10 after
1437 case kSimpleInterfaceType: 1404 case kSimpleInterfaceType:
1438 return InterfaceType::ReadFrom(reader, true); 1405 return InterfaceType::ReadFrom(reader, true);
1439 case kFunctionType: 1406 case kFunctionType:
1440 return FunctionType::ReadFrom(reader); 1407 return FunctionType::ReadFrom(reader);
1441 case kSimpleFunctionType: 1408 case kSimpleFunctionType:
1442 return FunctionType::ReadFrom(reader, true); 1409 return FunctionType::ReadFrom(reader, true);
1443 case kTypeParameterType: 1410 case kTypeParameterType:
1444 return TypeParameterType::ReadFrom(reader); 1411 return TypeParameterType::ReadFrom(reader);
1445 case kVectorType: 1412 case kVectorType:
1446 return VectorType::ReadFrom(reader); 1413 return VectorType::ReadFrom(reader);
1447 case kTypedefType:
1448 return TypedefType::ReadFrom(reader);
1449 default: 1414 default:
1450 UNREACHABLE(); 1415 UNREACHABLE();
1451 } 1416 }
1452 UNREACHABLE(); 1417 UNREACHABLE();
1453 return NULL; 1418 return NULL;
1454 } 1419 }
1455 1420
1456 1421
1457 InvalidType* InvalidType::ReadFrom(Reader* reader) { 1422 InvalidType* InvalidType::ReadFrom(Reader* reader) {
1458 TRACE_READ_OFFSET(); 1423 TRACE_READ_OFFSET();
(...skipping 25 matching lines...) Expand all
1484 InterfaceType* InterfaceType::ReadFrom(Reader* reader, 1449 InterfaceType* InterfaceType::ReadFrom(Reader* reader,
1485 bool _without_type_arguments_) { 1450 bool _without_type_arguments_) {
1486 TRACE_READ_OFFSET(); 1451 TRACE_READ_OFFSET();
1487 CanonicalName* klass_name = Reference::ReadClassFrom(reader); 1452 CanonicalName* klass_name = Reference::ReadClassFrom(reader);
1488 InterfaceType* type = new InterfaceType(klass_name); 1453 InterfaceType* type = new InterfaceType(klass_name);
1489 ASSERT(_without_type_arguments_); 1454 ASSERT(_without_type_arguments_);
1490 return type; 1455 return type;
1491 } 1456 }
1492 1457
1493 1458
1494 TypedefType* TypedefType::ReadFrom(Reader* reader) {
1495 TRACE_READ_OFFSET();
1496 CanonicalName* typedef_name = Reference::ReadTypedefFrom(reader);
1497 TypedefType* type = new TypedefType(typedef_name);
1498 type->type_arguments().ReadFromStatic<DartType>(reader);
1499 return type;
1500 }
1501
1502
1503 FunctionType* FunctionType::ReadFrom(Reader* reader) { 1459 FunctionType* FunctionType::ReadFrom(Reader* reader) {
1504 TRACE_READ_OFFSET(); 1460 TRACE_READ_OFFSET();
1505 FunctionType* type = new FunctionType(); 1461 FunctionType* type = new FunctionType();
1506 TypeParameterScope<ReaderHelper> scope(reader->helper()); 1462 TypeParameterScope<ReaderHelper> scope(reader->helper());
1507 type->type_parameters().ReadFrom(reader); 1463 type->type_parameters().ReadFrom(reader);
1508 type->required_parameter_count_ = reader->ReadUInt(); 1464 type->required_parameter_count_ = reader->ReadUInt();
1509 type->positional_parameters().ReadFromStatic<DartType>(reader); 1465 type->positional_parameters().ReadFromStatic<DartType>(reader);
1510 type->named_parameters().ReadFromStatic<Tuple<String, DartType> >(reader); 1466 type->named_parameters().ReadFromStatic<Tuple<String, DartType> >(reader);
1511 type->return_type_ = DartType::ReadFrom(reader); 1467 type->return_type_ = DartType::ReadFrom(reader);
1512 return type; 1468 return type;
(...skipping 111 matching lines...) Expand 10 before | Expand all | Expand 10 after
1624 1580
1625 kernel::Program* ReadPrecompiledKernelFromBuffer(const uint8_t* buffer, 1581 kernel::Program* ReadPrecompiledKernelFromBuffer(const uint8_t* buffer,
1626 intptr_t buffer_length) { 1582 intptr_t buffer_length) {
1627 kernel::Reader reader(buffer, buffer_length); 1583 kernel::Reader reader(buffer, buffer_length);
1628 return kernel::Program::ReadFrom(&reader); 1584 return kernel::Program::ReadFrom(&reader);
1629 } 1585 }
1630 1586
1631 1587
1632 } // namespace dart 1588 } // namespace dart
1633 #endif // !defined(DART_PRECOMPILED_RUNTIME) 1589 #endif // !defined(DART_PRECOMPILED_RUNTIME)
OLDNEW
« no previous file with comments | « runtime/vm/kernel_binary.h ('k') | no next file » | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698