diff options
author | Lorry Tar Creator <lorry-tar-importer@lorry> | 2015-05-20 09:56:07 +0000 |
---|---|---|
committer | Lorry Tar Creator <lorry-tar-importer@lorry> | 2015-05-20 09:56:07 +0000 |
commit | 41386e9cb918eed93b3f13648cbef387e371e451 (patch) | |
tree | a97f9d7bd1d9d091833286085f72da9d83fd0606 /Source/JavaScriptCore/runtime/JSArrayIterator.h | |
parent | e15dd966d523731101f70ccf768bba12435a0208 (diff) | |
download | WebKitGtk-tarball-41386e9cb918eed93b3f13648cbef387e371e451.tar.gz |
webkitgtk-2.4.9webkitgtk-2.4.9
Diffstat (limited to 'Source/JavaScriptCore/runtime/JSArrayIterator.h')
-rw-r--r-- | Source/JavaScriptCore/runtime/JSArrayIterator.h | 29 |
1 files changed, 24 insertions, 5 deletions
diff --git a/Source/JavaScriptCore/runtime/JSArrayIterator.h b/Source/JavaScriptCore/runtime/JSArrayIterator.h index 0166bd2e5..2994a67d1 100644 --- a/Source/JavaScriptCore/runtime/JSArrayIterator.h +++ b/Source/JavaScriptCore/runtime/JSArrayIterator.h @@ -33,7 +33,11 @@ namespace JSC { enum ArrayIterationKind : uint32_t { ArrayIterateKey, ArrayIterateValue, - ArrayIterateKeyValue + ArrayIterateKeyValue, + ArrayIterateSparseTag = 4, + ArrayIterateSparseKey, + ArrayIterateSparseValue, + ArrayIterateSparseKeyValue }; class JSArrayIterator : public JSNonFinalObject { @@ -55,18 +59,33 @@ public: return instance; } - ArrayIterationKind kind(ExecState*) const; - JSValue iteratedValue(ExecState*) const; - JSArrayIterator* clone(ExecState*); - + ArrayIterationKind iterationKind() const { return m_iterationKind; } + JSObject* iteratedObject() const { return m_iteratedObject.get(); } + size_t nextIndex() const { return m_nextIndex; } + void setNextIndex(size_t nextIndex) { m_nextIndex = nextIndex; } + void finish() { m_nextIndex = std::numeric_limits<uint32_t>::max(); } + using JSNonFinalObject::arrayStorageOrNull; + static ptrdiff_t offsetOfIterationKind() { return OBJECT_OFFSETOF(JSArrayIterator, m_iterationKind); } + static ptrdiff_t offsetOfIteratedObject() { return OBJECT_OFFSETOF(JSArrayIterator, m_iteratedObject); } + static ptrdiff_t offsetOfNextIndex() { return OBJECT_OFFSETOF(JSArrayIterator, m_nextIndex); } + private: + + static const unsigned StructureFlags = Base::StructureFlags | OverridesVisitChildren; + JSArrayIterator(VM& vm, Structure* structure) : Base(vm, structure) + , m_nextIndex(0) { } void finishCreation(VM&, JSGlobalObject*, ArrayIterationKind, JSObject* iteratedObject); + static void visitChildren(JSCell*, SlotVisitor&); + + ArrayIterationKind m_iterationKind; + WriteBarrier<JSObject> m_iteratedObject; + uint32_t m_nextIndex; }; } |