| Index: runtime/vm/kernel_binary.cc
|
| diff --git a/runtime/vm/kernel_binary.cc b/runtime/vm/kernel_binary.cc
|
| index 78f982b34a42a46e339fcca8d1cf16a6ed5b922d..3ea676600f7716ddbbfc3fb07367a1d14a8a69bd 100644
|
| --- a/runtime/vm/kernel_binary.cc
|
| +++ b/runtime/vm/kernel_binary.cc
|
| @@ -482,6 +482,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:
|
| @@ -936,6 +946,86 @@ Let* Let::ReadFrom(Reader* reader) {
|
| }
|
|
|
|
|
| +VectorCreation* VectorCreation::ReadFrom(Reader* reader) {
|
| + TRACE_READ_OFFSET();
|
| + PositionScope scope(reader);
|
| +
|
| + VectorCreation* vector_creation = new VectorCreation();
|
| + vector_creation->kernel_offset_ =
|
| + reader->offset() - 1; // -1 to include tag byte.
|
| + vector_creation->value_ = static_cast<int64_t>(reader->ReadUInt());
|
| + vector_creation->position_ = reader->min_position();
|
| + vector_creation->end_position_ = reader->max_position();
|
| +
|
| + 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<int64_t>(reader->ReadUInt());
|
| + vector_get->position_ = reader->min_position();
|
| + vector_get->end_position_ = reader->max_position();
|
| +
|
| + 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<int64_t>(reader->ReadUInt());
|
| + vector_set->value_ = Expression::ReadFrom(reader);
|
| + vector_set->position_ = reader->min_position();
|
| + vector_set->end_position_ = reader->max_position();
|
| +
|
| + 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);
|
| + vector_copy->position_ = reader->min_position();
|
| + vector_copy->end_position_ = reader->max_position();
|
| +
|
| + 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));
|
| + closure_creation->position_ = reader->min_position();
|
| + closure_creation->end_position_ = reader->max_position();
|
| +
|
| + return closure_creation;
|
| +}
|
| +
|
| +
|
| Statement* Statement::ReadFrom(Reader* reader) {
|
| TRACE_READ_OFFSET();
|
| Tag tag = reader->ReadTag();
|
| @@ -1298,6 +1388,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();
|
| }
|
| @@ -1376,6 +1468,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();
|
|
|