Index: src/arm/lithium-arm.h |
diff --git a/src/arm/lithium-arm.h b/src/arm/lithium-arm.h |
index 6c4d73af8b2f0c3ef3f826fc082bf091db35a242..2dc24187d70d9ab4dfa685f1f043b8b048ee20dc 100644 |
--- a/src/arm/lithium-arm.h |
+++ b/src/arm/lithium-arm.h |
@@ -277,7 +277,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(); } |
// Interface to the register allocator and iterators. |
bool IsMarkedAsCall() const { return IsCall(); } |
@@ -1985,8 +1985,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(); } |
}; |