| 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;
|
| }
|
|
|
|
|
|
|