diff --git a/src/code-stubs-hydrogen.cc b/src/code-stubs-hydrogen.cc index 1796c126b8..0a8b9d5767 100644 --- a/src/code-stubs-hydrogen.cc +++ b/src/code-stubs-hydrogen.cc @@ -106,13 +106,12 @@ bool CodeStubGraphBuilderBase::BuildGraph() { Zone* zone = this->zone(); int param_count = descriptor_->register_param_count_; HEnvironment* start_environment = graph()->start_environment(); - HBasicBlock* next_block = CreateBasicBlock(start_environment); + HBasicBlock* next_block = + CreateBasicBlock(start_environment, BailoutId::StubEntry()); current_block()->Goto(next_block); next_block->SetJoinId(BailoutId::StubEntry()); set_current_block(next_block); - start_environment->set_ast_id(BailoutId::StubEntry()); - HConstant* undefined_constant = new(zone) HConstant( isolate()->factory()->undefined_value(), Representation::Tagged()); AddInstruction(undefined_constant); @@ -186,7 +185,7 @@ HValue* CodeStubGraphBuilder::BuildCodeStub() { NULL, FAST_ELEMENTS)); - CheckBuilder builder(this, BailoutId::StubEntry()); + CheckBuilder builder(this); builder.CheckNotUndefined(boilerplate); int size = JSObject::kHeaderSize + casted_stub()->length() * kPointerSize; @@ -281,7 +280,7 @@ HValue* CodeStubGraphBuilder::BuildCodeStub() { ElementsKind to_kind = casted_stub()->to_kind(); BuildNewSpaceArrayCheck(array_length, to_kind); - IfBuilder if_builder(this, BailoutId::StubEntry()); + IfBuilder if_builder(this); if_builder.BeginIf(array_length, graph()->GetConstant0(), Token::EQ); @@ -296,13 +295,11 @@ HValue* CodeStubGraphBuilder::BuildCodeStub() { AddInstruction(new(zone) HFixedArrayBaseLength(elements)); HValue* new_elements = - BuildAllocateElements(context(), to_kind, elements_length, - BailoutId::StubEntry()); + BuildAllocateElements(context(), to_kind, elements_length); BuildCopyElements(context(), elements, casted_stub()->from_kind(), new_elements, - to_kind, array_length, elements_length, - BailoutId::StubEntry()); + to_kind, array_length, elements_length); Factory* factory = isolate()->factory(); diff --git a/src/hydrogen.cc b/src/hydrogen.cc index 6fac302103..8dbb5dd3cc 100644 --- a/src/hydrogen.cc +++ b/src/hydrogen.cc @@ -113,9 +113,11 @@ void HBasicBlock::AddInstruction(HInstruction* instr) { ASSERT(!IsStartBlock() || !IsFinished()); ASSERT(!instr->IsLinked()); ASSERT(!IsFinished()); + // Make sure that we never add instructions without knowing + // what the previous ast id is. + ASSERT(instr->IsSimulate() || instr->IsGoto() || + !last_environment()->previous_ast_id().IsNone()); if (first_ == NULL) { - ASSERT(last_environment() != NULL); - ASSERT(!last_environment()->ast_id().IsNone()); HBlockEntry* entry = new(zone()) HBlockEntry(); entry->InitializeAsFirst(this); first_ = last_ = entry; @@ -213,10 +215,12 @@ void HBasicBlock::AddLeaveInlined(HValue* return_value, } -void HBasicBlock::SetInitialEnvironment(HEnvironment* env) { +void HBasicBlock::SetInitialEnvironment(HEnvironment* env, + BailoutId previous_ast_id) { ASSERT(!HasEnvironment()); ASSERT(first() == NULL); UpdateEnvironment(env); + env->set_previous_ast_id(previous_ast_id); } @@ -227,13 +231,16 @@ void HBasicBlock::SetJoinId(BailoutId ast_id) { HBasicBlock* predecessor = predecessors_[i]; ASSERT(predecessor->end()->IsGoto()); HSimulate* simulate = HSimulate::cast(predecessor->end()->previous()); - // We only need to verify the ID once. ASSERT(i != 0 || (predecessor->last_environment()->closure().is_null() || predecessor->last_environment()->closure()->shared() ->VerifyBailoutId(ast_id))); simulate->set_ast_id(ast_id); - predecessor->last_environment()->set_ast_id(ast_id); + } + HEnvironment* last_environment = this->last_environment(); + ASSERT(last_environment || IsFinished()); + if (last_environment != NULL) { + last_environment->set_previous_ast_id(ast_id); } } @@ -294,7 +301,9 @@ void HBasicBlock::RegisterPredecessor(HBasicBlock* pred) { } } else if (!HasEnvironment() && !IsFinished()) { ASSERT(!IsLoopHeader()); - SetInitialEnvironment(pred->last_environment()->Copy()); + HEnvironment* new_env = pred->last_environment()->Copy(); + SetInitialEnvironment(new_env, + pred->last_environment()->previous_ast_id()); } predecessors_.Add(pred, zone()); @@ -545,18 +554,6 @@ void HGraph::Verify(bool do_full_verify) const { HPhi* phi = block->phis()->at(j); phi->Verify(); } - - // Check that all join blocks have predecessors that end with an - // unconditional goto and agree on their environment node id. - if (block->predecessors()->length() >= 2) { - BailoutId id = - block->predecessors()->first()->last_environment()->ast_id(); - for (int k = 0; k < block->predecessors()->length(); k++) { - HBasicBlock* predecessor = block->predecessors()->at(k); - ASSERT(predecessor->end()->IsGoto()); - ASSERT(predecessor->last_environment()->ast_id() == id); - } - } } // Check special property of first block to have no predecessors. @@ -640,13 +637,13 @@ DEFINE_GET_CONSTANT(Hole, the_hole, HType::Tagged(), false) #undef DEFINE_GET_CONSTANT -HGraphBuilder::CheckBuilder::CheckBuilder(HGraphBuilder* builder, BailoutId id) +HGraphBuilder::CheckBuilder::CheckBuilder(HGraphBuilder* builder) : builder_(builder), finished_(false), - id_(id) { + id_(builder->current_block()->last_environment()->previous_ast_id()) { HEnvironment* env = builder->environment(); - failure_block_ = builder->CreateBasicBlock(env->CopyWithoutHistory()); - merge_block_ = builder->CreateBasicBlock(env->CopyWithoutHistory()); + failure_block_ = builder->CreateBasicBlock(env->CopyWithoutHistory(), id_); + merge_block_ = builder->CreateBasicBlock(env->CopyWithoutHistory(), id_); } @@ -655,9 +652,9 @@ HValue* HGraphBuilder::CheckBuilder::CheckNotUndefined(HValue* value) { HIsNilAndBranch* compare = new(zone()) HIsNilAndBranch(value, kStrictEquality, kUndefinedValue); HBasicBlock* success_block = - builder_->CreateBasicBlock(env->CopyWithoutHistory()); + builder_->CreateBasicBlock(env->CopyWithoutHistory(), id_); HBasicBlock* failure_block = - builder_->CreateBasicBlock(env->CopyWithoutHistory()); + builder_->CreateBasicBlock(env->CopyWithoutHistory(), id_); compare->SetSuccessorAt(0, failure_block); compare->SetSuccessorAt(1, success_block); failure_block->Goto(failure_block_); @@ -675,9 +672,9 @@ HValue* HGraphBuilder::CheckBuilder::CheckIntegerCompare(HValue* left, new(zone()) HCompareIDAndBranch(left, right, op); compare->AssumeRepresentation(Representation::Integer32()); HBasicBlock* success_block = - builder_->CreateBasicBlock(env->CopyWithoutHistory()); + builder_->CreateBasicBlock(env->CopyWithoutHistory(), id_); HBasicBlock* failure_block = - builder_->CreateBasicBlock(env->CopyWithoutHistory()); + builder_->CreateBasicBlock(env->CopyWithoutHistory(), id_); compare->SetSuccessorAt(0, success_block); compare->SetSuccessorAt(1, failure_block); failure_block->Goto(failure_block_); @@ -696,8 +693,8 @@ HValue* HGraphBuilder::CheckBuilder::CheckIntegerEq(HValue* left, void HGraphBuilder::CheckBuilder::End() { ASSERT(!finished_); builder_->current_block()->Goto(merge_block_); - failure_block_->FinishExitWithDeoptimization(HDeoptimize::kUseAll); failure_block_->SetJoinId(id_); + failure_block_->FinishExitWithDeoptimization(HDeoptimize::kUseAll); builder_->set_current_block(merge_block_); merge_block_->SetJoinId(id_); finished_ = true; @@ -709,15 +706,15 @@ HConstant* HGraph::GetInvalidContext() { } -HGraphBuilder::IfBuilder::IfBuilder(HGraphBuilder* builder, BailoutId id) +HGraphBuilder::IfBuilder::IfBuilder(HGraphBuilder* builder) : builder_(builder), finished_(false), did_else_(false), - id_(id) { + id_(builder->current_block()->last_environment()->previous_ast_id()) { HEnvironment* env = builder->environment(); - first_true_block_ = builder->CreateBasicBlock(env->Copy()); + first_true_block_ = builder->CreateBasicBlock(env->Copy(), id_); last_true_block_ = NULL; - first_false_block_ = builder->CreateBasicBlock(env->Copy()); + first_false_block_ = builder->CreateBasicBlock(env->Copy(), id_); } @@ -778,7 +775,7 @@ void HGraphBuilder::IfBuilder::End() { ASSERT(!last_false_block->IsFinished()); HEnvironment* merge_env = last_true_block_->last_environment()->CopyWithoutHistory(); - merge_block_ = builder_->CreateBasicBlock(merge_env); + merge_block_ = builder_->CreateBasicBlock(merge_env, id_); last_true_block_->Goto(merge_block_); last_false_block->Goto(merge_block_); merge_block_->SetJoinId(id_); @@ -789,14 +786,13 @@ void HGraphBuilder::IfBuilder::End() { HGraphBuilder::LoopBuilder::LoopBuilder(HGraphBuilder* builder, HValue* context, - LoopBuilder::Direction direction, - BailoutId id) + LoopBuilder::Direction direction) : builder_(builder), context_(context), direction_(direction), - id_(id), + id_(builder->current_block()->last_environment()->previous_ast_id()), finished_(false) { - header_block_ = builder->CreateLoopHeaderBlock(); + header_block_ = builder->CreateLoopHeaderBlock(id_); body_block_ = NULL; exit_block_ = NULL; } @@ -817,8 +813,8 @@ HValue* HGraphBuilder::LoopBuilder::BeginBody( HEnvironment* body_env = env->Copy(); HEnvironment* exit_env = env->Copy(); - body_block_ = builder_->CreateBasicBlock(body_env); - exit_block_ = builder_->CreateBasicBlock(exit_env); + body_block_ = builder_->CreateBasicBlock(body_env, id_); + exit_block_ = builder_->CreateBasicBlock(exit_env, id_); // Remove the phi from the expression stack body_env->Pop(); @@ -899,7 +895,7 @@ void HGraphBuilder::AddSimulate(BailoutId id, RemovableSimulate removable) { ASSERT(current_block() != NULL); current_block()->AddSimulate(id, removable); - environment()->set_ast_id(id); + environment()->set_previous_ast_id(id); } @@ -934,17 +930,18 @@ HReturn* HGraphBuilder::AddReturn(HValue* value) { } -HBasicBlock* HGraphBuilder::CreateBasicBlock(HEnvironment* env) { +HBasicBlock* HGraphBuilder::CreateBasicBlock(HEnvironment* env, + BailoutId previous_ast_id) { HBasicBlock* b = graph()->CreateBasicBlock(); - b->SetInitialEnvironment(env); + b->SetInitialEnvironment(env, previous_ast_id); return b; } -HBasicBlock* HGraphBuilder::CreateLoopHeaderBlock() { +HBasicBlock* HGraphBuilder::CreateLoopHeaderBlock(BailoutId previous_ast_id) { HBasicBlock* header = graph()->CreateBasicBlock(); HEnvironment* entry_env = environment()->CopyAsLoopHeader(header); - header->SetInitialEnvironment(entry_env); + header->SetInitialEnvironment(entry_env, previous_ast_id); header->AttachLoopInformation(); return header; } @@ -1044,16 +1041,16 @@ HValue* HGraphBuilder::BuildCheckForCapacityGrow(HValue* object, HValue* length, HValue* key, bool is_js_array) { - BailoutId ast_id = environment()->ast_id(); + BailoutId ast_id = environment()->previous_ast_id(); Zone* zone = this->zone(); - IfBuilder length_checker(this, ast_id); + IfBuilder length_checker(this); length_checker.BeginIf(length, key, Token::EQ); HValue* current_capacity = AddInstruction(new(zone) HFixedArrayBaseLength(elements)); - IfBuilder capacity_checker(this, ast_id); + IfBuilder capacity_checker(this); capacity_checker.BeginIf(length, current_capacity, Token::EQ); @@ -1064,7 +1061,7 @@ HValue* HGraphBuilder::BuildCheckForCapacityGrow(HValue* object, HValue* new_elements = BuildGrowElementsCapacity(object, elements, kind, length, - new_capacity, ast_id); + new_capacity); environment()->Push(new_elements); capacity_checker.BeginElse(); @@ -1104,11 +1101,10 @@ HValue* HGraphBuilder::BuildCopyElementsOnWrite(HValue* object, HValue* elements, ElementsKind kind, HValue* length) { - BailoutId ast_id = environment()->ast_id(); Zone* zone = this->zone(); Heap* heap = isolate()->heap(); - IfBuilder cow_checker(this, ast_id); + IfBuilder cow_checker(this); cow_checker.BeginIfMapEquals(elements, Handle(heap->fixed_cow_array_map())); @@ -1118,7 +1114,7 @@ HValue* HGraphBuilder::BuildCopyElementsOnWrite(HValue* object, HValue* new_elements = BuildGrowElementsCapacity(object, elements, kind, length, - capacity, ast_id); + capacity); environment()->Push(new_elements); @@ -1180,11 +1176,9 @@ HInstruction* HGraphBuilder::BuildUncheckedMonomorphicElementAccess( HLoadExternalArrayPointer* external_elements = new(zone) HLoadExternalArrayPointer(elements); AddInstruction(external_elements); - BailoutId previous_id = environment()->ast_id(); - ASSERT(!previous_id.IsNone()); - IfBuilder length_checker(this, previous_id); + IfBuilder length_checker(this); length_checker.BeginIf(key, length, Token::LT); - CheckBuilder negative_checker(this, previous_id); + CheckBuilder negative_checker(this); HValue* bounds_check = negative_checker.CheckIntegerCompare( key, graph()->GetConstant0(), Token::GTE); negative_checker.End(); @@ -1243,8 +1237,8 @@ HInstruction* HGraphBuilder::BuildUncheckedMonomorphicElementAccess( HValue* HGraphBuilder::BuildAllocateElements(HValue* context, ElementsKind kind, - HValue* capacity, - BailoutId ast_id) { + HValue* capacity) { + BailoutId ast_id = current_block()->last_environment()->previous_ast_id(); Zone* zone = this->zone(); int elements_size = IsFastDoubleElementsKind(kind) @@ -1371,19 +1365,18 @@ HValue* HGraphBuilder::BuildGrowElementsCapacity(HValue* object, HValue* elements, ElementsKind kind, HValue* length, - HValue* new_capacity, - BailoutId ast_id) { + HValue* new_capacity) { Zone* zone = this->zone(); HValue* context = environment()->LookupContext(); BuildNewSpaceArrayCheck(new_capacity, kind); HValue* new_elements = - BuildAllocateElements(context, kind, new_capacity, ast_id); + BuildAllocateElements(context, kind, new_capacity); BuildCopyElements(context, elements, kind, new_elements, kind, - length, new_capacity, ast_id); + length, new_capacity); Factory* factory = isolate()->factory(); HInstruction* elements_store = AddInstruction(new(zone) HStoreNamedField( @@ -1401,8 +1394,8 @@ void HGraphBuilder::BuildFillElementsWithHole(HValue* context, HValue* elements, ElementsKind elements_kind, HValue* from, - HValue* to, - BailoutId ast_id) { + HValue* to) { + BailoutId ast_id = current_block()->last_environment()->previous_ast_id(); // Fast elements kinds need to be initialized in case statements below cause // a garbage collection. Factory* factory = isolate()->factory(); @@ -1415,7 +1408,7 @@ void HGraphBuilder::BuildFillElementsWithHole(HValue* context, : AddInstruction(new(zone) HConstant(nan_double, Representation::Double())); - LoopBuilder builder(this, context, LoopBuilder::kPostIncrement, ast_id); + LoopBuilder builder(this, context, LoopBuilder::kPostIncrement); HValue* key = builder.BeginBody(from, to, Token::LT); @@ -1432,8 +1425,8 @@ void HGraphBuilder::BuildCopyElements(HValue* context, HValue* to_elements, ElementsKind to_elements_kind, HValue* length, - HValue* capacity, - BailoutId ast_id) { + HValue* capacity) { + BailoutId ast_id = environment()->previous_ast_id(); bool pre_fill_with_holes = IsFastDoubleElementsKind(from_elements_kind) && IsFastObjectElementsKind(to_elements_kind); @@ -1443,10 +1436,10 @@ void HGraphBuilder::BuildCopyElements(HValue* context, // pre-initialized with holes to make sure that it's always in a consistent // state. BuildFillElementsWithHole(context, to_elements, to_elements_kind, - graph()->GetConstant0(), capacity, ast_id); + graph()->GetConstant0(), capacity); } - LoopBuilder builder(this, context, LoopBuilder::kPostIncrement, ast_id); + LoopBuilder builder(this, context, LoopBuilder::kPostIncrement); HValue* key = builder.BeginBody(graph()->GetConstant0(), length, Token::LT); @@ -1464,7 +1457,7 @@ void HGraphBuilder::BuildCopyElements(HValue* context, if (!pre_fill_with_holes && length != capacity) { // Fill unused capacity with the hole. BuildFillElementsWithHole(context, to_elements, to_elements_kind, - key, capacity, ast_id); + key, capacity); } } @@ -1562,9 +1555,9 @@ HGraph::HGraph(CompilationInfo* info) start_environment_ = new(zone_) HEnvironment(NULL, info->scope(), info->closure(), zone_); } - start_environment_->set_ast_id(BailoutId::FunctionEntry()); entry_block_ = CreateBasicBlock(); - entry_block_->SetInitialEnvironment(start_environment_); + entry_block_->SetInitialEnvironment(start_environment_, + BailoutId::FunctionEntry()); } @@ -4149,7 +4142,8 @@ bool HOptimizedGraphBuilder::BuildGraph() { // values (but not instructions), present in the initial environment and // not replayed by the Lithium translation. HEnvironment* initial_env = environment()->CopyWithoutHistory(); - HBasicBlock* body_entry = CreateBasicBlock(initial_env); + HBasicBlock* body_entry = CreateBasicBlock(initial_env, + BailoutId::FunctionEntry()); current_block()->Goto(body_entry); body_entry->SetJoinId(BailoutId::FunctionEntry()); set_current_block(body_entry); @@ -5407,7 +5401,7 @@ void HOptimizedGraphBuilder::VisitDoWhileStatement(DoWhileStatement* stmt) { ASSERT(current_block()->HasPredecessor()); ASSERT(current_block() != NULL); bool osr_entry = PreProcessOsrEntry(stmt); - HBasicBlock* loop_entry = CreateLoopHeaderBlock(); + HBasicBlock* loop_entry = CreateLoopHeaderBlock(stmt->EntryId()); current_block()->Goto(loop_entry); set_current_block(loop_entry); if (osr_entry) graph()->set_osr_loop_entry(loop_entry); @@ -5450,7 +5444,7 @@ void HOptimizedGraphBuilder::VisitWhileStatement(WhileStatement* stmt) { ASSERT(current_block()->HasPredecessor()); ASSERT(current_block() != NULL); bool osr_entry = PreProcessOsrEntry(stmt); - HBasicBlock* loop_entry = CreateLoopHeaderBlock(); + HBasicBlock* loop_entry = CreateLoopHeaderBlock(stmt->EntryId()); current_block()->Goto(loop_entry); set_current_block(loop_entry); if (osr_entry) graph()->set_osr_loop_entry(loop_entry); @@ -5497,7 +5491,7 @@ void HOptimizedGraphBuilder::VisitForStatement(ForStatement* stmt) { } ASSERT(current_block() != NULL); bool osr_entry = PreProcessOsrEntry(stmt); - HBasicBlock* loop_entry = CreateLoopHeaderBlock(); + HBasicBlock* loop_entry = CreateLoopHeaderBlock(stmt->EntryId()); current_block()->Goto(loop_entry); set_current_block(loop_entry); if (osr_entry) graph()->set_osr_loop_entry(loop_entry); @@ -5592,7 +5586,7 @@ void HOptimizedGraphBuilder::VisitForInStatement(ForInStatement* stmt) { HForInCacheArray::cast(index_cache)); bool osr_entry = PreProcessOsrEntry(stmt); - HBasicBlock* loop_entry = CreateLoopHeaderBlock(); + HBasicBlock* loop_entry = CreateLoopHeaderBlock(stmt->EntryId()); current_block()->Goto(loop_entry); set_current_block(loop_entry); if (osr_entry) graph()->set_osr_loop_entry(loop_entry); @@ -8086,7 +8080,7 @@ bool HOptimizedGraphBuilder::TryInline(CallKind call_kind, AddSimulate(return_id); current_block()->UpdateEnvironment(inner_env); - + inner_env->set_previous_ast_id(BailoutId::FunctionEntry()); ZoneList* arguments_values = NULL; // If the function uses arguments copy current arguments values @@ -10609,6 +10603,7 @@ HEnvironment::HEnvironment(HEnvironment* outer, pop_count_(0), push_count_(0), ast_id_(BailoutId::None()), + previous_ast_id_(BailoutId::None()), zone_(zone) { Initialize(scope->num_parameters() + 1, scope->num_stack_slots(), 0); } @@ -10625,6 +10620,7 @@ HEnvironment::HEnvironment(Zone* zone, int parameter_count) pop_count_(0), push_count_(0), ast_id_(BailoutId::None()), + previous_ast_id_(BailoutId::None()), zone_(zone) { Initialize(parameter_count, 0, 0); } @@ -10641,6 +10637,7 @@ HEnvironment::HEnvironment(const HEnvironment* other, Zone* zone) pop_count_(0), push_count_(0), ast_id_(other->ast_id()), + previous_ast_id_(BailoutId::None()), zone_(zone) { Initialize(other); } @@ -10661,6 +10658,7 @@ HEnvironment::HEnvironment(HEnvironment* outer, pop_count_(0), push_count_(0), ast_id_(BailoutId::None()), + previous_ast_id_(BailoutId::None()), zone_(zone) { } diff --git a/src/hydrogen.h b/src/hydrogen.h index 0072c77cc2..6dea1a6807 100644 --- a/src/hydrogen.h +++ b/src/hydrogen.h @@ -108,7 +108,7 @@ class HBasicBlock: public ZoneObject { bool Dominates(HBasicBlock* other) const; int LoopNestingDepth() const; - void SetInitialEnvironment(HEnvironment* env); + void SetInitialEnvironment(HEnvironment* env, BailoutId previous_id); void ClearEnvironment() { last_environment_ = NULL; } bool HasEnvironment() const { return last_environment_ != NULL; } void UpdateEnvironment(HEnvironment* env) { last_environment_ = env; } @@ -483,6 +483,8 @@ class HEnvironment: public ZoneObject { BailoutId ast_id() const { return ast_id_; } void set_ast_id(BailoutId id) { ast_id_ = id; } + BailoutId previous_ast_id() const { return previous_ast_id_; } + void set_previous_ast_id(BailoutId id) { previous_ast_id_ = id; } HEnterInlined* entry() const { return entry_; } void set_entry(HEnterInlined* entry) { entry_ = entry; } @@ -644,6 +646,7 @@ class HEnvironment: public ZoneObject { int pop_count_; int push_count_; BailoutId ast_id_; + BailoutId previous_ast_id_; Zone* zone_; }; @@ -891,8 +894,9 @@ class HGraphBuilder { protected: virtual bool BuildGraph() = 0; - HBasicBlock* CreateBasicBlock(HEnvironment* env); - HBasicBlock* CreateLoopHeaderBlock(); + HBasicBlock* CreateBasicBlock(HEnvironment* envy, + BailoutId previous_ast_id); + HBasicBlock* CreateLoopHeaderBlock(BailoutId previous_ast_id); // Building common constructs HInstruction* BuildExternalArrayElementAccess( @@ -940,7 +944,7 @@ class HGraphBuilder { class CheckBuilder { public: - CheckBuilder(HGraphBuilder* builder, BailoutId id); + explicit CheckBuilder(HGraphBuilder* builder); ~CheckBuilder() { if (!finished_) End(); } @@ -962,7 +966,7 @@ class HGraphBuilder { class IfBuilder { public: - IfBuilder(HGraphBuilder* builder, BailoutId id); + explicit IfBuilder(HGraphBuilder* builder); ~IfBuilder() { if (!finished_) End(); } @@ -1001,8 +1005,7 @@ class HGraphBuilder { LoopBuilder(HGraphBuilder* builder, HValue* context, - Direction direction, - BailoutId id); + Direction direction); ~LoopBuilder() { ASSERT(finished_); } @@ -1037,22 +1040,19 @@ class HGraphBuilder { HValue* BuildAllocateElements(HValue* context, ElementsKind kind, - HValue* capacity, - BailoutId ast_id); + HValue* capacity); HValue* BuildGrowElementsCapacity(HValue* object, HValue* elements, ElementsKind kind, HValue* length, - HValue* new_capacity, - BailoutId ast_id); + HValue* new_capacity); void BuildFillElementsWithHole(HValue* context, HValue* elements, ElementsKind elements_kind, HValue* from, - HValue* to, - BailoutId ast_id); + HValue* to); void BuildCopyElements(HValue* context, HValue* from_elements, @@ -1060,8 +1060,7 @@ class HGraphBuilder { HValue* to_elements, ElementsKind to_elements_kind, HValue* length, - HValue* capacity, - BailoutId ast_id); + HValue* capacity); private: HGraphBuilder();