Index: src/x64/lithium-x64.h |
diff --git a/src/x64/lithium-x64.h b/src/x64/lithium-x64.h |
index f827ef6badc9ddaa84354d3c2f8ef5f0fe83441b..1cd186da5c627aec9e031475d722150be7d37553 100644 |
--- a/src/x64/lithium-x64.h |
+++ b/src/x64/lithium-x64.h |
@@ -272,7 +272,7 @@ class LInstruction : public ZoneObject { |
// Interface to the register allocator and iterators. |
bool ClobbersTemps() const { return IsCall(); } |
bool ClobbersRegisters() const { return IsCall(); } |
- bool ClobbersDoubleRegisters() const { return IsCall(); } |
+ virtual bool ClobbersDoubleRegisters() const { return IsCall(); } |
virtual void SetDeferredLazyDeoptimizationEnvironment(LEnvironment* env) { } |
@@ -1919,8 +1919,13 @@ class LCallRuntime V8_FINAL : public LTemplateInstruction<1, 0, 0> { |
DECLARE_CONCRETE_INSTRUCTION(CallRuntime, "call-runtime") |
DECLARE_HYDROGEN_ACCESSOR(CallRuntime) |
+ virtual bool ClobbersDoubleRegisters() const V8_OVERRIDE { |
+ return save_doubles() == kDontSaveFPRegs; |
+ } |
+ |
const Runtime::Function* function() const { return hydrogen()->function(); } |
int arity() const { return hydrogen()->argument_count(); } |
+ SaveFPRegsMode save_doubles() const { return hydrogen()->save_doubles(); } |
}; |