DFG JIT should support integer division
authorfpizlo@apple.com <fpizlo@apple.com@268f45cc-cd09-0410-ab3c-d52691b4dbfc>
Thu, 22 Sep 2011 22:02:24 +0000 (22:02 +0000)
committerfpizlo@apple.com <fpizlo@apple.com@268f45cc-cd09-0410-ab3c-d52691b4dbfc>
Thu, 22 Sep 2011 22:02:24 +0000 (22:02 +0000)
commitde08b63c9a1325dc9c2816f98df0a4896ec1689a
treecfd15804e862e52da6fa83365daab4c61eb7aa19
parentb47299f2f1ead4b87e365b188d9a48c471c5b2e0
DFG JIT should support integer division
https://bugs.webkit.org/show_bug.cgi?id=68597

Reviewed by Darin Adler.

This adds support for ArithDiv speculating integer, and speculating
that the result is integer (i.e. remainder = 0).

This is a 4% win on Kraken and a 1% loss on V8.

* bytecode/CodeBlock.h:
* dfg/DFGByteCodeParser.cpp:
(JSC::DFG::ByteCodeParser::makeDivSafe):
(JSC::DFG::ByteCodeParser::parseBlock):
* dfg/DFGNode.h:
(JSC::DFG::Node::hasArithNodeFlags):
* dfg/DFGPropagator.cpp:
(JSC::DFG::Propagator::propagateArithNodeFlags):
(JSC::DFG::Propagator::propagateNodePredictions):
(JSC::DFG::Propagator::fixupNode):
* dfg/DFGSpeculativeJIT.cpp:
(JSC::DFG::SpeculativeJIT::compile):
* jit/JITArithmetic.cpp:
(JSC::JIT::emit_op_div):

git-svn-id: http://svn.webkit.org/repository/webkit/trunk@95754 268f45cc-cd09-0410-ab3c-d52691b4dbfc
Source/JavaScriptCore/ChangeLog
Source/JavaScriptCore/bytecode/CodeBlock.h
Source/JavaScriptCore/dfg/DFGByteCodeParser.cpp
Source/JavaScriptCore/dfg/DFGNode.h
Source/JavaScriptCore/dfg/DFGPropagator.cpp
Source/JavaScriptCore/dfg/DFGSpeculativeJIT.cpp
Source/JavaScriptCore/jit/JITArithmetic.cpp