| Index: src/ia32/lithium-ia32.h
|
| diff --git a/src/ia32/lithium-ia32.h b/src/ia32/lithium-ia32.h
|
| index ab964af65f30529824bbed2efd108273821b92cc..fb6bf487efbb8aa241b5ccb0345efdee139124aa 100644
|
| --- a/src/ia32/lithium-ia32.h
|
| +++ b/src/ia32/lithium-ia32.h
|
| @@ -73,6 +73,7 @@ class LCodeGen;
|
| V(ClampTToUint8) \
|
| V(ClampTToUint8NoSSE2) \
|
| V(ClassOfTestAndBranch) \
|
| + V(ClobberDoubles) \
|
| V(CompareNumericAndBranch) \
|
| V(CmpObjectEqAndBranch) \
|
| V(CmpHoleAndBranch) \
|
| @@ -406,19 +407,32 @@ class LInstructionGap V8_FINAL : public LGap {
|
| };
|
|
|
|
|
| +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(int block_id) : block_id_(block_id) { }
|
| + explicit LGoto(HBasicBlock* block) : block_(block) { }
|
|
|
| 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_id_; }
|
| + int block_id() const { return block_->block_id(); }
|
| + virtual bool ClobbersDoubleRegisters() const { return false; }
|
| +
|
| + bool jumps_to_join() const { return block_->predecessors()->length() > 1; }
|
|
|
| private:
|
| - int block_id_;
|
| + HBasicBlock* block_;
|
| };
|
|
|
|
|
|
|