Index: src/hydrogen.cc |
diff --git a/src/hydrogen.cc b/src/hydrogen.cc |
index 513e983129edd44e404471744cf0725363cafa5e..e11dbf0222a26d5ab23b0878cf0b81e092a1b2e2 100644 |
--- a/src/hydrogen.cc |
+++ b/src/hydrogen.cc |
@@ -133,10 +133,10 @@ HDeoptimize* HBasicBlock::CreateDeoptimize( |
} |
-HSimulate* HBasicBlock::CreateSimulate(int ast_id) { |
+HSimulate* HBasicBlock::CreateSimulate(BailoutId ast_id) { |
ASSERT(HasEnvironment()); |
HEnvironment* environment = last_environment(); |
- ASSERT(ast_id == AstNode::kNoNumber || |
+ ASSERT(ast_id.IsNone() || |
environment->closure()->shared()->VerifyBailoutId(ast_id)); |
int push_count = environment->push_count(); |
@@ -174,7 +174,7 @@ void HBasicBlock::Goto(HBasicBlock* block, FunctionState* state) { |
last_environment_ = last_environment()->DiscardInlined(drop_extra); |
} |
- AddSimulate(AstNode::kNoNumber); |
+ AddSimulate(BailoutId::None()); |
HGoto* instr = new(zone()) HGoto(block); |
Finish(instr); |
} |
@@ -191,7 +191,7 @@ void HBasicBlock::AddLeaveInlined(HValue* return_value, |
AddInstruction(new(zone()) HLeaveInlined(arguments_pushed)); |
last_environment_ = last_environment()->DiscardInlined(drop_extra); |
last_environment()->Push(return_value); |
- AddSimulate(AstNode::kNoNumber); |
+ AddSimulate(BailoutId::None()); |
HGoto* instr = new(zone()) HGoto(target); |
Finish(instr); |
} |
@@ -204,7 +204,7 @@ void HBasicBlock::SetInitialEnvironment(HEnvironment* env) { |
} |
-void HBasicBlock::SetJoinId(int ast_id) { |
+void HBasicBlock::SetJoinId(BailoutId ast_id) { |
int length = predecessors_.length(); |
ASSERT(length > 0); |
for (int i = 0; i < length; i++) { |
@@ -527,7 +527,8 @@ void HGraph::Verify(bool do_full_verify) const { |
// 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) { |
- int id = block->predecessors()->first()->last_environment()->ast_id(); |
+ 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()); |
@@ -636,7 +637,7 @@ HGraphBuilder::HGraphBuilder(CompilationInfo* info, |
HBasicBlock* HGraphBuilder::CreateJoin(HBasicBlock* first, |
HBasicBlock* second, |
- int join_id) { |
+ BailoutId join_id) { |
if (first == NULL) { |
return second; |
} else if (second == NULL) { |
@@ -697,7 +698,7 @@ HGraph::HGraph(CompilationInfo* info) |
is_recursive_(false) { |
start_environment_ = |
new(zone_) HEnvironment(NULL, info->scope(), info->closure(), zone_); |
- start_environment_->set_ast_id(AstNode::kFunctionEntryId); |
+ start_environment_->set_ast_id(BailoutId::FunctionEntry()); |
entry_block_ = CreateBasicBlock(); |
entry_block_->SetInitialEnvironment(start_environment_); |
} |
@@ -2842,14 +2843,15 @@ void TestContext::ReturnValue(HValue* value) { |
} |
-void EffectContext::ReturnInstruction(HInstruction* instr, int ast_id) { |
+void EffectContext::ReturnInstruction(HInstruction* instr, BailoutId ast_id) { |
ASSERT(!instr->IsControlInstruction()); |
owner()->AddInstruction(instr); |
if (instr->HasObservableSideEffects()) owner()->AddSimulate(ast_id); |
} |
-void EffectContext::ReturnControl(HControlInstruction* instr, int ast_id) { |
+void EffectContext::ReturnControl(HControlInstruction* instr, |
+ BailoutId ast_id) { |
ASSERT(!instr->HasObservableSideEffects()); |
HBasicBlock* empty_true = owner()->graph()->CreateBasicBlock(); |
HBasicBlock* empty_false = owner()->graph()->CreateBasicBlock(); |
@@ -2861,7 +2863,7 @@ void EffectContext::ReturnControl(HControlInstruction* instr, int ast_id) { |
} |
-void ValueContext::ReturnInstruction(HInstruction* instr, int ast_id) { |
+void ValueContext::ReturnInstruction(HInstruction* instr, BailoutId ast_id) { |
ASSERT(!instr->IsControlInstruction()); |
if (!arguments_allowed() && instr->CheckFlag(HValue::kIsArguments)) { |
return owner()->Bailout("bad value context for arguments object value"); |
@@ -2872,7 +2874,7 @@ void ValueContext::ReturnInstruction(HInstruction* instr, int ast_id) { |
} |
-void ValueContext::ReturnControl(HControlInstruction* instr, int ast_id) { |
+void ValueContext::ReturnControl(HControlInstruction* instr, BailoutId ast_id) { |
ASSERT(!instr->HasObservableSideEffects()); |
if (!arguments_allowed() && instr->CheckFlag(HValue::kIsArguments)) { |
return owner()->Bailout("bad value context for arguments object value"); |
@@ -2892,7 +2894,7 @@ void ValueContext::ReturnControl(HControlInstruction* instr, int ast_id) { |
} |
-void TestContext::ReturnInstruction(HInstruction* instr, int ast_id) { |
+void TestContext::ReturnInstruction(HInstruction* instr, BailoutId ast_id) { |
ASSERT(!instr->IsControlInstruction()); |
HGraphBuilder* builder = owner(); |
builder->AddInstruction(instr); |
@@ -2907,7 +2909,7 @@ void TestContext::ReturnInstruction(HInstruction* instr, int ast_id) { |
} |
-void TestContext::ReturnControl(HControlInstruction* instr, int ast_id) { |
+void TestContext::ReturnControl(HControlInstruction* instr, BailoutId ast_id) { |
ASSERT(!instr->HasObservableSideEffects()); |
HBasicBlock* empty_true = owner()->graph()->CreateBasicBlock(); |
HBasicBlock* empty_false = owner()->graph()->CreateBasicBlock(); |
@@ -2931,7 +2933,7 @@ void TestContext::BuildBranch(HValue* value) { |
} |
HBasicBlock* empty_true = builder->graph()->CreateBasicBlock(); |
HBasicBlock* empty_false = builder->graph()->CreateBasicBlock(); |
- unsigned test_id = condition()->test_id(); |
+ TypeFeedbackId test_id = condition()->test_id(); |
ToBooleanStub::Types expected(builder->oracle()->ToBooleanTypes(test_id)); |
HBranch* test = new(zone()) HBranch(value, empty_true, empty_false, expected); |
builder->current_block()->Finish(test); |
@@ -3052,7 +3054,7 @@ HGraph* HGraphBuilder::CreateGraph() { |
HEnvironment* initial_env = environment()->CopyWithoutHistory(); |
HBasicBlock* body_entry = CreateBasicBlock(initial_env); |
current_block()->Goto(body_entry); |
- body_entry->SetJoinId(AstNode::kFunctionEntryId); |
+ body_entry->SetJoinId(BailoutId::FunctionEntry()); |
set_current_block(body_entry); |
// Handle implicit declaration of the function name in named function |
@@ -3061,7 +3063,7 @@ HGraph* HGraphBuilder::CreateGraph() { |
VisitVariableDeclaration(scope->function()); |
} |
VisitDeclarations(scope->declarations()); |
- AddSimulate(AstNode::kDeclarationsId); |
+ AddSimulate(BailoutId::Declarations()); |
HValue* context = environment()->LookupContext(); |
AddInstruction( |
@@ -3577,7 +3579,7 @@ HInstruction* HGraphBuilder::AddInstruction(HInstruction* instr) { |
} |
-void HGraphBuilder::AddSimulate(int ast_id) { |
+void HGraphBuilder::AddSimulate(BailoutId ast_id) { |
ASSERT(current_block() != NULL); |
current_block()->AddSimulate(ast_id); |
} |
@@ -3951,7 +3953,7 @@ void HGraphBuilder::VisitSwitchStatement(SwitchStatement* stmt) { |
} |
// 2. Build all the tests, with dangling true branches |
- int default_id = AstNode::kNoNumber; |
+ BailoutId default_id = BailoutId::None(); |
for (int i = 0; i < clause_count; ++i) { |
CaseClause* clause = clauses->at(i); |
if (clause->is_default()) { |
@@ -4004,9 +4006,7 @@ void HGraphBuilder::VisitSwitchStatement(SwitchStatement* stmt) { |
HBasicBlock* last_block = current_block(); |
if (not_string_block != NULL) { |
- int join_id = (default_id != AstNode::kNoNumber) |
- ? default_id |
- : stmt->ExitId(); |
+ BailoutId join_id = !default_id.IsNone() ? default_id : stmt->ExitId(); |
last_block = CreateJoin(last_block, not_string_block, join_id); |
} |
@@ -4096,7 +4096,7 @@ bool HGraphBuilder::PreProcessOsrEntry(IterationStatement* statement) { |
non_osr_entry->Goto(loop_predecessor); |
set_current_block(osr_entry); |
- int osr_entry_id = statement->OsrEntryId(); |
+ BailoutId osr_entry_id = statement->OsrEntryId(); |
int first_expression_index = environment()->first_expression_index(); |
int length = environment()->length(); |
ZoneList<HUnknownOSRValue*>* osr_values = |
@@ -5270,7 +5270,7 @@ void HGraphBuilder::HandlePropertyAssignment(Assignment* expr) { |
void HGraphBuilder::HandleGlobalVariableAssignment(Variable* var, |
HValue* value, |
int position, |
- int ast_id) { |
+ BailoutId ast_id) { |
LookupResult lookup(isolate()); |
GlobalPropertyAccess type = LookupGlobalProperty(var, &lookup, true); |
if (type == kUseCell) { |
@@ -5966,7 +5966,7 @@ HValue* HGraphBuilder::HandlePolymorphicElementAccess(HValue* object, |
HValue* key, |
HValue* val, |
Expression* prop, |
- int ast_id, |
+ BailoutId ast_id, |
int position, |
bool is_store, |
bool* has_side_effects) { |
@@ -6177,7 +6177,7 @@ HValue* HGraphBuilder::HandleKeyedElementAccess(HValue* obj, |
HValue* key, |
HValue* val, |
Expression* expr, |
- int ast_id, |
+ BailoutId ast_id, |
int position, |
bool is_store, |
bool* has_side_effects) { |
@@ -6609,8 +6609,8 @@ bool HGraphBuilder::TryInline(CallKind call_kind, |
Handle<JSFunction> target, |
int arguments_count, |
HValue* receiver, |
- int ast_id, |
- int return_id, |
+ BailoutId ast_id, |
+ BailoutId return_id, |
ReturnHandlingFlag return_handling) { |
int nodes_added = InliningAstSize(target); |
if (nodes_added == kNotInlinable) return false; |
@@ -8103,7 +8103,7 @@ void HGraphBuilder::VisitLogicalExpression(BinaryOperation* expr) { |
// We need an extra block to maintain edge-split form. |
HBasicBlock* empty_block = graph()->CreateBasicBlock(); |
HBasicBlock* eval_right = graph()->CreateBasicBlock(); |
- unsigned test_id = expr->left()->test_id(); |
+ TypeFeedbackId test_id = expr->left()->test_id(); |
ToBooleanStub::Types expected(oracle()->ToBooleanTypes(test_id)); |
HBranch* test = is_logical_and |
? new(zone()) HBranch(Top(), eval_right, empty_block, expected) |
@@ -9089,7 +9089,7 @@ HEnvironment::HEnvironment(HEnvironment* outer, |
outer_(outer), |
pop_count_(0), |
push_count_(0), |
- ast_id_(AstNode::kNoNumber), |
+ ast_id_(BailoutId::None()), |
zone_(zone) { |
Initialize(scope->num_parameters() + 1, scope->num_stack_slots(), 0); |
} |
@@ -9125,7 +9125,7 @@ HEnvironment::HEnvironment(HEnvironment* outer, |
outer_(outer), |
pop_count_(0), |
push_count_(0), |
- ast_id_(AstNode::kNoNumber), |
+ ast_id_(BailoutId::None()), |
zone_(zone) { |
} |
@@ -9317,7 +9317,7 @@ HEnvironment* HEnvironment::CopyForInlining( |
inner->SetValueAt(i, undefined); |
} |
- inner->set_ast_id(AstNode::kFunctionEntryId); |
+ inner->set_ast_id(BailoutId::FunctionEntry()); |
return inner; |
} |