summaryrefslogtreecommitdiff
path: root/Source/JavaScriptCore/runtime/JSArrayIterator.h
diff options
context:
space:
mode:
authorLorry Tar Creator <lorry-tar-importer@lorry>2015-05-20 09:56:07 +0000
committerLorry Tar Creator <lorry-tar-importer@lorry>2015-05-20 09:56:07 +0000
commit41386e9cb918eed93b3f13648cbef387e371e451 (patch)
treea97f9d7bd1d9d091833286085f72da9d83fd0606 /Source/JavaScriptCore/runtime/JSArrayIterator.h
parente15dd966d523731101f70ccf768bba12435a0208 (diff)
downloadWebKitGtk-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.h29
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;
};
}