Title: [205166] trunk/Source/_javascript_Core
Revision
205166
Author
commit-qu...@webkit.org
Date
2016-08-29 18:48:10 -0700 (Mon, 29 Aug 2016)

Log Message

[JSC] Clean up FTL Capabilities for CompareEq
https://bugs.webkit.org/show_bug.cgi?id=161353

Patch by Benjamin Poulain <bpoul...@apple.com> on 2016-08-29
Reviewed by Geoffrey Garen.

It looks like we already have code for every case.
This patch removes the tests from FTLCapabilities
and move the generic case last as usual.

* ftl/FTLCapabilities.cpp:
(JSC::FTL::canCompile):
* ftl/FTLLowerDFGToB3.cpp:
(JSC::FTL::DFG::LowerDFGToB3::compileCompareEq):

Modified Paths

Diff

Modified: trunk/Source/_javascript_Core/ChangeLog (205165 => 205166)


--- trunk/Source/_javascript_Core/ChangeLog	2016-08-30 01:16:42 UTC (rev 205165)
+++ trunk/Source/_javascript_Core/ChangeLog	2016-08-30 01:48:10 UTC (rev 205166)
@@ -1,3 +1,19 @@
+2016-08-29  Benjamin Poulain  <bpoul...@apple.com>
+
+        [JSC] Clean up FTL Capabilities for CompareEq
+        https://bugs.webkit.org/show_bug.cgi?id=161353
+
+        Reviewed by Geoffrey Garen.
+
+        It looks like we already have code for every case.
+        This patch removes the tests from FTLCapabilities
+        and move the generic case last as usual.
+
+        * ftl/FTLCapabilities.cpp:
+        (JSC::FTL::canCompile):
+        * ftl/FTLLowerDFGToB3.cpp:
+        (JSC::FTL::DFG::LowerDFGToB3::compileCompareEq):
+
 2016-08-29  Keith Miller  <keith_mil...@apple.com>
 
         Fix toStringName for Proxies and add support for normal instances

Modified: trunk/Source/_javascript_Core/ftl/FTLCapabilities.cpp (205165 => 205166)


--- trunk/Source/_javascript_Core/ftl/FTLCapabilities.cpp	2016-08-30 01:16:42 UTC (rev 205165)
+++ trunk/Source/_javascript_Core/ftl/FTLCapabilities.cpp	2016-08-30 01:48:10 UTC (rev 205166)
@@ -245,6 +245,7 @@
     case ResolveScope:
     case GetDynamicVar:
     case PutDynamicVar:
+    case CompareEq:
     case CompareEqPtr:
     case CompareStrictEq:
         // These are OK.
@@ -363,32 +364,6 @@
             return CannotCompile;
         }
         break;
-    case CompareEq:
-        if (node->isBinaryUseKind(Int32Use))
-            break;
-        if (node->isBinaryUseKind(Int52RepUse))
-            break;
-        if (node->isBinaryUseKind(DoubleRepUse))
-            break;
-        if (node->isBinaryUseKind(StringIdentUse))
-            break;
-        if (node->isBinaryUseKind(StringUse))
-            break;
-        if (node->isBinaryUseKind(SymbolUse))
-            break;
-        if (node->isBinaryUseKind(ObjectUse))
-            break;
-        if (node->isBinaryUseKind(UntypedUse))
-            break;
-        if (node->isBinaryUseKind(BooleanUse))
-            break;
-        if (node->isBinaryUseKind(ObjectUse, ObjectOrOtherUse))
-            break;
-        if (node->isBinaryUseKind(ObjectOrOtherUse, ObjectUse))
-            break;
-        if (node->child1().useKind() == OtherUse || node->child2().useKind() == OtherUse)
-            break;
-        return CannotCompile;
     case CompareLess:
     case CompareLessEq:
     case CompareGreater:

Modified: trunk/Source/_javascript_Core/ftl/FTLLowerDFGToB3.cpp (205165 => 205166)


--- trunk/Source/_javascript_Core/ftl/FTLLowerDFGToB3.cpp	2016-08-30 01:16:42 UTC (rev 205165)
+++ trunk/Source/_javascript_Core/ftl/FTLLowerDFGToB3.cpp	2016-08-30 01:48:10 UTC (rev 205166)
@@ -4998,15 +4998,6 @@
             compareEqObjectOrOtherToObject(m_node->child1(), m_node->child2());
             return;
         }
-        
-        if (m_node->isBinaryUseKind(UntypedUse)) {
-            nonSpeculativeCompare(
-                [&] (LValue left, LValue right) {
-                    return m_out.equal(left, right);
-                },
-                operationCompareEq);
-            return;
-        }
 
         if (m_node->child1().useKind() == OtherUse) {
             ASSERT(!m_interpreter.needsTypeCheck(m_node->child1(), SpecOther));
@@ -5020,7 +5011,12 @@
             return;
         }
 
-        DFG_CRASH(m_graph, m_node, "Bad use kinds");
+        DFG_ASSERT(m_graph, m_node, m_node->isBinaryUseKind(UntypedUse));
+        nonSpeculativeCompare(
+            [&] (LValue left, LValue right) {
+                return m_out.equal(left, right);
+            },
+            operationCompareEq);
     }
     
     void compileCompareStrictEq()
_______________________________________________
webkit-changes mailing list
webkit-changes@lists.webkit.org
https://lists.webkit.org/mailman/listinfo/webkit-changes

Reply via email to