Revision: 16680
Author: [email protected]
Date: Thu Sep 12 11:18:10 2013 UTC
Log: Revert "Fix phis for non-sse2 double values"
Need to investigate box2d regression.
BUG=
[email protected]
Review URL: https://codereview.chromium.org/23437028
http://code.google.com/p/v8/source/detail?r=16680
Modified:
/branches/bleeding_edge/src/ia32/lithium-codegen-ia32.cc
/branches/bleeding_edge/src/ia32/lithium-codegen-ia32.h
/branches/bleeding_edge/src/ia32/lithium-ia32.cc
/branches/bleeding_edge/src/ia32/lithium-ia32.h
=======================================
--- /branches/bleeding_edge/src/ia32/lithium-codegen-ia32.cc Thu Sep 12
09:05:27 2013 UTC
+++ /branches/bleeding_edge/src/ia32/lithium-codegen-ia32.cc Thu Sep 12
11:18:10 2013 UTC
@@ -382,13 +382,9 @@
instr->CompileToNative(this);
- if (!CpuFeatures::IsSupported(SSE2)) {
- if (instr->IsGoto()) {
- x87_stack_.LeavingBlock(current_block_, LGoto::cast(instr));
- } else if (FLAG_debug_code && FLAG_enable_slow_asserts &&
- !instr->IsGap() && !instr->IsReturn()) {
+ if (!CpuFeatures::IsSupported(SSE2) &&
+ FLAG_debug_code && FLAG_enable_slow_asserts) {
__ VerifyX87StackDepth(x87_stack_.depth());
- }
}
}
EnsureSpaceForLazyDeopt();
@@ -686,21 +682,6 @@
__ fstp(0);
stack_depth_--;
}
- __ VerifyX87StackDepth(0);
- }
-}
-
-
-void LCodeGen::X87Stack::LeavingBlock(int current_block_id, LGoto*
goto_instr) {
- ASSERT(stack_depth_ <= 1);
- // If ever used for new stubs producing two pairs of doubles joined into
two
- // phis this assert hits. That situation is not handled, since the two
stacks
- // might have st0 and st1 swapped.
- if (current_block_id + 1 != goto_instr->block_id()) {
- // If we have a value on the x87 stack on leaving a block, it must be a
- // phi input. If the next block we compile is not the join block, we
have
- // to discard the stack state.
- stack_depth_ = 0;
}
}
@@ -2503,10 +2484,6 @@
__ jmp(chunk_->GetAssemblyLabel(LookupDestination(block)));
}
}
-
-
-void LCodeGen::DoClobberDoubles(LClobberDoubles* instr) {
-}
void LCodeGen::DoGoto(LGoto* instr) {
=======================================
--- /branches/bleeding_edge/src/ia32/lithium-codegen-ia32.h Thu Sep 12
09:05:27 2013 UTC
+++ /branches/bleeding_edge/src/ia32/lithium-codegen-ia32.h Thu Sep 12
11:18:10 2013 UTC
@@ -471,7 +471,6 @@
void PrepareToWrite(X87Register reg);
void CommitWrite(X87Register reg);
void FlushIfNecessary(LInstruction* instr, LCodeGen* cgen);
- void LeavingBlock(int current_block_id, LGoto* goto_instr);
int depth() const { return stack_depth_; }
void pop() {
ASSERT(is_mutable_);
=======================================
--- /branches/bleeding_edge/src/ia32/lithium-ia32.cc Thu Sep 12 09:05:27
2013 UTC
+++ /branches/bleeding_edge/src/ia32/lithium-ia32.cc Thu Sep 12 11:18:10
2013 UTC
@@ -954,16 +954,6 @@
if (FLAG_stress_environments && !instr->HasEnvironment()) {
instr = AssignEnvironment(instr);
}
- if (!CpuFeatures::IsSafeForSnapshot(SSE2) && instr->IsGoto() &&
- LGoto::cast(instr)->jumps_to_join()) {
- // TODO(olivf) Since phis of spilled values are joined as registers
- // (not in the stack slot), we need to allow the goto gaps to keep
one
- // x87 register alive. To ensure all other values are still spilled,
we
- // insert a fpu register barrier right before.
- LClobberDoubles* clobber = new(zone()) LClobberDoubles();
- clobber->set_hydrogen_value(current);
- chunk_->AddInstruction(clobber, current_block_);
- }
instr->set_hydrogen_value(current);
chunk_->AddInstruction(instr, current_block_);
}
@@ -1056,7 +1046,7 @@
LInstruction* LChunkBuilder::DoGoto(HGoto* instr) {
- return new(zone()) LGoto(instr->FirstSuccessor());
+ return new(zone()) LGoto(instr->FirstSuccessor()->block_id());
}
@@ -1068,7 +1058,7 @@
HBasicBlock* successor = HConstant::cast(value)->BooleanValue()
? instr->FirstSuccessor()
: instr->SecondSuccessor();
- return new(zone()) LGoto(successor);
+ return new(zone()) LGoto(successor->block_id());
}
ToBooleanStub::Types expected = instr->expected_input_types();
=======================================
--- /branches/bleeding_edge/src/ia32/lithium-ia32.h Thu Sep 12 09:05:27
2013 UTC
+++ /branches/bleeding_edge/src/ia32/lithium-ia32.h Thu Sep 12 11:18:10
2013 UTC
@@ -73,7 +73,6 @@
V(ClampTToUint8) \
V(ClampTToUint8NoSSE2) \
V(ClassOfTestAndBranch) \
- V(ClobberDoubles) \
V(CompareNumericAndBranch) \
V(CmpObjectEqAndBranch) \
V(CmpHoleAndBranch) \
@@ -407,32 +406,19 @@
};
-class LClobberDoubles V8_FINAL : public LTemplateInstruction<0, 0, 0> {
- public:
- LClobberDoubles() { ASSERT(!CpuFeatures::IsSafeForSnapshot(SSE2)); }
-
- virtual bool ClobbersDoubleRegisters() const { return true; }
-
- DECLARE_CONCRETE_INSTRUCTION(ClobberDoubles, "clobber-d")
-};
-
-
class LGoto V8_FINAL : public LTemplateInstruction<0, 0, 0> {
public:
- explicit LGoto(HBasicBlock* block) : block_(block) { }
+ explicit LGoto(int block_id) : block_id_(block_id) { }
virtual bool HasInterestingComment(LCodeGen* gen) const V8_OVERRIDE;
DECLARE_CONCRETE_INSTRUCTION(Goto, "goto")
virtual void PrintDataTo(StringStream* stream) V8_OVERRIDE;
virtual bool IsControl() const V8_OVERRIDE { return true; }
- int block_id() const { return block_->block_id(); }
- virtual bool ClobbersDoubleRegisters() const { return false; }
-
- bool jumps_to_join() const { return block_->predecessors()->length() >
1; }
+ int block_id() const { return block_id_; }
private:
- HBasicBlock* block_;
+ int block_id_;
};
--
--
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.