Index: runtime/vm/kernel_binary.cc |
diff --git a/runtime/vm/kernel_binary.cc b/runtime/vm/kernel_binary.cc |
index d78612c410c2d0cad0710851a1d580e5e32bebe0..ff8e0faa7fa4dc50f09f381dbf816886128d5869 100644 |
--- a/runtime/vm/kernel_binary.cc |
+++ b/runtime/vm/kernel_binary.cc |
@@ -501,6 +501,8 @@ class Reader { |
return name; |
} |
+ int64_t offset() { return offset_; } |
+ |
private: |
const uint8_t* buffer_; |
int64_t size_; |
@@ -806,6 +808,7 @@ Field* Field::ReadFrom(Reader* reader) { |
Tag tag = reader->ReadTag(); |
ASSERT(tag == kField); |
+ kernelFileOffset_ = reader->offset(); |
reader->ReadDefiningCanonicalNameReference(this); |
position_ = reader->ReadPosition(false); |
end_position_ = reader->ReadPosition(false); |
@@ -1387,7 +1390,7 @@ AwaitExpression* AwaitExpression::ReadFrom(Reader* reader) { |
FunctionExpression* FunctionExpression::ReadFrom(Reader* reader) { |
TRACE_READ_OFFSET(); |
VariableScope<ReaderHelper> parameters(reader->helper()); |
- FunctionExpression* expr = new FunctionExpression(); |
+ FunctionExpression* expr = new FunctionExpression(reader->offset()); |
expr->function_ = FunctionNode::ReadFrom(reader); |
return expr; |
} |
@@ -1398,7 +1401,7 @@ Let* Let::ReadFrom(Reader* reader) { |
VariableScope<ReaderHelper> vars(reader->helper()); |
PositionScope scope(reader); |
- Let* let = new Let(); |
+ Let* let = new Let(reader->offset()); |
let->variable_ = VariableDeclaration::ReadFromImpl(reader); |
let->body_ = Expression::ReadFrom(reader); |
let->position_ = reader->min_position(); |
@@ -1478,7 +1481,7 @@ Block* Block::ReadFromImpl(Reader* reader) { |
PositionScope scope(reader); |
VariableScope<ReaderHelper> vars(reader->helper()); |
- Block* block = new Block(); |
+ Block* block = new Block(reader->offset()); |
block->statements().ReadFromStatic<Statement>(reader); |
block->position_ = reader->min_position(); |
block->end_position_ = reader->max_position(); |
@@ -1544,7 +1547,7 @@ ForStatement* ForStatement::ReadFrom(Reader* reader) { |
VariableScope<ReaderHelper> vars(reader->helper()); |
PositionScope scope(reader); |
- ForStatement* forstmt = new ForStatement(); |
+ ForStatement* forstmt = new ForStatement(reader->offset()); |
forstmt->variables_.ReadFromStatic<VariableDeclarationImpl>(reader); |
forstmt->condition_ = reader->ReadOptional<Expression>(); |
forstmt->updates_.ReadFromStatic<Expression>(reader); |
@@ -1561,7 +1564,7 @@ ForInStatement* ForInStatement::ReadFrom(Reader* reader, bool is_async) { |
VariableScope<ReaderHelper> vars(reader->helper()); |
PositionScope scope(reader); |
- ForInStatement* forinstmt = new ForInStatement(); |
+ ForInStatement* forinstmt = new ForInStatement(reader->offset()); |
forinstmt->is_async_ = is_async; |
forinstmt->position_ = reader->ReadPosition(); |
forinstmt->variable_ = VariableDeclaration::ReadFromImpl(reader); |
@@ -1655,7 +1658,7 @@ Catch* Catch::ReadFrom(Reader* reader) { |
VariableScope<ReaderHelper> vars(reader->helper()); |
PositionScope scope(reader); |
- Catch* c = new Catch(); |
+ Catch* c = new Catch(reader->offset()); |
c->guard_ = DartType::ReadFrom(reader); |
c->exception_ = |
reader->ReadOptional<VariableDeclaration, VariableDeclarationImpl>(); |
@@ -1701,7 +1704,7 @@ VariableDeclaration* VariableDeclaration::ReadFromImpl(Reader* reader) { |
TRACE_READ_OFFSET(); |
PositionScope scope(reader); |
- VariableDeclaration* decl = new VariableDeclaration(); |
+ VariableDeclaration* decl = new VariableDeclaration(reader->offset()); |
decl->position_ = reader->ReadPosition(); |
decl->equals_position_ = reader->ReadPosition(); |
decl->flags_ = reader->ReadFlags(); |
@@ -1723,7 +1726,7 @@ VariableDeclaration* VariableDeclaration::ReadFromImpl(Reader* reader) { |
FunctionDeclaration* FunctionDeclaration::ReadFrom(Reader* reader) { |
TRACE_READ_OFFSET(); |
- FunctionDeclaration* decl = new FunctionDeclaration(); |
+ FunctionDeclaration* decl = new FunctionDeclaration(reader->offset()); |
decl->position_ = reader->ReadPosition(); |
decl->variable_ = VariableDeclaration::ReadFromImpl(reader); |
VariableScope<ReaderHelper> parameters(reader->helper()); |
@@ -1905,7 +1908,7 @@ FunctionNode* FunctionNode::ReadFrom(Reader* reader) { |
TRACE_READ_OFFSET(); |
TypeParameterScope<ReaderHelper> scope(reader->helper()); |
- FunctionNode* function = new FunctionNode(); |
+ FunctionNode* function = new FunctionNode(reader->offset()); |
function->position_ = reader->ReadPosition(); |
function->end_position_ = reader->ReadPosition(); |
function->async_marker_ = |