Index: src/asmjs/asm-wasm-builder.cc |
diff --git a/src/asmjs/asm-wasm-builder.cc b/src/asmjs/asm-wasm-builder.cc |
index f928ae1b97e4bcdbe9e9785f16a181d0a281e50f..9415a84521e2c276ff8dc319fd46fab9ff2da274 100644 |
--- a/src/asmjs/asm-wasm-builder.cc |
+++ b/src/asmjs/asm-wasm-builder.cc |
@@ -71,8 +71,7 @@ |
foreign_init_function_(nullptr), |
function_tables_(ZoneHashMap::kDefaultHashMapCapacity, |
ZoneAllocationPolicy(zone)), |
- imported_function_table_(this), |
- parent_binop_(nullptr) { |
+ imported_function_table_(this) { |
InitializeAstVisitor(isolate); |
} |
@@ -1399,10 +1398,6 @@ |
bool VisitCallExpression(Call* expr) { |
Call::CallType call_type = expr->GetCallType(); |
bool returns_value = true; |
- |
- // Save the parent now, it might be overwritten in VisitCallArgs. |
- BinaryOperation* parent_binop = parent_binop_; |
- |
switch (call_type) { |
case Call::OTHER_CALL: { |
VariableProxy* proxy = expr->expression()->AsVariableProxy(); |
@@ -1433,20 +1428,13 @@ |
uint32_t index = imported_function_table_.LookupOrInsertImportUse( |
vp->var(), sig.Build()); |
VisitCallArgs(expr); |
- // For non-void functions, we must know the parent node. |
- DCHECK_IMPLIES(returns_value, parent_binop != nullptr); |
- DCHECK_IMPLIES(returns_value, parent_binop->left() == expr || |
- parent_binop->right() == expr); |
- int pos = expr->position(); |
- int parent_pos = returns_value ? parent_binop->position() : pos; |
- current_function_builder_->AddAsmWasmOffset(pos, parent_pos); |
+ current_function_builder_->AddAsmWasmOffset(expr->position()); |
current_function_builder_->Emit(kExprCallFunction); |
current_function_builder_->EmitVarInt(index); |
} else { |
WasmFunctionBuilder* function = LookupOrInsertFunction(vp->var()); |
VisitCallArgs(expr); |
- current_function_builder_->AddAsmWasmOffset(expr->position(), |
- expr->position()); |
+ current_function_builder_->AddAsmWasmOffset(expr->position()); |
current_function_builder_->Emit(kExprCallFunction); |
current_function_builder_->EmitDirectCallIndex( |
function->func_index()); |
@@ -1472,8 +1460,7 @@ |
VisitCallArgs(expr); |
current_function_builder_->EmitGetLocal(tmp.index()); |
- current_function_builder_->AddAsmWasmOffset(expr->position(), |
- expr->position()); |
+ current_function_builder_->AddAsmWasmOffset(expr->position()); |
current_function_builder_->Emit(kExprCallIndirect); |
current_function_builder_->EmitVarInt(indices->signature_index); |
current_function_builder_->EmitVarInt(0); // table index |
@@ -1645,7 +1632,6 @@ |
void VisitBinaryOperation(BinaryOperation* expr) { |
ConvertOperation convertOperation = MatchBinaryOperation(expr); |
static const bool kDontIgnoreSign = false; |
- parent_binop_ = expr; |
if (convertOperation == kToDouble) { |
RECURSE(Visit(expr->left())); |
TypeIndex type = TypeIndexOf(expr->left(), kDontIgnoreSign); |
@@ -1949,9 +1935,6 @@ |
uint32_t next_table_index_; |
ZoneHashMap function_tables_; |
ImportedFunctionTable imported_function_table_; |
- // Remember the parent node for reporting the correct location for ToNumber |
- // conversions after calls. |
- BinaryOperation* parent_binop_; |
DEFINE_AST_VISITOR_SUBCLASS_MEMBERS(); |