Title: [162955] branches/jsCStack/Source/_javascript_Core
Revision
162955
Author
fpi...@apple.com
Date
2014-01-28 13:42:37 -0800 (Tue, 28 Jan 2014)

Log Message

FTL should really, *really* support NotCellUse
https://bugs.webkit.org/show_bug.cgi?id=127790

Reviewed by Mark Hahnenberg.
        
It's easy to forget about Phantoms. Any use kind that appears in any node can
eventually appear in a Phantom. This was covered by Octane/mandreel.

* ftl/FTLLowerDFGToLLVM.cpp:
(JSC::FTL::LowerDFGToLLVM::speculate):
(JSC::FTL::LowerDFGToLLVM::speculateNotCell):

Modified Paths

Diff

Modified: branches/jsCStack/Source/_javascript_Core/ChangeLog (162954 => 162955)


--- branches/jsCStack/Source/_javascript_Core/ChangeLog	2014-01-28 21:37:12 UTC (rev 162954)
+++ branches/jsCStack/Source/_javascript_Core/ChangeLog	2014-01-28 21:42:37 UTC (rev 162955)
@@ -1,5 +1,19 @@
 2014-01-28  Filip Pizlo  <fpi...@apple.com>
 
+        FTL should really, *really* support NotCellUse
+        https://bugs.webkit.org/show_bug.cgi?id=127790
+
+        Reviewed by Mark Hahnenberg.
+        
+        It's easy to forget about Phantoms. Any use kind that appears in any node can
+        eventually appear in a Phantom. This was covered by Octane/mandreel.
+
+        * ftl/FTLLowerDFGToLLVM.cpp:
+        (JSC::FTL::LowerDFGToLLVM::speculate):
+        (JSC::FTL::LowerDFGToLLVM::speculateNotCell):
+
+2014-01-28  Filip Pizlo  <fpi...@apple.com>
+
         FTL should really support NotCellUse
         https://bugs.webkit.org/show_bug.cgi?id=127789
 

Modified: branches/jsCStack/Source/_javascript_Core/ftl/FTLLowerDFGToLLVM.cpp (162954 => 162955)


--- branches/jsCStack/Source/_javascript_Core/ftl/FTLLowerDFGToLLVM.cpp	2014-01-28 21:37:12 UTC (rev 162954)
+++ branches/jsCStack/Source/_javascript_Core/ftl/FTLLowerDFGToLLVM.cpp	2014-01-28 21:42:37 UTC (rev 162955)
@@ -4315,6 +4315,9 @@
         case BooleanUse:
             speculateBoolean(edge);
             break;
+        case NotCellUse:
+            speculateNotCell(edge);
+            break;
         default:
             dataLog("Unsupported speculation use kind: ", edge.useKind(), "\n");
             RELEASE_ASSERT_NOT_REACHED();
@@ -4590,6 +4593,15 @@
         lowBoolean(edge);
     }
     
+    void speculateNotCell(Edge edge)
+    {
+        if (!m_interpreter.needsTypeCheck(edge))
+            return;
+        
+        LValue value = lowJSValue(edge);
+        typeCheck(jsValueValue(value), edge, ~SpecCell, isCell(value));
+    }
+    
     bool masqueradesAsUndefinedWatchpointIsStillValid()
     {
         return m_graph.masqueradesAsUndefinedWatchpointIsStillValid(m_node->codeOrigin);
_______________________________________________
webkit-changes mailing list
webkit-changes@lists.webkit.org
https://lists.webkit.org/mailman/listinfo/webkit-changes

Reply via email to