FTL B3 should do all of the non-bitop binary snippets
https://bugs.webkit.org/show_bug.cgi?id=152709

Reviewed by Mark Lam.

* ftl/FTLLowerDFGToLLVM.cpp:
(JSC::FTL::DFG::LowerDFGToLLVM::compileValueAdd):
(JSC::FTL::DFG::LowerDFGToLLVM::compileStrCat):
(JSC::FTL::DFG::LowerDFGToLLVM::compileArithMul):
(JSC::FTL::DFG::LowerDFGToLLVM::compileArithDiv):
* tests/stress/object-add.js: Added.
(foo):
(things.valueOf):
* tests/stress/object-div.js: Added.
(foo):
(things.valueOf):
* tests/stress/object-mul.js: Added.
(foo):
(things.valueOf):
* tests/stress/untyped-add.js: Added.
(foo):
(valueOf):
* tests/stress/untyped-div.js: Added.
(foo):
(valueOf):
* tests/stress/untyped-mul.js: Added.
(foo):
(valueOf):



git-svn-id: http://svn.webkit.org/repository/webkit/trunk@194553 268f45cc-cd09-0410-ab3c-d52691b4dbfc
diff --git a/Source/JavaScriptCore/ftl/FTLLowerDFGToLLVM.cpp b/Source/JavaScriptCore/ftl/FTLLowerDFGToLLVM.cpp
index faaa018..14b71bd 100644
--- a/Source/JavaScriptCore/ftl/FTLLowerDFGToLLVM.cpp
+++ b/Source/JavaScriptCore/ftl/FTLLowerDFGToLLVM.cpp
@@ -51,6 +51,9 @@
 #include "FTLOutput.h"
 #include "FTLThunks.h"
 #include "FTLWeightedTarget.h"
+#include "JITAddGenerator.h"
+#include "JITDivGenerator.h"
+#include "JITMulGenerator.h"
 #include "JITSubGenerator.h"
 #include "JSArrowFunction.h"
 #include "JSCInlines.h"
@@ -1596,7 +1599,11 @@
     
     void compileValueAdd()
     {
+#if FTL_USES_B3
+        emitBinarySnippet<JITAddGenerator>(operationValueAdd);
+#else // FTL_USES_B3
         compileUntypedBinaryOp<ValueAddDescriptor>();
+#endif // FTL_USES_B3
     }
     
     void compileStrCat()
@@ -1845,7 +1852,11 @@
         }
 
         case UntypedUse: {
+#if FTL_USES_B3
+            emitBinarySnippet<JITMulGenerator>(operationValueMul);
+#else // FTL_USES_B3
             compileUntypedBinaryOp<ArithMulDescriptor>();
+#endif // FTL_USES_B3
             break;
         }
 
@@ -1914,7 +1925,11 @@
         }
 
         case UntypedUse: {
+#if FTL_USES_B3
+            emitBinarySnippet<JITDivGenerator, NeedScratchFPR>(operationValueDiv);
+#else // FTL_USES_B3
             compileUntypedBinaryOp<ArithDivDescriptor, HasConstInt32OperandOptimization, HasConstDoubleOperandOptimization>();
+#endif // FTL_USES_B3
             break;
         }