| Index: src/compiler/bytecode-graph-builder.cc
|
| diff --git a/src/compiler/bytecode-graph-builder.cc b/src/compiler/bytecode-graph-builder.cc
|
| index e76b541800a74beaed6e5df226bc4ec059923f32..6b27630dd17e5a07f87bfeade6067f1d02fe985a 100644
|
| --- a/src/compiler/bytecode-graph-builder.cc
|
| +++ b/src/compiler/bytecode-graph-builder.cc
|
| @@ -8,6 +8,7 @@
|
| #include "src/ast/scopes.h"
|
| #include "src/compilation-info.h"
|
| #include "src/compiler/bytecode-branch-analysis.h"
|
| +#include "src/compiler/compiler-source-position-table.h"
|
| #include "src/compiler/linkage.h"
|
| #include "src/compiler/operator-properties.h"
|
| #include "src/interpreter/bytecodes.h"
|
| @@ -491,7 +492,8 @@ Node* BytecodeGraphBuilder::Environment::Checkpoint(
|
|
|
| BytecodeGraphBuilder::BytecodeGraphBuilder(
|
| Zone* local_zone, CompilationInfo* info, JSGraph* jsgraph,
|
| - float invocation_frequency, SourcePositionTable* source_positions)
|
| + float invocation_frequency, SourcePositionTable* source_positions,
|
| + int inlining_id)
|
| : local_zone_(local_zone),
|
| jsgraph_(jsgraph),
|
| invocation_frequency_(invocation_frequency),
|
| @@ -516,7 +518,8 @@ BytecodeGraphBuilder::BytecodeGraphBuilder(
|
| liveness_analyzer_(
|
| static_cast<size_t>(bytecode_array()->register_count()), true,
|
| local_zone),
|
| - source_positions_(source_positions) {}
|
| + source_positions_(source_positions),
|
| + start_position_(info->shared_info()->start_position(), inlining_id) {}
|
|
|
| Node* BytecodeGraphBuilder::GetNewTarget() {
|
| if (!new_target_.is_set()) {
|
| @@ -570,6 +573,8 @@ VectorSlotPair BytecodeGraphBuilder::CreateVectorSlotPair(int slot_id) {
|
| }
|
|
|
| bool BytecodeGraphBuilder::CreateGraph(bool stack_check) {
|
| + SourcePositionTable::Scope pos_scope(source_positions_, start_position_);
|
| +
|
| // Set up the basic structure of the graph. Outputs for {Start} are the formal
|
| // parameters (including the receiver) plus new target, number of arguments,
|
| // context and closure.
|
| @@ -2197,13 +2202,11 @@ Node* BytecodeGraphBuilder::MergeValue(Node* value, Node* other,
|
|
|
| void BytecodeGraphBuilder::UpdateCurrentSourcePosition(
|
| SourcePositionTableIterator* it, int offset) {
|
| - // TODO(neis): Remove this once inlining supports source positions.
|
| - if (source_positions_ == nullptr) return;
|
| -
|
| if (it->done()) return;
|
|
|
| if (it->code_offset() == offset) {
|
| - source_positions_->set_current_position(it->source_position());
|
| + source_positions_->SetCurrentPosition(SourcePosition(
|
| + it->source_position().ScriptOffset(), start_position_.InliningId()));
|
| it->Advance();
|
| } else {
|
| DCHECK_GT(it->code_offset(), offset);
|
|
|