Title: [171767] branches/ftlopt/Source/_javascript_Core
- Revision
- 171767
- Author
- mmir...@apple.com
- Date
- 2014-07-29 14:49:53 -0700 (Tue, 29 Jul 2014)
Log Message
[ftlopt] Added SkipTopScope coverage to FTL
Modified Paths
Diff
Modified: branches/ftlopt/Source/_javascript_Core/ChangeLog (171766 => 171767)
--- branches/ftlopt/Source/_javascript_Core/ChangeLog 2014-07-29 21:41:36 UTC (rev 171766)
+++ branches/ftlopt/Source/_javascript_Core/ChangeLog 2014-07-29 21:49:53 UTC (rev 171767)
@@ -1,3 +1,16 @@
+2014-07-29 Matthew Mirman <mmir...@apple.com>
+
+ [ftlopt] Added SkipTopScope coverage to FTL
+ https://bugs.webkit.org/show_bug.cgi?id=134990
+
+ Reviewed by Filip Pizlo.
+
+ * ftl/FTLCapabilities.cpp:
+ (JSC::FTL::canCompile): Added case for SkipTopScope
+ * ftl/FTLLowerDFGToLLVM.cpp:
+ (JSC::FTL::LowerDFGToLLVM::compileNode): Added case for SkipTopScope
+ (JSC::FTL::LowerDFGToLLVM::compileSkipTopScope): Added.
+
2014-07-28 Mark Hahnenberg <mhahnenb...@apple.com>
Support for-in in the FTL
Modified: branches/ftlopt/Source/_javascript_Core/ftl/FTLCapabilities.cpp (171766 => 171767)
--- branches/ftlopt/Source/_javascript_Core/ftl/FTLCapabilities.cpp 2014-07-29 21:41:36 UTC (rev 171766)
+++ branches/ftlopt/Source/_javascript_Core/ftl/FTLCapabilities.cpp 2014-07-29 21:49:53 UTC (rev 171767)
@@ -99,6 +99,7 @@
case LoopHint:
case GetMyScope:
case SkipScope:
+ case SkipTopScope:
case GetClosureRegisters:
case GetClosureVar:
case PutClosureVar:
Modified: branches/ftlopt/Source/_javascript_Core/ftl/FTLLowerDFGToLLVM.cpp (171766 => 171767)
--- branches/ftlopt/Source/_javascript_Core/ftl/FTLLowerDFGToLLVM.cpp 2014-07-29 21:41:36 UTC (rev 171766)
+++ branches/ftlopt/Source/_javascript_Core/ftl/FTLLowerDFGToLLVM.cpp 2014-07-29 21:49:53 UTC (rev 171767)
@@ -593,6 +593,9 @@
case SkipScope:
compileSkipScope();
break;
+ case SkipTopScope:
+ compileSkipTopScope();
+ break;
case GetClosureRegisters:
compileGetClosureRegisters();
break;
@@ -3434,6 +3437,30 @@
setJSValue(m_out.loadPtr(lowCell(m_node->child1()), m_heaps.JSScope_next));
}
+
+ void compileSkipTopScope()
+ {
+ LValue scope = lowCell(m_node->child1());
+
+ LBasicBlock isNull = FTL_NEW_BLOCK(m_out, ("Activation register is null"));
+ LBasicBlock notNull = FTL_NEW_BLOCK(m_out, ("Activation register is not null"));
+
+ VirtualRegister machineActivationRegister = m_graph.machineActivationRegister();
+
+ ValueFromBlock top = m_out.anchor(scope);
+ m_out.branch(
+ m_out.isZero64(m_out.load64(addressFor(machineActivationRegister))), unsure(isNull), unsure(notNull));
+
+ LBasicBlock lastNext = m_out.appendTo(isNull, notNull);
+ ValueFromBlock next = m_out.anchor(m_out.loadPtr(scope, m_heaps.JSScope_next));
+
+ m_out.jump(notNull);
+ m_out.appendTo(notNull, lastNext);
+
+ setJSValue(m_out.phi(m_out.intPtr, top, next));
+ }
+
+
void compileGetClosureRegisters()
{
if (WriteBarrierBase<Unknown>* registers = m_graph.tryGetRegisters(m_node->child1().node())) {
_______________________________________________
webkit-changes mailing list
webkit-changes@lists.webkit.org
https://lists.webkit.org/mailman/listinfo/webkit-changes