| Index: src/ia32/lithium-ia32.h
|
| diff --git a/src/ia32/lithium-ia32.h b/src/ia32/lithium-ia32.h
|
| index c7b3bc70e5eba2b3f9ee7df84cea59090c30425e..5d7e0ad6cecf4470d3d633d74c22b7df8e0d79a3 100644
|
| --- a/src/ia32/lithium-ia32.h
|
| +++ b/src/ia32/lithium-ia32.h
|
| @@ -261,11 +261,11 @@ class LInstruction : public ZoneObject {
|
| // Interface to the register allocator and iterators.
|
| bool ClobbersTemps() const { return IsCall(); }
|
| bool ClobbersRegisters() const { return IsCall(); }
|
| - virtual bool ClobbersDoubleRegisters() const {
|
| + virtual bool ClobbersDoubleRegisters(Isolate* isolate) const V8_OVERRIDE {
|
| return IsCall() ||
|
| // We only have rudimentary X87Stack tracking, thus in general
|
| // cannot handle phi-nodes.
|
| - (!CpuFeatures::IsSafeForSnapshot(SSE2) && IsControl());
|
| + (!CpuFeatures::IsSafeForSnapshot(isolate, SSE2) && IsControl());
|
| }
|
|
|
| virtual bool HasResult() const = 0;
|
| @@ -400,9 +400,13 @@ class LInstructionGap V8_FINAL : public LGap {
|
|
|
| class LClobberDoubles V8_FINAL : public LTemplateInstruction<0, 0, 0> {
|
| public:
|
| - LClobberDoubles() { ASSERT(!CpuFeatures::IsSafeForSnapshot(SSE2)); }
|
| + explicit LClobberDoubles(Isolate* isolate) {
|
| + ASSERT(!CpuFeatures::IsSafeForSnapshot(isolate, SSE2));
|
| + }
|
|
|
| - virtual bool ClobbersDoubleRegisters() const { return true; }
|
| + virtual bool ClobbersDoubleRegisters(Isolate* isolate) const V8_OVERRIDE {
|
| + return true;
|
| + }
|
|
|
| DECLARE_CONCRETE_INSTRUCTION(ClobberDoubles, "clobber-d")
|
| };
|
| @@ -418,7 +422,9 @@ class LGoto V8_FINAL : public LTemplateInstruction<0, 0, 0> {
|
| virtual bool IsControl() const V8_OVERRIDE { return true; }
|
|
|
| int block_id() const { return block_->block_id(); }
|
| - virtual bool ClobbersDoubleRegisters() const { return false; }
|
| + virtual bool ClobbersDoubleRegisters(Isolate* isolate) const V8_OVERRIDE {
|
| + return false;
|
| + }
|
|
|
| bool jumps_to_join() const { return block_->predecessors()->length() > 1; }
|
|
|
| @@ -2011,7 +2017,7 @@ class LCallRuntime V8_FINAL : public LTemplateInstruction<1, 1, 0> {
|
| DECLARE_CONCRETE_INSTRUCTION(CallRuntime, "call-runtime")
|
| DECLARE_HYDROGEN_ACCESSOR(CallRuntime)
|
|
|
| - virtual bool ClobbersDoubleRegisters() const V8_OVERRIDE {
|
| + virtual bool ClobbersDoubleRegisters(Isolate* isolate) const V8_OVERRIDE {
|
| return save_doubles() == kDontSaveFPRegs;
|
| }
|
|
|
| @@ -2748,6 +2754,8 @@ class LChunkBuilder V8_FINAL : public LChunkBuilderBase {
|
| next_block_(NULL),
|
| allocator_(allocator) { }
|
|
|
| + Isolate* isolate() const { return graph_->isolate(); }
|
| +
|
| // Build the sequence for the graph.
|
| LPlatformChunk* Build();
|
|
|
|
|