| Index: runtime/vm/kernel_binary.cc
|
| diff --git a/runtime/vm/kernel_binary.cc b/runtime/vm/kernel_binary.cc
|
| index 313b20cfcd42505d9f6122c1843f2375e6568c5a..4cdc004cb84d9b5d5971f7ca58e34c546554f90b 100644
|
| --- a/runtime/vm/kernel_binary.cc
|
| +++ b/runtime/vm/kernel_binary.cc
|
| @@ -918,6 +918,7 @@ void Library::WriteTo(Writer* writer) {
|
| Class* Class::ReadFrom(Reader* reader) {
|
| TRACE_READ_OFFSET();
|
|
|
| + position_ = reader->ReadPosition();
|
| is_abstract_ = reader->ReadBool();
|
| name_ = Reference::ReadStringFrom(reader);
|
| source_uri_index_ = reader->ReadUInt();
|
| @@ -929,6 +930,7 @@ Class* Class::ReadFrom(Reader* reader) {
|
|
|
| void Class::WriteTo(Writer* writer) {
|
| TRACE_WRITE_OFFSET();
|
| + writer->WritePosition(position_);
|
| writer->WriteBool(is_abstract_);
|
| name_->WriteTo(writer);
|
| writer->WriteUInt(source_uri_index_);
|
| @@ -1166,6 +1168,7 @@ Field* Field::ReadFrom(Reader* reader) {
|
| ASSERT(tag == kField);
|
|
|
| position_ = reader->ReadPosition();
|
| + end_position_ = reader->ReadPosition();
|
| flags_ = reader->ReadFlags();
|
| name_ = Name::ReadFrom(reader);
|
| source_uri_index_ = reader->ReadUInt();
|
| @@ -1181,6 +1184,7 @@ void Field::WriteTo(Writer* writer) {
|
| TRACE_WRITE_OFFSET();
|
| writer->WriteTag(kField);
|
| writer->WritePosition(position_);
|
| + writer->WritePosition(end_position_);
|
| writer->WriteFlags(flags_);
|
| name_->WriteTo(writer);
|
| writer->WriteUInt(source_uri_index_);
|
| @@ -1197,6 +1201,8 @@ Constructor* Constructor::ReadFrom(Reader* reader) {
|
| ASSERT(tag == kConstructor);
|
|
|
| VariableScope<ReaderHelper> parameters(reader->helper());
|
| + position_ = reader->ReadPosition();
|
| + end_position_ = reader->ReadPosition();
|
| flags_ = reader->ReadFlags();
|
| name_ = Name::ReadFrom(reader);
|
| annotations_.ReadFromStatic<Expression>(reader);
|
| @@ -1210,6 +1216,8 @@ void Constructor::WriteTo(Writer* writer) {
|
| TRACE_WRITE_OFFSET();
|
| writer->WriteTag(kConstructor);
|
|
|
| + writer->WritePosition(position_);
|
| + writer->WritePosition(end_position_);
|
| VariableScope<WriterHelper> parameters(writer->helper());
|
| writer->WriteFlags(flags_);
|
| name_->WriteTo(writer);
|
| @@ -1225,6 +1233,8 @@ Procedure* Procedure::ReadFrom(Reader* reader) {
|
| ASSERT(tag == kProcedure);
|
|
|
| VariableScope<ReaderHelper> parameters(reader->helper());
|
| + position_ = reader->ReadPosition();
|
| + end_position_ = reader->ReadPosition();
|
| kind_ = static_cast<ProcedureKind>(reader->ReadByte());
|
| flags_ = reader->ReadFlags();
|
| name_ = Name::ReadFrom(reader);
|
| @@ -1239,6 +1249,8 @@ void Procedure::WriteTo(Writer* writer) {
|
| TRACE_WRITE_OFFSET();
|
| writer->WriteTag(kProcedure);
|
|
|
| + writer->WritePosition(position_);
|
| + writer->WritePosition(end_position_);
|
| VariableScope<WriterHelper> parameters(writer->helper());
|
| writer->WriteByte(kind_);
|
| writer->WriteFlags(flags_);
|
| @@ -1463,6 +1475,7 @@ void InvalidExpression::WriteTo(Writer* writer) {
|
| VariableGet* VariableGet::ReadFrom(Reader* reader) {
|
| TRACE_READ_OFFSET();
|
| VariableGet* get = new VariableGet();
|
| + get->position_ = reader->ReadPosition();
|
| get->variable_ = reader->helper()->variables().Lookup(reader->ReadUInt());
|
| reader->ReadOptional<DartType>(); // Unused promoted type.
|
| return get;
|
| @@ -1472,6 +1485,7 @@ VariableGet* VariableGet::ReadFrom(Reader* reader) {
|
| VariableGet* VariableGet::ReadFrom(Reader* reader, uint8_t payload) {
|
| TRACE_READ_OFFSET();
|
| VariableGet* get = new VariableGet();
|
| + get->position_ = reader->ReadPosition();
|
| get->variable_ = reader->helper()->variables().Lookup(payload);
|
| return get;
|
| }
|
| @@ -1482,8 +1496,10 @@ void VariableGet::WriteTo(Writer* writer) {
|
| int index = writer->helper()->variables().Lookup(variable_);
|
| if ((index & kSpecializedPayloadMask) == index) {
|
| writer->WriteTag(kSpecializedVariableGet, static_cast<uint8_t>(index));
|
| + writer->WritePosition(position_);
|
| } else {
|
| writer->WriteTag(kVariableGet);
|
| + writer->WritePosition(position_);
|
| writer->WriteUInt(index);
|
| writer->WriteOptional<DartType>(NULL);
|
| }
|
| @@ -1493,6 +1509,7 @@ void VariableGet::WriteTo(Writer* writer) {
|
| VariableSet* VariableSet::ReadFrom(Reader* reader) {
|
| TRACE_READ_OFFSET();
|
| VariableSet* set = new VariableSet();
|
| + set->position_ = reader->ReadPosition();
|
| set->variable_ = reader->helper()->variables().Lookup(reader->ReadUInt());
|
| set->expression_ = Expression::ReadFrom(reader);
|
| return set;
|
| @@ -1503,6 +1520,7 @@ VariableSet* VariableSet::ReadFrom(Reader* reader, uint8_t payload) {
|
| TRACE_READ_OFFSET();
|
| VariableSet* set = new VariableSet();
|
| set->variable_ = reader->helper()->variables().Lookup(payload);
|
| + set->position_ = reader->ReadPosition();
|
| set->expression_ = Expression::ReadFrom(reader);
|
| return set;
|
| }
|
| @@ -1513,8 +1531,10 @@ void VariableSet::WriteTo(Writer* writer) {
|
| int index = writer->helper()->variables().Lookup(variable_);
|
| if ((index & kSpecializedPayloadMask) == index) {
|
| writer->WriteTag(kSpecializedVariableSet, static_cast<uint8_t>(index));
|
| + writer->WritePosition(position_);
|
| } else {
|
| writer->WriteTag(kVariableSet);
|
| + writer->WritePosition(position_);
|
| writer->WriteUInt(index);
|
| }
|
| expression_->WriteTo(writer);
|
| @@ -1810,6 +1830,7 @@ void ConditionalExpression::WriteTo(Writer* writer) {
|
| StringConcatenation* StringConcatenation::ReadFrom(Reader* reader) {
|
| TRACE_READ_OFFSET();
|
| StringConcatenation* concat = new StringConcatenation();
|
| + concat->position_ = reader->ReadPosition();
|
| concat->expressions_.ReadFromStatic<Expression>(reader);
|
| return concat;
|
| }
|
| @@ -1818,6 +1839,7 @@ StringConcatenation* StringConcatenation::ReadFrom(Reader* reader) {
|
| void StringConcatenation::WriteTo(Writer* writer) {
|
| TRACE_WRITE_OFFSET();
|
| writer->WriteTag(kStringConcatenation);
|
| + writer->WritePosition(position_);
|
| expressions_.WriteTo(writer);
|
| }
|
|
|
| @@ -1825,6 +1847,7 @@ void StringConcatenation::WriteTo(Writer* writer) {
|
| IsExpression* IsExpression::ReadFrom(Reader* reader) {
|
| TRACE_READ_OFFSET();
|
| IsExpression* expr = new IsExpression();
|
| + expr->position_ = reader->ReadPosition();
|
| expr->operand_ = Expression::ReadFrom(reader);
|
| expr->type_ = DartType::ReadFrom(reader);
|
| return expr;
|
| @@ -1834,6 +1857,7 @@ IsExpression* IsExpression::ReadFrom(Reader* reader) {
|
| void IsExpression::WriteTo(Writer* writer) {
|
| TRACE_WRITE_OFFSET();
|
| writer->WriteTag(kIsExpression);
|
| + writer->WritePosition(position_);
|
| operand_->WriteTo(writer);
|
| type_->WriteTo(writer);
|
| }
|
| @@ -2045,6 +2069,7 @@ MapLiteral* MapLiteral::ReadFrom(Reader* reader, bool is_const) {
|
| TRACE_READ_OFFSET();
|
| MapLiteral* literal = new MapLiteral();
|
| literal->is_const_ = is_const;
|
| + literal->position_ = reader->ReadPosition();
|
| literal->key_type_ = DartType::ReadFrom(reader);
|
| literal->value_type_ = DartType::ReadFrom(reader);
|
| literal->entries_.ReadFromStatic<MapEntry>(reader);
|
| @@ -2055,6 +2080,7 @@ MapLiteral* MapLiteral::ReadFrom(Reader* reader, bool is_const) {
|
| void MapLiteral::WriteTo(Writer* writer) {
|
| TRACE_WRITE_OFFSET();
|
| writer->WriteTag(is_const_ ? kConstMapLiteral : kMapLiteral);
|
| + writer->WritePosition(position_);
|
| key_type_->WriteTo(writer);
|
| value_type_->WriteTo(writer);
|
| entries_.WriteTo(writer);
|
| @@ -2456,6 +2482,7 @@ void IfStatement::WriteTo(Writer* writer) {
|
| ReturnStatement* ReturnStatement::ReadFrom(Reader* reader) {
|
| TRACE_READ_OFFSET();
|
| ReturnStatement* ret = new ReturnStatement();
|
| + ret->position_ = reader->ReadPosition();
|
| ret->expression_ = reader->ReadOptional<Expression>();
|
| return ret;
|
| }
|
| @@ -2464,6 +2491,7 @@ ReturnStatement* ReturnStatement::ReadFrom(Reader* reader) {
|
| void ReturnStatement::WriteTo(Writer* writer) {
|
| TRACE_WRITE_OFFSET();
|
| writer->WriteTag(kReturnStatement);
|
| + writer->WritePosition(position_);
|
| writer->WriteOptional<Expression>(expression_);
|
| }
|
|
|
| @@ -2531,6 +2559,7 @@ void TryFinally::WriteTo(Writer* writer) {
|
| YieldStatement* YieldStatement::ReadFrom(Reader* reader) {
|
| TRACE_READ_OFFSET();
|
| YieldStatement* stmt = new YieldStatement();
|
| + stmt->position_ = reader->ReadPosition();
|
| stmt->flags_ = reader->ReadByte();
|
| stmt->expression_ = Expression::ReadFrom(reader);
|
| return stmt;
|
| @@ -2540,6 +2569,7 @@ YieldStatement* YieldStatement::ReadFrom(Reader* reader) {
|
| void YieldStatement::WriteTo(Writer* writer) {
|
| TRACE_WRITE_OFFSET();
|
| writer->WriteTag(kYieldStatement);
|
| + writer->WritePosition(position_);
|
| writer->WriteByte(flags_);
|
| expression_->WriteTo(writer);
|
| }
|
| @@ -2556,6 +2586,7 @@ VariableDeclaration* VariableDeclaration::ReadFrom(Reader* reader) {
|
| VariableDeclaration* VariableDeclaration::ReadFromImpl(Reader* reader) {
|
| TRACE_READ_OFFSET();
|
| VariableDeclaration* decl = new VariableDeclaration();
|
| + decl->position_ = reader->ReadPosition();
|
| decl->flags_ = reader->ReadFlags();
|
| decl->name_ = Reference::ReadStringFrom(reader);
|
| decl->type_ = DartType::ReadFrom(reader);
|
| @@ -2575,6 +2606,7 @@ void VariableDeclaration::WriteTo(Writer* writer) {
|
|
|
| void VariableDeclaration::WriteToImpl(Writer* writer) {
|
| TRACE_WRITE_OFFSET();
|
| + writer->WritePosition(position_);
|
| writer->WriteFlags(flags_);
|
| name_->WriteTo(writer);
|
| type_->WriteTo(writer);
|
| @@ -2587,6 +2619,7 @@ void VariableDeclaration::WriteToImpl(Writer* writer) {
|
| FunctionDeclaration* FunctionDeclaration::ReadFrom(Reader* reader) {
|
| TRACE_READ_OFFSET();
|
| FunctionDeclaration* decl = new FunctionDeclaration();
|
| + decl->position_ = reader->ReadPosition();
|
| decl->variable_ = VariableDeclaration::ReadFromImpl(reader);
|
| VariableScope<ReaderHelper> parameters(reader->helper());
|
| decl->function_ = FunctionNode::ReadFrom(reader);
|
| @@ -2597,6 +2630,7 @@ FunctionDeclaration* FunctionDeclaration::ReadFrom(Reader* reader) {
|
| void FunctionDeclaration::WriteTo(Writer* writer) {
|
| TRACE_WRITE_OFFSET();
|
| writer->WriteTag(kFunctionDeclaration);
|
| + writer->WritePosition(position_);
|
| variable_->WriteToImpl(writer);
|
| VariableScope<WriterHelper> parameters(writer->helper());
|
| function_->WriteTo(writer);
|
| @@ -2849,8 +2883,11 @@ FunctionNode* FunctionNode::ReadFrom(Reader* reader) {
|
| TypeParameterScope<ReaderHelper> scope(reader->helper());
|
|
|
| FunctionNode* function = new FunctionNode();
|
| + function->position_ = reader->ReadPosition();
|
| + function->end_position_ = reader->ReadPosition();
|
| function->async_marker_ =
|
| static_cast<FunctionNode::AsyncMarker>(reader->ReadByte());
|
| + function->debuggable_ = reader->ReadByte() == 1 ? true : false;
|
| function->type_parameters().ReadFrom(reader);
|
| function->required_parameter_count_ = reader->ReadUInt();
|
| function->positional_parameters().ReadFromStatic<VariableDeclarationImpl>(
|
| @@ -2871,7 +2908,10 @@ void FunctionNode::WriteTo(Writer* writer) {
|
| TRACE_WRITE_OFFSET();
|
| TypeParameterScope<WriterHelper> scope(writer->helper());
|
|
|
| + writer->WritePosition(position_);
|
| + writer->WritePosition(end_position_);
|
| writer->WriteByte(static_cast<uint8_t>(async_marker_));
|
| + writer->WriteByte(debuggable_ ? 1 : 0);
|
| type_parameters().WriteTo(writer);
|
| writer->WriteUInt(required_parameter_count());
|
| positional_parameters().WriteToStatic<VariableDeclarationImpl>(writer);
|
|
|