Reviewers: danno,
Message:
PTAL
Description:
Revert r14610 because of test-262 failures.
[email protected]
Please review this at https://chromiumcodereview.appspot.com/14838012/
SVN Base: https://v8.googlecode.com/svn/branches/bleeding_edge
Affected files:
M src/hydrogen.h
M src/hydrogen.cc
Index: src/hydrogen.cc
diff --git a/src/hydrogen.cc b/src/hydrogen.cc
index
f34934c85a14ba35aabc93d0b21485c62f8686ed..2a1f84c369c432fc3c32bd8867a9f6b6d91aa8fa
100644
--- a/src/hydrogen.cc
+++ b/src/hydrogen.cc
@@ -752,7 +752,6 @@ void
HGraphBuilder::IfBuilder::AddCompare(HControlInstruction* compare) {
compare->SetSuccessorAt(1, split_edge);
}
split_edge->GotoNoSimulate(split_edge_merge_block_);
- ASSERT(builder_->SafeToAddPhiInNoSideEffectsScope());
} else {
compare->SetSuccessorAt(0, first_true_block_);
compare->SetSuccessorAt(1, first_false_block_);
@@ -770,7 +769,6 @@ void HGraphBuilder::IfBuilder::Or() {
split_edge_merge_block_ =
builder_->CreateBasicBlock(env->Copy());
first_true_block_->GotoNoSimulate(split_edge_merge_block_);
- ASSERT(builder_->SafeToAddPhiInNoSideEffectsScope());
first_true_block_ = split_edge_merge_block_;
}
builder_->set_current_block(first_false_block_);
@@ -785,7 +783,6 @@ void HGraphBuilder::IfBuilder::And() {
if (split_edge_merge_block_ == NULL) {
split_edge_merge_block_ = builder_->CreateBasicBlock(env->Copy());
first_false_block_->GotoNoSimulate(split_edge_merge_block_);
- ASSERT(builder_->SafeToAddPhiInNoSideEffectsScope());
first_false_block_ = split_edge_merge_block_;
}
builder_->set_current_block(first_true_block_);
@@ -817,7 +814,6 @@ void HGraphBuilder::IfBuilder::Then() {
// Handle if's without any expressions, they jump directly to
the "else"
// branch.
builder_->current_block()->GotoNoSimulate(first_false_block_);
- ASSERT(builder_->SafeToAddPhiInNoSideEffectsScope());
first_true_block_ = NULL;
}
builder_->set_current_block(first_true_block_);
@@ -880,7 +876,6 @@ void HGraphBuilder::IfBuilder::End() {
ASSERT(!last_false_block->IsFinished());
last_true_block_->GotoNoSimulate(merge_block_);
last_false_block->GotoNoSimulate(merge_block_);
- ASSERT(builder_->SafeToAddPhiInNoSideEffectsScope());
builder_->set_current_block(merge_block_);
}
}
@@ -913,7 +908,6 @@ HValue* HGraphBuilder::LoopBuilder::BeginBody(
phi_->AssumeRepresentation(Representation::Integer32());
env->Push(initial);
builder_->current_block()->GotoNoSimulate(header_block_);
- ASSERT(builder_->SafeToAddPhiInNoSideEffectsScope());
HEnvironment* body_env = env->Copy();
HEnvironment* exit_env = env->Copy();
@@ -968,7 +962,6 @@ void HGraphBuilder::LoopBuilder::EndBody() {
// Push the new increment value on the expression stack to merge into
the phi.
builder_->environment()->Push(increment_);
builder_->current_block()->GotoNoSimulate(header_block_);
- ASSERT(builder_->SafeToAddPhiInNoSideEffectsScope());
header_block_->loop_information()->RegisterBackEdge(body_block_);
builder_->set_current_block(exit_block_);
@@ -8235,7 +8228,6 @@ HValue*
HOptimizedGraphBuilder::HandlePolymorphicElementAccess(
access->set_position(position);
}
if_jsarray->GotoNoSimulate(join);
- ASSERT(SafeToAddPhiInNoSideEffectsScope());
set_current_block(if_fastobject);
length = AddInstruction(new(zone())
HFixedArrayBaseLength(elements));
@@ -8262,7 +8254,6 @@ HValue*
HOptimizedGraphBuilder::HandlePolymorphicElementAccess(
Push(access);
}
current_block()->GotoNoSimulate(join);
- ASSERT(SafeToAddPhiInNoSideEffectsScope());
set_current_block(if_false);
}
}
Index: src/hydrogen.h
diff --git a/src/hydrogen.h b/src/hydrogen.h
index
e5d83377ac0e7f53d48c364d6b313204322dc283..a95424a1c9e455ffa4a9664770844aee75b28b7d
100644
--- a/src/hydrogen.h
+++ b/src/hydrogen.h
@@ -934,7 +934,6 @@ class HGraphBuilder {
: info_(info),
graph_(NULL),
current_block_(NULL),
- no_side_effects_scope_environment_delta_(0),
no_side_effects_scope_count_(0) {}
virtual ~HGraphBuilder() {}
@@ -966,31 +965,11 @@ class HGraphBuilder {
HReturn* AddReturn(HValue* value);
void IncrementInNoSideEffectsScope() {
- if (no_side_effects_scope_count_ == 0) {
- no_side_effects_scope_environment_delta_ =
- environment()->push_count() - environment()->pop_count();
- }
no_side_effects_scope_count_++;
}
void DecrementInNoSideEffectsScope() {
no_side_effects_scope_count_--;
- if (no_side_effects_scope_count_ == 0) {
- // No-side-effects scope should not change push-pop delta.
- ASSERT_EQ(no_side_effects_scope_environment_delta_,
- environment()->push_count() - environment()->pop_count());
- no_side_effects_scope_environment_delta_ = 0;
- }
- }
-
- bool SafeToAddPhiInNoSideEffectsScope() {
- // Pops and pushes after a simulate are not visible in LChunkBuilder.
- // If the number of pops is greater than the number pushes then the
- // environment in HGraphBuilder is shorter then the corresponding
- // environment in LChunkBuilder. This causes non-observable phis
- // to be pushed in the environment, which breaks deoptimization.
- return no_side_effects_scope_count_ == 0 ||
- no_side_effects_scope_environment_delta_ >= 0;
}
protected:
@@ -1353,7 +1332,6 @@ class HGraphBuilder {
CompilationInfo* info_;
HGraph* graph_;
HBasicBlock* current_block_;
- int no_side_effects_scope_environment_delta_;
int no_side_effects_scope_count_;
};
--
--
v8-dev mailing list
[email protected]
http://groups.google.com/group/v8-dev
---
You received this message because you are subscribed to the Google Groups "v8-dev" group.
To unsubscribe from this group and stop receiving emails from it, send an email
to [email protected].
For more options, visit https://groups.google.com/groups/opt_out.