summaryrefslogtreecommitdiff
path: root/Source/JavaScriptCore/dfg/DFGSpeculativeJIT.cpp
diff options
context:
space:
mode:
authorSergio Ahumada <sahumada@blackberry.com>2014-06-11 10:07:27 +0200
committerSergio Ahumada <sahumada@blackberry.com>2014-06-11 10:07:27 +0200
commit8dfa79c6c0585cb3db9c21658b84f936fdc43252 (patch)
tree8420703b518c3101d9979224d996d583d5469ad0 /Source/JavaScriptCore/dfg/DFGSpeculativeJIT.cpp
parent29dd87ecc570ebc51890e0587e73e7a144d892aa (diff)
parentb6ddb5fe5d3f2223d524e45bf5cdbdde0e5b241f (diff)
downloadqtwebkit-8dfa79c6c0585cb3db9c21658b84f936fdc43252.tar.gz
Merge remote-tracking branch 'origin/stable' into 5.3
Change-Id: I09992d60034fccf74c5f754ab88bebe8b8de5e45
Diffstat (limited to 'Source/JavaScriptCore/dfg/DFGSpeculativeJIT.cpp')
-rw-r--r--Source/JavaScriptCore/dfg/DFGSpeculativeJIT.cpp8
1 files changed, 7 insertions, 1 deletions
diff --git a/Source/JavaScriptCore/dfg/DFGSpeculativeJIT.cpp b/Source/JavaScriptCore/dfg/DFGSpeculativeJIT.cpp
index 325a876a2..1348f94be 100644
--- a/Source/JavaScriptCore/dfg/DFGSpeculativeJIT.cpp
+++ b/Source/JavaScriptCore/dfg/DFGSpeculativeJIT.cpp
@@ -3051,7 +3051,13 @@ void SpeculativeJIT::compileSoftModulo(Node* node)
FPRResult result(this);
flushRegisters();
- callOperation(operationFModOnInts, result.fpr(), op1GPR, op2GPR);
+ if (!nodeCanIgnoreNegativeZero(node->arithNodeFlags())) {
+ // NegativeZero check will need op1GPR and fmod call is likely to clobber it.
+ m_jit.push(op1GPR);
+ callOperation(operationFModOnInts, result.fpr(), op1GPR, op2GPR);
+ m_jit.pop(op1GPR);
+ } else
+ callOperation(operationFModOnInts, result.fpr(), op1GPR, op2GPR);
FPRTemporary scratch(this);
GPRTemporary intResult(this);