OLD | NEW |
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 485 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
496 case kMapLiteral: | 496 case kMapLiteral: |
497 return MapLiteral::ReadFrom(reader, false); | 497 return MapLiteral::ReadFrom(reader, false); |
498 case kConstMapLiteral: | 498 case kConstMapLiteral: |
499 return MapLiteral::ReadFrom(reader, true); | 499 return MapLiteral::ReadFrom(reader, true); |
500 case kAwaitExpression: | 500 case kAwaitExpression: |
501 return AwaitExpression::ReadFrom(reader); | 501 return AwaitExpression::ReadFrom(reader); |
502 case kFunctionExpression: | 502 case kFunctionExpression: |
503 return FunctionExpression::ReadFrom(reader); | 503 return FunctionExpression::ReadFrom(reader); |
504 case kLet: | 504 case kLet: |
505 return Let::ReadFrom(reader); | 505 return Let::ReadFrom(reader); |
| 506 case kVectorCreation: |
| 507 return VectorCreation::ReadFrom(reader); |
| 508 case kVectorGet: |
| 509 return VectorGet::ReadFrom(reader); |
| 510 case kVectorSet: |
| 511 return VectorSet::ReadFrom(reader); |
| 512 case kVectorCopy: |
| 513 return VectorCopy::ReadFrom(reader); |
| 514 case kClosureCreation: |
| 515 return ClosureCreation::ReadFrom(reader); |
506 case kBigIntLiteral: | 516 case kBigIntLiteral: |
507 return BigintLiteral::ReadFrom(reader); | 517 return BigintLiteral::ReadFrom(reader); |
508 case kStringLiteral: | 518 case kStringLiteral: |
509 return StringLiteral::ReadFrom(reader); | 519 return StringLiteral::ReadFrom(reader); |
510 case kSpecialIntLiteral: | 520 case kSpecialIntLiteral: |
511 return IntLiteral::ReadFrom(reader, payload); | 521 return IntLiteral::ReadFrom(reader, payload); |
512 case kNegativeIntLiteral: | 522 case kNegativeIntLiteral: |
513 return IntLiteral::ReadFrom(reader, true); | 523 return IntLiteral::ReadFrom(reader, true); |
514 case kPositiveIntLiteral: | 524 case kPositiveIntLiteral: |
515 return IntLiteral::ReadFrom(reader, false); | 525 return IntLiteral::ReadFrom(reader, false); |
(...skipping 434 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
950 let->kernel_offset_ = reader->offset() - 1; // -1 to include tag byte. | 960 let->kernel_offset_ = reader->offset() - 1; // -1 to include tag byte. |
951 let->variable_ = VariableDeclaration::ReadFromImpl(reader, false); | 961 let->variable_ = VariableDeclaration::ReadFromImpl(reader, false); |
952 let->body_ = Expression::ReadFrom(reader); | 962 let->body_ = Expression::ReadFrom(reader); |
953 let->position_ = reader->min_position(); | 963 let->position_ = reader->min_position(); |
954 let->end_position_ = reader->max_position(); | 964 let->end_position_ = reader->max_position(); |
955 | 965 |
956 return let; | 966 return let; |
957 } | 967 } |
958 | 968 |
959 | 969 |
| 970 VectorCreation* VectorCreation::ReadFrom(Reader* reader) { |
| 971 TRACE_READ_OFFSET(); |
| 972 |
| 973 VectorCreation* vector_creation = new VectorCreation(); |
| 974 vector_creation->kernel_offset_ = |
| 975 reader->offset() - 1; // -1 to include tag byte. |
| 976 vector_creation->value_ = reader->ReadUInt(); |
| 977 |
| 978 return vector_creation; |
| 979 } |
| 980 |
| 981 |
| 982 VectorGet* VectorGet::ReadFrom(Reader* reader) { |
| 983 TRACE_READ_OFFSET(); |
| 984 |
| 985 VectorGet* vector_get = new VectorGet(); |
| 986 vector_get->kernel_offset_ = reader->offset() - 1; // -1 to include tag byte. |
| 987 vector_get->vector_expression_ = Expression::ReadFrom(reader); |
| 988 vector_get->index_ = reader->ReadUInt(); |
| 989 |
| 990 return vector_get; |
| 991 } |
| 992 |
| 993 |
| 994 VectorSet* VectorSet::ReadFrom(Reader* reader) { |
| 995 TRACE_READ_OFFSET(); |
| 996 |
| 997 VectorSet* vector_set = new VectorSet(); |
| 998 vector_set->kernel_offset_ = reader->offset() - 1; // -1 to include tag byte. |
| 999 vector_set->vector_expression_ = Expression::ReadFrom(reader); |
| 1000 vector_set->index_ = reader->ReadUInt(); |
| 1001 vector_set->value_ = Expression::ReadFrom(reader); |
| 1002 |
| 1003 return vector_set; |
| 1004 } |
| 1005 |
| 1006 |
| 1007 VectorCopy* VectorCopy::ReadFrom(Reader* reader) { |
| 1008 TRACE_READ_OFFSET(); |
| 1009 |
| 1010 VectorCopy* vector_copy = new VectorCopy(); |
| 1011 vector_copy->kernel_offset_ = |
| 1012 reader->offset() - 1; // -1 to include tag byte. |
| 1013 vector_copy->vector_expression_ = Expression::ReadFrom(reader); |
| 1014 |
| 1015 return vector_copy; |
| 1016 } |
| 1017 |
| 1018 |
| 1019 ClosureCreation* ClosureCreation::ReadFrom(Reader* reader) { |
| 1020 TRACE_READ_OFFSET(); |
| 1021 |
| 1022 ClosureCreation* closure_creation = new ClosureCreation(); |
| 1023 closure_creation->kernel_offset_ = |
| 1024 reader->offset() - 1; // to include tag byte. |
| 1025 closure_creation->top_level_function_reference_ = |
| 1026 Reference::ReadMemberFrom(reader); |
| 1027 closure_creation->context_vector_ = Expression::ReadFrom(reader); |
| 1028 closure_creation->function_type_ = |
| 1029 FunctionType::Cast(DartType::ReadFrom(reader)); |
| 1030 |
| 1031 return closure_creation; |
| 1032 } |
| 1033 |
| 1034 |
960 Statement* Statement::ReadFrom(Reader* reader) { | 1035 Statement* Statement::ReadFrom(Reader* reader) { |
961 TRACE_READ_OFFSET(); | 1036 TRACE_READ_OFFSET(); |
962 Tag tag = reader->ReadTag(); | 1037 Tag tag = reader->ReadTag(); |
963 switch (tag) { | 1038 switch (tag) { |
964 case kInvalidStatement: | 1039 case kInvalidStatement: |
965 return InvalidStatement::ReadFrom(reader); | 1040 return InvalidStatement::ReadFrom(reader); |
966 case kExpressionStatement: | 1041 case kExpressionStatement: |
967 return ExpressionStatement::ReadFrom(reader); | 1042 return ExpressionStatement::ReadFrom(reader); |
968 case kBlock: | 1043 case kBlock: |
969 return Block::ReadFromImpl(reader); | 1044 return Block::ReadFromImpl(reader); |
(...skipping 342 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
1312 case kInterfaceType: | 1387 case kInterfaceType: |
1313 return InterfaceType::ReadFrom(reader); | 1388 return InterfaceType::ReadFrom(reader); |
1314 case kSimpleInterfaceType: | 1389 case kSimpleInterfaceType: |
1315 return InterfaceType::ReadFrom(reader, true); | 1390 return InterfaceType::ReadFrom(reader, true); |
1316 case kFunctionType: | 1391 case kFunctionType: |
1317 return FunctionType::ReadFrom(reader); | 1392 return FunctionType::ReadFrom(reader); |
1318 case kSimpleFunctionType: | 1393 case kSimpleFunctionType: |
1319 return FunctionType::ReadFrom(reader, true); | 1394 return FunctionType::ReadFrom(reader, true); |
1320 case kTypeParameterType: | 1395 case kTypeParameterType: |
1321 return TypeParameterType::ReadFrom(reader); | 1396 return TypeParameterType::ReadFrom(reader); |
| 1397 case kVectorType: |
| 1398 return VectorType::ReadFrom(reader); |
1322 default: | 1399 default: |
1323 UNREACHABLE(); | 1400 UNREACHABLE(); |
1324 } | 1401 } |
1325 UNREACHABLE(); | 1402 UNREACHABLE(); |
1326 return NULL; | 1403 return NULL; |
1327 } | 1404 } |
1328 | 1405 |
1329 | 1406 |
1330 InvalidType* InvalidType::ReadFrom(Reader* reader) { | 1407 InvalidType* InvalidType::ReadFrom(Reader* reader) { |
1331 TRACE_READ_OFFSET(); | 1408 TRACE_READ_OFFSET(); |
(...skipping 58 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
1390 | 1467 |
1391 TypeParameterType* TypeParameterType::ReadFrom(Reader* reader) { | 1468 TypeParameterType* TypeParameterType::ReadFrom(Reader* reader) { |
1392 TRACE_READ_OFFSET(); | 1469 TRACE_READ_OFFSET(); |
1393 TypeParameterType* type = new TypeParameterType(); | 1470 TypeParameterType* type = new TypeParameterType(); |
1394 type->parameter_ = | 1471 type->parameter_ = |
1395 reader->helper()->type_parameters().Lookup(reader->ReadUInt()); | 1472 reader->helper()->type_parameters().Lookup(reader->ReadUInt()); |
1396 return type; | 1473 return type; |
1397 } | 1474 } |
1398 | 1475 |
1399 | 1476 |
| 1477 VectorType* VectorType::ReadFrom(Reader* reader) { |
| 1478 TRACE_READ_OFFSET(); |
| 1479 VectorType* type = new VectorType(); |
| 1480 return type; |
| 1481 } |
| 1482 |
| 1483 |
1400 Program* Program::ReadFrom(Reader* reader) { | 1484 Program* Program::ReadFrom(Reader* reader) { |
1401 TRACE_READ_OFFSET(); | 1485 TRACE_READ_OFFSET(); |
1402 uint32_t magic = reader->ReadUInt32(); | 1486 uint32_t magic = reader->ReadUInt32(); |
1403 if (magic != kMagicProgramFile) FATAL("Invalid magic identifier"); | 1487 if (magic != kMagicProgramFile) FATAL("Invalid magic identifier"); |
1404 | 1488 |
1405 Program* program = new Program(); | 1489 Program* program = new Program(); |
1406 program->canonical_name_root_ = CanonicalName::NewRoot(); | 1490 program->canonical_name_root_ = CanonicalName::NewRoot(); |
1407 reader->helper()->set_program(program); | 1491 reader->helper()->set_program(program); |
1408 | 1492 |
1409 program->string_table_.ReadFrom(reader); | 1493 program->string_table_.ReadFrom(reader); |
(...skipping 69 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
1479 | 1563 |
1480 kernel::Program* ReadPrecompiledKernelFromBuffer(const uint8_t* buffer, | 1564 kernel::Program* ReadPrecompiledKernelFromBuffer(const uint8_t* buffer, |
1481 intptr_t buffer_length) { | 1565 intptr_t buffer_length) { |
1482 kernel::Reader reader(buffer, buffer_length); | 1566 kernel::Reader reader(buffer, buffer_length); |
1483 return kernel::Program::ReadFrom(&reader); | 1567 return kernel::Program::ReadFrom(&reader); |
1484 } | 1568 } |
1485 | 1569 |
1486 | 1570 |
1487 } // namespace dart | 1571 } // namespace dart |
1488 #endif // !defined(DART_PRECOMPILED_RUNTIME) | 1572 #endif // !defined(DART_PRECOMPILED_RUNTIME) |
OLD | NEW |