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 PositionScope scope(reader); | |
Kevin Millikin (Google)
2017/04/05 08:34:27
We don't this scoped helper object here, or below.
Dmitry Stefantsov
2017/04/05 13:59:09
Done.
| |
973 | |
974 VectorCreation* vector_creation = new VectorCreation(); | |
975 vector_creation->kernel_offset_ = | |
976 reader->offset() - 1; // -1 to include tag byte. | |
977 vector_creation->value_ = static_cast<intptr_t>(reader->ReadUInt()); | |
Kevin Millikin (Google)
2017/04/05 08:34:27
We don't need a static_cast here, or below, becaus
Dmitry Stefantsov
2017/04/05 13:59:09
Got it. Thanks! Fixed.
| |
978 | |
979 return vector_creation; | |
980 } | |
981 | |
982 | |
983 VectorGet* VectorGet::ReadFrom(Reader* reader) { | |
984 TRACE_READ_OFFSET(); | |
985 PositionScope scope(reader); | |
986 | |
987 VectorGet* vector_get = new VectorGet(); | |
988 vector_get->kernel_offset_ = reader->offset() - 1; // -1 to include tag byte. | |
989 vector_get->vector_expression_ = Expression::ReadFrom(reader); | |
990 vector_get->index_ = static_cast<intptr_t>(reader->ReadUInt()); | |
991 | |
992 return vector_get; | |
993 } | |
994 | |
995 | |
996 VectorSet* VectorSet::ReadFrom(Reader* reader) { | |
997 TRACE_READ_OFFSET(); | |
998 PositionScope scope(reader); | |
999 | |
1000 VectorSet* vector_set = new VectorSet(); | |
1001 vector_set->kernel_offset_ = reader->offset() - 1; // -1 to include tag byte. | |
1002 vector_set->vector_expression_ = Expression::ReadFrom(reader); | |
1003 vector_set->index_ = static_cast<intptr_t>(reader->ReadUInt()); | |
1004 vector_set->value_ = Expression::ReadFrom(reader); | |
1005 | |
1006 return vector_set; | |
1007 } | |
1008 | |
1009 | |
1010 VectorCopy* VectorCopy::ReadFrom(Reader* reader) { | |
1011 TRACE_READ_OFFSET(); | |
1012 PositionScope scope(reader); | |
1013 | |
1014 VectorCopy* vector_copy = new VectorCopy(); | |
1015 vector_copy->kernel_offset_ = | |
1016 reader->offset() - 1; // -1 to include tag byte. | |
1017 vector_copy->vector_expression_ = Expression::ReadFrom(reader); | |
1018 | |
1019 return vector_copy; | |
1020 } | |
1021 | |
1022 | |
1023 ClosureCreation* ClosureCreation::ReadFrom(Reader* reader) { | |
1024 TRACE_READ_OFFSET(); | |
1025 PositionScope scope(reader); | |
1026 | |
1027 ClosureCreation* closure_creation = new ClosureCreation(); | |
1028 closure_creation->kernel_offset_ = | |
1029 reader->offset() - 1; // to include tag byte. | |
1030 closure_creation->top_level_function_reference_ = | |
1031 Reference::ReadMemberFrom(reader); | |
1032 closure_creation->context_vector_ = Expression::ReadFrom(reader); | |
1033 closure_creation->function_type_ = | |
1034 FunctionType::Cast(DartType::ReadFrom(reader)); | |
1035 | |
1036 return closure_creation; | |
1037 } | |
1038 | |
1039 | |
960 Statement* Statement::ReadFrom(Reader* reader) { | 1040 Statement* Statement::ReadFrom(Reader* reader) { |
961 TRACE_READ_OFFSET(); | 1041 TRACE_READ_OFFSET(); |
962 Tag tag = reader->ReadTag(); | 1042 Tag tag = reader->ReadTag(); |
963 switch (tag) { | 1043 switch (tag) { |
964 case kInvalidStatement: | 1044 case kInvalidStatement: |
965 return InvalidStatement::ReadFrom(reader); | 1045 return InvalidStatement::ReadFrom(reader); |
966 case kExpressionStatement: | 1046 case kExpressionStatement: |
967 return ExpressionStatement::ReadFrom(reader); | 1047 return ExpressionStatement::ReadFrom(reader); |
968 case kBlock: | 1048 case kBlock: |
969 return Block::ReadFromImpl(reader); | 1049 return Block::ReadFromImpl(reader); |
(...skipping 342 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
1312 case kInterfaceType: | 1392 case kInterfaceType: |
1313 return InterfaceType::ReadFrom(reader); | 1393 return InterfaceType::ReadFrom(reader); |
1314 case kSimpleInterfaceType: | 1394 case kSimpleInterfaceType: |
1315 return InterfaceType::ReadFrom(reader, true); | 1395 return InterfaceType::ReadFrom(reader, true); |
1316 case kFunctionType: | 1396 case kFunctionType: |
1317 return FunctionType::ReadFrom(reader); | 1397 return FunctionType::ReadFrom(reader); |
1318 case kSimpleFunctionType: | 1398 case kSimpleFunctionType: |
1319 return FunctionType::ReadFrom(reader, true); | 1399 return FunctionType::ReadFrom(reader, true); |
1320 case kTypeParameterType: | 1400 case kTypeParameterType: |
1321 return TypeParameterType::ReadFrom(reader); | 1401 return TypeParameterType::ReadFrom(reader); |
1402 case kVectorType: | |
1403 return VectorType::ReadFrom(reader); | |
1322 default: | 1404 default: |
1323 UNREACHABLE(); | 1405 UNREACHABLE(); |
1324 } | 1406 } |
1325 UNREACHABLE(); | 1407 UNREACHABLE(); |
1326 return NULL; | 1408 return NULL; |
1327 } | 1409 } |
1328 | 1410 |
1329 | 1411 |
1330 InvalidType* InvalidType::ReadFrom(Reader* reader) { | 1412 InvalidType* InvalidType::ReadFrom(Reader* reader) { |
1331 TRACE_READ_OFFSET(); | 1413 TRACE_READ_OFFSET(); |
(...skipping 58 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
1390 | 1472 |
1391 TypeParameterType* TypeParameterType::ReadFrom(Reader* reader) { | 1473 TypeParameterType* TypeParameterType::ReadFrom(Reader* reader) { |
1392 TRACE_READ_OFFSET(); | 1474 TRACE_READ_OFFSET(); |
1393 TypeParameterType* type = new TypeParameterType(); | 1475 TypeParameterType* type = new TypeParameterType(); |
1394 type->parameter_ = | 1476 type->parameter_ = |
1395 reader->helper()->type_parameters().Lookup(reader->ReadUInt()); | 1477 reader->helper()->type_parameters().Lookup(reader->ReadUInt()); |
1396 return type; | 1478 return type; |
1397 } | 1479 } |
1398 | 1480 |
1399 | 1481 |
1482 VectorType* VectorType::ReadFrom(Reader* reader) { | |
1483 TRACE_READ_OFFSET(); | |
1484 VectorType* type = new VectorType(); | |
1485 return type; | |
1486 } | |
1487 | |
1488 | |
1400 Program* Program::ReadFrom(Reader* reader) { | 1489 Program* Program::ReadFrom(Reader* reader) { |
1401 TRACE_READ_OFFSET(); | 1490 TRACE_READ_OFFSET(); |
1402 uint32_t magic = reader->ReadUInt32(); | 1491 uint32_t magic = reader->ReadUInt32(); |
1403 if (magic != kMagicProgramFile) FATAL("Invalid magic identifier"); | 1492 if (magic != kMagicProgramFile) FATAL("Invalid magic identifier"); |
1404 | 1493 |
1405 Program* program = new Program(); | 1494 Program* program = new Program(); |
1406 program->canonical_name_root_ = CanonicalName::NewRoot(); | 1495 program->canonical_name_root_ = CanonicalName::NewRoot(); |
1407 reader->helper()->set_program(program); | 1496 reader->helper()->set_program(program); |
1408 | 1497 |
1409 program->string_table_.ReadFrom(reader); | 1498 program->string_table_.ReadFrom(reader); |
(...skipping 69 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
1479 | 1568 |
1480 kernel::Program* ReadPrecompiledKernelFromBuffer(const uint8_t* buffer, | 1569 kernel::Program* ReadPrecompiledKernelFromBuffer(const uint8_t* buffer, |
1481 intptr_t buffer_length) { | 1570 intptr_t buffer_length) { |
1482 kernel::Reader reader(buffer, buffer_length); | 1571 kernel::Reader reader(buffer, buffer_length); |
1483 return kernel::Program::ReadFrom(&reader); | 1572 return kernel::Program::ReadFrom(&reader); |
1484 } | 1573 } |
1485 | 1574 |
1486 | 1575 |
1487 } // namespace dart | 1576 } // namespace dart |
1488 #endif // !defined(DART_PRECOMPILED_RUNTIME) | 1577 #endif // !defined(DART_PRECOMPILED_RUNTIME) |
OLD | NEW |