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