Title: [155278] trunk/Source/_javascript_Core
- Revision
- 155278
- Author
- [email protected]
- Date
- 2013-09-07 20:24:13 -0700 (Sat, 07 Sep 2013)
Log Message
FTL should support basic closure operations
https://bugs.webkit.org/show_bug.cgi?id=120987
Reviewed by Oliver Hunt.
* ftl/FTLAbstractHeapRepository.cpp:
* ftl/FTLAbstractHeapRepository.h:
* ftl/FTLCapabilities.cpp:
(JSC::FTL::canCompile):
* ftl/FTLLowerDFGToLLVM.cpp:
(JSC::FTL::LowerDFGToLLVM::compileNode):
(JSC::FTL::LowerDFGToLLVM::compileGetMyScope):
(JSC::FTL::LowerDFGToLLVM::compileSkipScope):
(JSC::FTL::LowerDFGToLLVM::compileGetClosureRegisters):
(JSC::FTL::LowerDFGToLLVM::compileGetClosureVar):
(JSC::FTL::LowerDFGToLLVM::compilePutClosureVar):
Modified Paths
Diff
Modified: trunk/Source/_javascript_Core/ChangeLog (155277 => 155278)
--- trunk/Source/_javascript_Core/ChangeLog 2013-09-08 03:17:30 UTC (rev 155277)
+++ trunk/Source/_javascript_Core/ChangeLog 2013-09-08 03:24:13 UTC (rev 155278)
@@ -1,5 +1,24 @@
2013-09-07 Filip Pizlo <[email protected]>
+ FTL should support basic closure operations
+ https://bugs.webkit.org/show_bug.cgi?id=120987
+
+ Reviewed by Oliver Hunt.
+
+ * ftl/FTLAbstractHeapRepository.cpp:
+ * ftl/FTLAbstractHeapRepository.h:
+ * ftl/FTLCapabilities.cpp:
+ (JSC::FTL::canCompile):
+ * ftl/FTLLowerDFGToLLVM.cpp:
+ (JSC::FTL::LowerDFGToLLVM::compileNode):
+ (JSC::FTL::LowerDFGToLLVM::compileGetMyScope):
+ (JSC::FTL::LowerDFGToLLVM::compileSkipScope):
+ (JSC::FTL::LowerDFGToLLVM::compileGetClosureRegisters):
+ (JSC::FTL::LowerDFGToLLVM::compileGetClosureVar):
+ (JSC::FTL::LowerDFGToLLVM::compilePutClosureVar):
+
+2013-09-07 Filip Pizlo <[email protected]>
+
Only run FTL tests if we have the FTL
https://bugs.webkit.org/show_bug.cgi?id=120974
Modified: trunk/Source/_javascript_Core/ftl/FTLAbstractHeapRepository.cpp (155277 => 155278)
--- trunk/Source/_javascript_Core/ftl/FTLAbstractHeapRepository.cpp 2013-09-08 03:17:30 UTC (rev 155277)
+++ trunk/Source/_javascript_Core/ftl/FTLAbstractHeapRepository.cpp 2013-09-08 03:24:13 UTC (rev 155278)
@@ -28,6 +28,8 @@
#if ENABLE(FTL_JIT)
+#include "JSScope.h"
+#include "JSVariableObject.h"
#include "Operations.h"
namespace JSC { namespace FTL {
Modified: trunk/Source/_javascript_Core/ftl/FTLAbstractHeapRepository.h (155277 => 155278)
--- trunk/Source/_javascript_Core/ftl/FTLAbstractHeapRepository.h 2013-09-08 03:17:30 UTC (rev 155277)
+++ trunk/Source/_javascript_Core/ftl/FTLAbstractHeapRepository.h 2013-09-08 03:24:13 UTC (rev 155278)
@@ -46,8 +46,10 @@
macro(JSArrayBufferView_vector, JSArrayBufferView::offsetOfVector()) \
macro(JSCell_structure, JSCell::structureOffset()) \
macro(JSObject_butterfly, JSObject::butterflyOffset()) \
+ macro(JSScope_next, JSScope::offsetOfNext()) \
macro(JSString_length, JSString::offsetOfLength()) \
macro(JSString_value, JSString::offsetOfValue()) \
+ macro(JSVariableObject_registers, JSVariableObject::offsetOfRegisters()) \
macro(StringImpl_data, StringImpl::dataOffset()) \
macro(StringImpl_hashAndFlags, StringImpl::flagsOffset()) \
macro(Structure_classInfo, Structure::classInfoOffset()) \
Modified: trunk/Source/_javascript_Core/ftl/FTLCapabilities.cpp (155277 => 155278)
--- trunk/Source/_javascript_Core/ftl/FTLCapabilities.cpp 2013-09-08 03:17:30 UTC (rev 155277)
+++ trunk/Source/_javascript_Core/ftl/FTLCapabilities.cpp 2013-09-08 03:24:13 UTC (rev 155278)
@@ -89,6 +89,11 @@
case Call:
case Construct:
case GlobalVarWatchpoint:
+ case GetMyScope:
+ case SkipScope:
+ case GetClosureRegisters:
+ case GetClosureVar:
+ case PutClosureVar:
// These are OK.
break;
case GetIndexedPropertyStorage:
Modified: trunk/Source/_javascript_Core/ftl/FTLLowerDFGToLLVM.cpp (155277 => 155278)
--- trunk/Source/_javascript_Core/ftl/FTLLowerDFGToLLVM.cpp 2013-09-08 03:17:30 UTC (rev 155277)
+++ trunk/Source/_javascript_Core/ftl/FTLLowerDFGToLLVM.cpp 2013-09-08 03:24:13 UTC (rev 155278)
@@ -372,6 +372,21 @@
case GlobalVarWatchpoint:
compileGlobalVarWatchpoint();
break;
+ case GetMyScope:
+ compileGetMyScope();
+ break;
+ case SkipScope:
+ compileSkipScope();
+ break;
+ case GetClosureRegisters:
+ compileGetClosureRegisters();
+ break;
+ case GetClosureVar:
+ compileGetClosureVar();
+ break;
+ case PutClosureVar:
+ compilePutClosureVar();
+ break;
case CompareEq:
compileCompareEq();
break;
@@ -1519,6 +1534,36 @@
// https://bugs.webkit.org/show_bug.cgi?id=113647
}
+ void compileGetMyScope()
+ {
+ setJSValue(m_out.loadPtr(addressFor(
+ m_node->codeOrigin.stackOffset() + JSStack::ScopeChain)));
+ }
+
+ void compileSkipScope()
+ {
+ setJSValue(m_out.loadPtr(lowCell(m_node->child1()), m_heaps.JSScope_next));
+ }
+
+ void compileGetClosureRegisters()
+ {
+ setStorage(m_out.loadPtr(
+ lowCell(m_node->child1()), m_heaps.JSVariableObject_registers));
+ }
+
+ void compileGetClosureVar()
+ {
+ setJSValue(m_out.load64(
+ addressFor(lowStorage(m_node->child1()), m_node->varNumber())));
+ }
+
+ void compilePutClosureVar()
+ {
+ m_out.store64(
+ lowJSValue(m_node->child3()),
+ addressFor(lowStorage(m_node->child2()), m_node->varNumber()));
+ }
+
void compileCompareEq()
{
if (m_node->isBinaryUseKind(Int32Use)
_______________________________________________
webkit-changes mailing list
[email protected]
https://lists.webkit.org/mailman/listinfo/webkit-changes