Index: runtime/vm/kernel_binary.cc |
diff --git a/runtime/vm/kernel_binary.cc b/runtime/vm/kernel_binary.cc |
index 48f62684b4df816c3d5156da8a75f5b355e6f52d..1ad1089271dbab25317a288c28345d7b11f4c208 100644 |
--- a/runtime/vm/kernel_binary.cc |
+++ b/runtime/vm/kernel_binary.cc |
@@ -512,7 +512,10 @@ Expression* Expression::ReadFrom(Reader* reader) { |
InvalidExpression* InvalidExpression::ReadFrom(Reader* reader) { |
TRACE_READ_OFFSET(); |
- return new InvalidExpression(); |
+ InvalidExpression* invalidExpression = new InvalidExpression(); |
+ invalidExpression->kernel_offset_ = |
+ reader->offset() - 1; // -1 to include tag byte. |
+ return invalidExpression; |
} |
@@ -742,7 +745,10 @@ AsExpression* AsExpression::ReadFrom(Reader* reader) { |
StringLiteral* StringLiteral::ReadFrom(Reader* reader) { |
TRACE_READ_OFFSET(); |
- return new StringLiteral(Reference::ReadStringFrom(reader)); |
+ intptr_t offset = reader->offset() - 1; // -1 to include tag byte. |
+ StringLiteral* lit = new StringLiteral(Reference::ReadStringFrom(reader)); |
+ lit->kernel_offset_ = offset; |
+ return lit; |
} |
@@ -755,6 +761,7 @@ BigintLiteral* BigintLiteral::ReadFrom(Reader* reader) { |
IntLiteral* IntLiteral::ReadFrom(Reader* reader, bool is_negative) { |
TRACE_READ_OFFSET(); |
IntLiteral* literal = new IntLiteral(); |
+ literal->kernel_offset_ = reader->offset() - 1; // -1 to include tag byte. |
literal->value_ = is_negative ? -static_cast<int64_t>(reader->ReadUInt()) |
: reader->ReadUInt(); |
return literal; |
@@ -764,6 +771,7 @@ IntLiteral* IntLiteral::ReadFrom(Reader* reader, bool is_negative) { |
IntLiteral* IntLiteral::ReadFrom(Reader* reader, uint8_t payload) { |
TRACE_READ_OFFSET(); |
IntLiteral* literal = new IntLiteral(); |
+ literal->kernel_offset_ = reader->offset() - 1; // -1 to include tag byte. |
literal->value_ = static_cast<int32_t>(payload) - SpecializedIntLiteralBias; |
return literal; |
} |
@@ -780,6 +788,7 @@ DoubleLiteral* DoubleLiteral::ReadFrom(Reader* reader) { |
BoolLiteral* BoolLiteral::ReadFrom(Reader* reader, bool value) { |
TRACE_READ_OFFSET(); |
BoolLiteral* lit = new BoolLiteral(); |
+ lit->kernel_offset_ = reader->offset() - 1; // -1 to include tag byte. |
lit->value_ = value; |
return lit; |
} |
@@ -787,7 +796,9 @@ BoolLiteral* BoolLiteral::ReadFrom(Reader* reader, bool value) { |
NullLiteral* NullLiteral::ReadFrom(Reader* reader) { |
TRACE_READ_OFFSET(); |
- return new NullLiteral(); |
+ NullLiteral* lit = new NullLiteral(); |
+ lit->kernel_offset_ = reader->offset() - 1; // -1 to include tag byte. |
+ return lit; |
} |
@@ -809,7 +820,9 @@ TypeLiteral* TypeLiteral::ReadFrom(Reader* reader) { |
ThisExpression* ThisExpression::ReadFrom(Reader* reader) { |
TRACE_READ_OFFSET(); |
- return new ThisExpression(); |
+ ThisExpression* this_expr = new ThisExpression(); |
+ this_expr->kernel_offset_ = reader->offset() - 1; // -1 to include tag byte. |
+ return this_expr; |
} |