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;
}