| #ifndef JSDestructibleObject_h |
| #define JSDestructibleObject_h |
| class JSDestructibleObject : public JSNonFinalObject { |
| typedef JSNonFinalObject Base; |
| static const bool needsDestruction = true; |
| const ClassInfo* classInfo() const { return m_classInfo; } |
| static ptrdiff_t classInfoOffset() { return OBJECT_OFFSETOF(JSDestructibleObject, m_classInfo); } |
| JSDestructibleObject(VM& vm, Structure* structure, Butterfly* butterfly = 0) |
| : JSNonFinalObject(vm, structure, butterfly) |
| , m_classInfo(structure->classInfo()) |
| const ClassInfo* m_classInfo; |
| inline const ClassInfo* JSCell::classInfo() const |
| if (MarkedBlock::blockFor(this)->destructorType() == MarkedBlock::Normal) |
| return static_cast<const JSDestructibleObject*>(this)->classInfo(); |
| #if ENABLE(GC_VALIDATION) |
| return m_structure.unvalidatedGet()->classInfo(); |
| return m_structure->classInfo(); |