Chromium Code Reviews| 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 |