X-Git-Url: https://git.saurik.com/apple/javascriptcore.git/blobdiff_plain/ba379fdc102753d6be2c4d937058fe40257329fe..14957cd040308e3eeec43d26bae5d76da13fcd85:/runtime/StructureChain.h diff --git a/runtime/StructureChain.h b/runtime/StructureChain.h index c48749d..4fc1212 100644 --- a/runtime/StructureChain.h +++ b/runtime/StructureChain.h @@ -26,6 +26,9 @@ #ifndef StructureChain_h #define StructureChain_h +#include "JSCell.h" +#include "Structure.h" + #include #include #include @@ -35,16 +38,22 @@ namespace JSC { class Structure; - class StructureChain : public RefCounted { + class StructureChain : public JSCell { + friend class JIT; + public: - static PassRefPtr create(Structure* head) { return adoptRef(new StructureChain(head)); } - RefPtr* head() { return m_vector.get(); } - bool isCacheable() const; + static StructureChain* create(JSGlobalData& globalData, Structure* head) { return new (&globalData) StructureChain(globalData, globalData.structureChainStructure.get(), head); } + WriteBarrier* head() { return m_vector.get(); } + void visitChildren(SlotVisitor&); - private: - StructureChain(Structure* head); + static Structure* createStructure(JSGlobalData& globalData, JSValue prototype) { return Structure::create(globalData, prototype, TypeInfo(CompoundType, OverridesVisitChildren), 0, &s_info); } + + static ClassInfo s_info; - OwnArrayPtr > m_vector; + private: + StructureChain(JSGlobalData&, Structure*, Structure* head); + ~StructureChain(); + OwnArrayPtr > m_vector; }; } // namespace JSC