Chromium Code Reviews| Index: runtime/vm/kernel_binary.cc |
| diff --git a/runtime/vm/kernel_binary.cc b/runtime/vm/kernel_binary.cc |
| index d70ec1f6cf3d70a46d4b5aa1b34da6abdca94669..44fbaff16d296fcab503bc3ef77e8acafac3799a 100644 |
| --- a/runtime/vm/kernel_binary.cc |
| +++ b/runtime/vm/kernel_binary.cc |
| @@ -503,6 +503,16 @@ Expression* Expression::ReadFrom(Reader* reader) { |
| return FunctionExpression::ReadFrom(reader); |
| case kLet: |
| return Let::ReadFrom(reader); |
| + case kVectorCreation: |
| + return VectorCreation::ReadFrom(reader); |
| + case kVectorGet: |
| + return VectorGet::ReadFrom(reader); |
| + case kVectorSet: |
| + return VectorSet::ReadFrom(reader); |
| + case kVectorCopy: |
| + return VectorCopy::ReadFrom(reader); |
| + case kClosureCreation: |
| + return ClosureCreation::ReadFrom(reader); |
| case kBigIntLiteral: |
| return BigintLiteral::ReadFrom(reader); |
| case kStringLiteral: |
| @@ -957,6 +967,76 @@ Let* Let::ReadFrom(Reader* reader) { |
| } |
| +VectorCreation* VectorCreation::ReadFrom(Reader* reader) { |
| + TRACE_READ_OFFSET(); |
| + 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.
|
| + |
| + VectorCreation* vector_creation = new VectorCreation(); |
| + vector_creation->kernel_offset_ = |
| + reader->offset() - 1; // -1 to include tag byte. |
| + 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.
|
| + |
| + return vector_creation; |
| +} |
| + |
| + |
| +VectorGet* VectorGet::ReadFrom(Reader* reader) { |
| + TRACE_READ_OFFSET(); |
| + PositionScope scope(reader); |
| + |
| + VectorGet* vector_get = new VectorGet(); |
| + vector_get->kernel_offset_ = reader->offset() - 1; // -1 to include tag byte. |
| + vector_get->vector_expression_ = Expression::ReadFrom(reader); |
| + vector_get->index_ = static_cast<intptr_t>(reader->ReadUInt()); |
| + |
| + return vector_get; |
| +} |
| + |
| + |
| +VectorSet* VectorSet::ReadFrom(Reader* reader) { |
| + TRACE_READ_OFFSET(); |
| + PositionScope scope(reader); |
| + |
| + VectorSet* vector_set = new VectorSet(); |
| + vector_set->kernel_offset_ = reader->offset() - 1; // -1 to include tag byte. |
| + vector_set->vector_expression_ = Expression::ReadFrom(reader); |
| + vector_set->index_ = static_cast<intptr_t>(reader->ReadUInt()); |
| + vector_set->value_ = Expression::ReadFrom(reader); |
| + |
| + return vector_set; |
| +} |
| + |
| + |
| +VectorCopy* VectorCopy::ReadFrom(Reader* reader) { |
| + TRACE_READ_OFFSET(); |
| + PositionScope scope(reader); |
| + |
| + VectorCopy* vector_copy = new VectorCopy(); |
| + vector_copy->kernel_offset_ = |
| + reader->offset() - 1; // -1 to include tag byte. |
| + vector_copy->vector_expression_ = Expression::ReadFrom(reader); |
| + |
| + return vector_copy; |
| +} |
| + |
| + |
| +ClosureCreation* ClosureCreation::ReadFrom(Reader* reader) { |
| + TRACE_READ_OFFSET(); |
| + PositionScope scope(reader); |
| + |
| + ClosureCreation* closure_creation = new ClosureCreation(); |
| + closure_creation->kernel_offset_ = |
| + reader->offset() - 1; // to include tag byte. |
| + closure_creation->top_level_function_reference_ = |
| + Reference::ReadMemberFrom(reader); |
| + closure_creation->context_vector_ = Expression::ReadFrom(reader); |
| + closure_creation->function_type_ = |
| + FunctionType::Cast(DartType::ReadFrom(reader)); |
| + |
| + return closure_creation; |
| +} |
| + |
| + |
| Statement* Statement::ReadFrom(Reader* reader) { |
| TRACE_READ_OFFSET(); |
| Tag tag = reader->ReadTag(); |
| @@ -1319,6 +1399,8 @@ DartType* DartType::ReadFrom(Reader* reader) { |
| return FunctionType::ReadFrom(reader, true); |
| case kTypeParameterType: |
| return TypeParameterType::ReadFrom(reader); |
| + case kVectorType: |
| + return VectorType::ReadFrom(reader); |
| default: |
| UNREACHABLE(); |
| } |
| @@ -1397,6 +1479,13 @@ TypeParameterType* TypeParameterType::ReadFrom(Reader* reader) { |
| } |
| +VectorType* VectorType::ReadFrom(Reader* reader) { |
| + TRACE_READ_OFFSET(); |
| + VectorType* type = new VectorType(); |
| + return type; |
| +} |
| + |
| + |
| Program* Program::ReadFrom(Reader* reader) { |
| TRACE_READ_OFFSET(); |
| uint32_t magic = reader->ReadUInt32(); |