Title: [149892] branches/dfgFourthTier/Source/_javascript_Core
- Revision
- 149892
- Author
- [email protected]
- Date
- 2013-05-10 11:31:55 -0700 (Fri, 10 May 2013)
Log Message
fourthTier: FTL should support CompareGreater, CompareLessEq, and CompareGreaterEq
https://bugs.webkit.org/show_bug.cgi?id=115923
Reviewed by Mark Hahnenberg.
Also fixed a bug where double CompareLess would assert.
* ftl/FTLCapabilities.cpp:
(JSC::FTL::canCompile):
* ftl/FTLLowerDFGToLLVM.cpp:
(JSC::FTL::LowerDFGToLLVM::compileNode):
(JSC::FTL::LowerDFGToLLVM::compileCompareLess):
(LowerDFGToLLVM):
(JSC::FTL::LowerDFGToLLVM::compileCompareLessEq):
(JSC::FTL::LowerDFGToLLVM::compileCompareGreater):
(JSC::FTL::LowerDFGToLLVM::compileCompareGreaterEq):
Modified Paths
Diff
Modified: branches/dfgFourthTier/Source/_javascript_Core/ChangeLog (149891 => 149892)
--- branches/dfgFourthTier/Source/_javascript_Core/ChangeLog 2013-05-10 18:20:28 UTC (rev 149891)
+++ branches/dfgFourthTier/Source/_javascript_Core/ChangeLog 2013-05-10 18:31:55 UTC (rev 149892)
@@ -1,5 +1,24 @@
2013-05-10 Filip Pizlo <[email protected]>
+ fourthTier: FTL should support CompareGreater, CompareLessEq, and CompareGreaterEq
+ https://bugs.webkit.org/show_bug.cgi?id=115923
+
+ Reviewed by Mark Hahnenberg.
+
+ Also fixed a bug where double CompareLess would assert.
+
+ * ftl/FTLCapabilities.cpp:
+ (JSC::FTL::canCompile):
+ * ftl/FTLLowerDFGToLLVM.cpp:
+ (JSC::FTL::LowerDFGToLLVM::compileNode):
+ (JSC::FTL::LowerDFGToLLVM::compileCompareLess):
+ (LowerDFGToLLVM):
+ (JSC::FTL::LowerDFGToLLVM::compileCompareLessEq):
+ (JSC::FTL::LowerDFGToLLVM::compileCompareGreater):
+ (JSC::FTL::LowerDFGToLLVM::compileCompareGreaterEq):
+
+2013-05-10 Filip Pizlo <[email protected]>
+
fourthTier: FTL CompareEq ObjectUse should handle masquerading
https://bugs.webkit.org/show_bug.cgi?id=115920
Modified: branches/dfgFourthTier/Source/_javascript_Core/ftl/FTLCapabilities.cpp (149891 => 149892)
--- branches/dfgFourthTier/Source/_javascript_Core/ftl/FTLCapabilities.cpp 2013-05-10 18:20:28 UTC (rev 149891)
+++ branches/dfgFourthTier/Source/_javascript_Core/ftl/FTLCapabilities.cpp 2013-05-10 18:31:55 UTC (rev 149892)
@@ -137,6 +137,9 @@
break;
return false;
case CompareLess:
+ case CompareLessEq:
+ case CompareGreater:
+ case CompareGreaterEq:
if (node->isBinaryUseKind(Int32Use))
break;
if (node->isBinaryUseKind(NumberUse))
Modified: branches/dfgFourthTier/Source/_javascript_Core/ftl/FTLLowerDFGToLLVM.cpp (149891 => 149892)
--- branches/dfgFourthTier/Source/_javascript_Core/ftl/FTLLowerDFGToLLVM.cpp 2013-05-10 18:20:28 UTC (rev 149891)
+++ branches/dfgFourthTier/Source/_javascript_Core/ftl/FTLLowerDFGToLLVM.cpp 2013-05-10 18:31:55 UTC (rev 149892)
@@ -364,6 +364,15 @@
case CompareLess:
compileCompareLess();
break;
+ case CompareLessEq:
+ compileCompareLessEq();
+ break;
+ case CompareGreater:
+ compileCompareGreater();
+ break;
+ case CompareGreaterEq:
+ compileCompareGreaterEq();
+ break;
case Branch:
compileBranch();
break;
@@ -964,11 +973,73 @@
m_booleanValues.add(
m_node,
m_out.doubleLessThan(lowDouble(m_node->child1()), lowDouble(m_node->child2())));
+ return;
}
RELEASE_ASSERT_NOT_REACHED();
}
+ void compileCompareLessEq()
+ {
+ if (m_node->isBinaryUseKind(Int32Use)) {
+ m_booleanValues.add(
+ m_node,
+ m_out.lessThanOrEqual(lowInt32(m_node->child1()), lowInt32(m_node->child2())));
+ return;
+ }
+
+ if (m_node->isBinaryUseKind(NumberUse)) {
+ m_booleanValues.add(
+ m_node,
+ m_out.doubleLessThanOrEqual(
+ lowDouble(m_node->child1()), lowDouble(m_node->child2())));
+ return;
+ }
+
+ RELEASE_ASSERT_NOT_REACHED();
+ }
+
+ void compileCompareGreater()
+ {
+ if (m_node->isBinaryUseKind(Int32Use)) {
+ m_booleanValues.add(
+ m_node,
+ m_out.greaterThan(lowInt32(m_node->child1()), lowInt32(m_node->child2())));
+ return;
+ }
+
+ if (m_node->isBinaryUseKind(NumberUse)) {
+ m_booleanValues.add(
+ m_node,
+ m_out.doubleGreaterThan(
+ lowDouble(m_node->child1()), lowDouble(m_node->child2())));
+ return;
+ }
+
+ RELEASE_ASSERT_NOT_REACHED();
+ }
+
+ void compileCompareGreaterEq()
+ {
+ if (m_node->isBinaryUseKind(Int32Use)) {
+ m_booleanValues.add(
+ m_node,
+ m_out.greaterThanOrEqual(
+ lowInt32(m_node->child1()), lowInt32(m_node->child2())));
+ return;
+ }
+
+ if (m_node->isBinaryUseKind(NumberUse)) {
+ m_booleanValues.add(
+ m_node,
+ m_out.doubleGreaterThanOrEqual(
+ lowDouble(m_node->child1()), lowDouble(m_node->child2())));
+ return;
+ }
+
+ RELEASE_ASSERT_NOT_REACHED();
+ }
+
void compileBranch()
{
switch (m_node->child1().useKind()) {
_______________________________________________
webkit-changes mailing list
[email protected]
https://lists.webkit.org/mailman/listinfo/webkit-changes