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

Reply via email to