X-Git-Url: https://git.saurik.com/apple/javascriptcore.git/blobdiff_plain/b80e619319b1def83d1e8b4f84042b661be1be7f..14957cd040308e3eeec43d26bae5d76da13fcd85:/runtime/JSPropertyNameIterator.h?ds=inline diff --git a/runtime/JSPropertyNameIterator.h b/runtime/JSPropertyNameIterator.h index 01700ac..ff129f0 100644 --- a/runtime/JSPropertyNameIterator.h +++ b/runtime/JSPropertyNameIterator.h @@ -45,16 +45,14 @@ namespace JSC { public: static JSPropertyNameIterator* create(ExecState*, JSObject*); - static PassRefPtr createStructure(JSValue prototype) + static Structure* createStructure(JSGlobalData& globalData, JSValue prototype) { - return Structure::create(prototype, TypeInfo(CompoundType, OverridesMarkChildren), AnonymousSlotCount); + return Structure::create(globalData, prototype, TypeInfo(CompoundType, OverridesVisitChildren), AnonymousSlotCount, &s_info); } - - virtual ~JSPropertyNameIterator(); virtual bool isPropertyNameIterator() const { return true; } - virtual void markChildren(MarkStack&); + virtual void visitChildren(SlotVisitor&); bool getOffset(size_t i, int& offset) { @@ -67,41 +65,43 @@ namespace JSC { JSValue get(ExecState*, JSObject*, size_t i); size_t size() { return m_jsStringsSize; } - void setCachedStructure(Structure* structure) + void setCachedStructure(JSGlobalData& globalData, Structure* structure) { ASSERT(!m_cachedStructure); ASSERT(structure); - m_cachedStructure = structure; + m_cachedStructure.set(globalData, this, structure); } Structure* cachedStructure() { return m_cachedStructure.get(); } - void setCachedPrototypeChain(NonNullPassRefPtr cachedPrototypeChain) { m_cachedPrototypeChain = cachedPrototypeChain; } + void setCachedPrototypeChain(JSGlobalData& globalData, StructureChain* cachedPrototypeChain) { m_cachedPrototypeChain.set(globalData, this, cachedPrototypeChain); } StructureChain* cachedPrototypeChain() { return m_cachedPrototypeChain.get(); } + + static const ClassInfo s_info; private: JSPropertyNameIterator(ExecState*, PropertyNameArrayData* propertyNameArrayData, size_t numCacheableSlot); - RefPtr m_cachedStructure; - RefPtr m_cachedPrototypeChain; + WriteBarrier m_cachedStructure; + WriteBarrier m_cachedPrototypeChain; uint32_t m_numCacheableSlots; uint32_t m_jsStringsSize; - OwnArrayPtr m_jsStrings; + OwnArrayPtr > m_jsStrings; }; - inline void Structure::setEnumerationCache(JSPropertyNameIterator* enumerationCache) + inline void Structure::setEnumerationCache(JSGlobalData& globalData, JSPropertyNameIterator* enumerationCache) { ASSERT(!isDictionary()); - m_enumerationCache = enumerationCache; + m_enumerationCache.set(globalData, this, enumerationCache); } - inline void Structure::clearEnumerationCache(JSPropertyNameIterator* enumerationCache) + inline JSPropertyNameIterator* Structure::enumerationCache() { - m_enumerationCache.clear(enumerationCache); + return m_enumerationCache.get(); } - inline JSPropertyNameIterator* Structure::enumerationCache() + ALWAYS_INLINE JSPropertyNameIterator* Register::propertyNameIterator() const { - return m_enumerationCache.get(); + return static_cast(jsValue().asCell()); } } // namespace JSC