Title: [205638] releases/WebKitGTK/webkit-2.14/Source/_javascript_Core
- Revision
- 205638
- Author
- [email protected]
- Date
- 2016-09-08 08:13:05 -0700 (Thu, 08 Sep 2016)
Log Message
Merge r205380 - [JSC] Remove some more useless cases from FTL Capabilities
https://bugs.webkit.org/show_bug.cgi?id=161466
Patch by Benjamin Poulain <[email protected]> on 2016-09-02
Reviewed by Geoffrey Garen.
Some cases do not make sense:
-In: Fixup only generate CellUse.
-PutByIdXXX: same.
-GetIndexedPropertyStorage: those cases are the only ones supported
by DFG. We would have crashed in SpeculativeJIT if other modes
were generated.
* ftl/FTLCapabilities.cpp:
(JSC::FTL::canCompile):
* ftl/FTLLowerDFGToB3.cpp:
(JSC::FTL::DFG::LowerDFGToB3::compilePutById):
(JSC::FTL::DFG::LowerDFGToB3::compileGetIndexedPropertyStorage):
(JSC::FTL::DFG::LowerDFGToB3::compileIn):
Modified Paths
Diff
Modified: releases/WebKitGTK/webkit-2.14/Source/_javascript_Core/ChangeLog (205637 => 205638)
--- releases/WebKitGTK/webkit-2.14/Source/_javascript_Core/ChangeLog 2016-09-08 15:11:14 UTC (rev 205637)
+++ releases/WebKitGTK/webkit-2.14/Source/_javascript_Core/ChangeLog 2016-09-08 15:13:05 UTC (rev 205638)
@@ -1,3 +1,24 @@
+2016-09-02 Benjamin Poulain <[email protected]>
+
+ [JSC] Remove some more useless cases from FTL Capabilities
+ https://bugs.webkit.org/show_bug.cgi?id=161466
+
+ Reviewed by Geoffrey Garen.
+
+ Some cases do not make sense:
+ -In: Fixup only generate CellUse.
+ -PutByIdXXX: same.
+ -GetIndexedPropertyStorage: those cases are the only ones supported
+ by DFG. We would have crashed in SpeculativeJIT if other modes
+ were generated.
+
+ * ftl/FTLCapabilities.cpp:
+ (JSC::FTL::canCompile):
+ * ftl/FTLLowerDFGToB3.cpp:
+ (JSC::FTL::DFG::LowerDFGToB3::compilePutById):
+ (JSC::FTL::DFG::LowerDFGToB3::compileGetIndexedPropertyStorage):
+ (JSC::FTL::DFG::LowerDFGToB3::compileIn):
+
2016-09-02 Caio Lima <[email protected]>
Register usage optimization in mathIC when LHS and RHS are constants isn't configured correctly
Modified: releases/WebKitGTK/webkit-2.14/Source/_javascript_Core/ftl/FTLCapabilities.cpp (205637 => 205638)
--- releases/WebKitGTK/webkit-2.14/Source/_javascript_Core/ftl/FTLCapabilities.cpp 2016-09-08 15:11:14 UTC (rev 205637)
+++ releases/WebKitGTK/webkit-2.14/Source/_javascript_Core/ftl/FTLCapabilities.cpp 2016-09-08 15:13:05 UTC (rev 205638)
@@ -179,6 +179,7 @@
case Throw:
case ThrowReferenceError:
case Unreachable:
+ case In:
case IsJSArray:
case IsEmpty:
case IsUndefined:
@@ -204,6 +205,7 @@
case HasStructureProperty:
case GetDirectPname:
case GetEnumerableLength:
+ case GetIndexedPropertyStorage:
case GetPropertyEnumerator:
case GetEnumeratorStructurePname:
case GetEnumeratorGenericPname:
@@ -224,6 +226,10 @@
case ForwardVarargs:
case Switch:
case TypeOf:
+ case PutById:
+ case PutByIdDirect:
+ case PutByIdFlush:
+ case PutByIdWithThis:
case PutGetterById:
case PutSetterById:
case PutGetterSetterById:
@@ -261,24 +267,6 @@
// case because it would prevent us from catching bugs where the FTL backend
// pipeline failed to optimize out an Identity.
break;
- case In:
- if (node->child2().useKind() == CellUse)
- break;
- return CannotCompile;
- case PutByIdDirect:
- case PutById:
- case PutByIdFlush:
- if (node->child1().useKind() == CellUse)
- break;
- return CannotCompile;
- case PutByIdWithThis:
- break;
- case GetIndexedPropertyStorage:
- if (node->arrayMode().type() == Array::String)
- break;
- if (isTypedView(node->arrayMode().typedArrayType()))
- break;
- return CannotCompile;
case CheckArray:
switch (node->arrayMode().type()) {
case Array::Int32:
Modified: releases/WebKitGTK/webkit-2.14/Source/_javascript_Core/ftl/FTLLowerDFGToB3.cpp (205637 => 205638)
--- releases/WebKitGTK/webkit-2.14/Source/_javascript_Core/ftl/FTLLowerDFGToB3.cpp 2016-09-08 15:11:14 UTC (rev 205637)
+++ releases/WebKitGTK/webkit-2.14/Source/_javascript_Core/ftl/FTLLowerDFGToB3.cpp 2016-09-08 15:13:05 UTC (rev 205638)
@@ -2707,11 +2707,9 @@
void compilePutById()
{
+ DFG_ASSERT(m_graph, m_node, m_node->child1().useKind() == CellUse);
+
Node* node = m_node;
-
- // See above; CellUse is easier so we do only that for now.
- ASSERT(node->child1().useKind() == CellUse);
-
LValue base = lowCell(node->child1());
LValue value = lowJSValue(node->child2());
auto uid = m_graph.identifiers()[node->identifierNumber()];
@@ -2813,7 +2811,8 @@
setStorage(m_out.loadPtr(m_out.phi(pointerType(), fastResult, slowResult), m_heaps.StringImpl_data));
return;
}
-
+
+ DFG_ASSERT(m_graph, m_node, isTypedView(m_node->arrayMode().typedArrayType()));
setStorage(m_out.loadPtr(cell, m_heaps.JSArrayBufferView_vector));
}
@@ -6511,6 +6510,8 @@
void compileIn()
{
+ DFG_ASSERT(m_graph, m_node, m_node->child2().useKind() == CellUse);
+
Node* node = m_node;
Edge base = node->child2();
LValue cell = lowCell(base);
_______________________________________________
webkit-changes mailing list
[email protected]
https://lists.webkit.org/mailman/listinfo/webkit-changes