X-Git-Url: https://git.saurik.com/apple/javascriptcore.git/blobdiff_plain/a253471d7f8e4d91bf6ebabab00155c3b387d3d0..93a3786624b2768d89bfa27e46598dc64e2fb70a:/runtime/JSWrapperObject.h diff --git a/runtime/JSWrapperObject.h b/runtime/JSWrapperObject.h index 65b4bdb..f1b6d32 100644 --- a/runtime/JSWrapperObject.h +++ b/runtime/JSWrapperObject.h @@ -22,27 +22,43 @@ #ifndef JSWrapperObject_h #define JSWrapperObject_h -#include "JSObject.h" +#include "JSDestructibleObject.h" namespace JSC { // This class is used as a base for classes such as String, // Number, Boolean and Date which are wrappers for primitive types. - class JSWrapperObject : public JSNonFinalObject { + class JSWrapperObject : public JSDestructibleObject { public: - typedef JSNonFinalObject Base; + typedef JSDestructibleObject Base; + + static size_t allocationSize(size_t inlineCapacity) + { + ASSERT_UNUSED(inlineCapacity, !inlineCapacity); + return sizeof(JSWrapperObject); + } JSValue internalValue() const; - void setInternalValue(JSGlobalData&, JSValue); + void setInternalValue(VM&, JSValue); - static Structure* createStructure(JSGlobalData& globalData, JSGlobalObject* globalObject, JSValue prototype) + static Structure* createStructure(VM& vm, JSGlobalObject* globalObject, JSValue prototype) { - return Structure::create(globalData, globalObject, prototype, TypeInfo(ObjectType, StructureFlags), &s_info); + return Structure::create(vm, globalObject, prototype, TypeInfo(ObjectType, StructureFlags), &s_info); + } + + static ptrdiff_t internalValueOffset() { return OBJECT_OFFSETOF(JSWrapperObject, m_internalValue); } + static ptrdiff_t internalValueCellOffset() + { +#if USE(JSVALUE64) + return internalValueOffset(); +#else + return internalValueOffset() + OBJECT_OFFSETOF(EncodedValueDescriptor, asBits.payload); +#endif } protected: - explicit JSWrapperObject(JSGlobalData&, Structure*); - static const unsigned StructureFlags = OverridesVisitChildren | JSNonFinalObject::StructureFlags; + explicit JSWrapperObject(VM&, Structure*); + static const unsigned StructureFlags = OverridesVisitChildren | Base::StructureFlags; static void visitChildren(JSCell*, SlotVisitor&); @@ -50,8 +66,8 @@ namespace JSC { WriteBarrier m_internalValue; }; - inline JSWrapperObject::JSWrapperObject(JSGlobalData& globalData, Structure* structure) - : JSNonFinalObject(globalData, structure) + inline JSWrapperObject::JSWrapperObject(VM& vm, Structure* structure) + : JSDestructibleObject(vm, structure) { } @@ -60,11 +76,11 @@ namespace JSC { return m_internalValue.get(); } - inline void JSWrapperObject::setInternalValue(JSGlobalData& globalData, JSValue value) + inline void JSWrapperObject::setInternalValue(VM& vm, JSValue value) { ASSERT(value); ASSERT(!value.isObject()); - m_internalValue.set(globalData, this, value); + m_internalValue.set(vm, this, value); } } // namespace JSC