- JSCallbackObject(ExecState*, NonNullPassRefPtr<Structure>, JSClassRef, void* data);
- JSCallbackObject(JSClassRef);
- virtual ~JSCallbackObject();
+ typedef Parent Base;
+ static const unsigned StructureFlags = Base::StructureFlags | ProhibitsPropertyCaching | OverridesGetOwnPropertySlot | InterceptsGetOwnPropertySlotByIndexEvenWhenLengthIsNotZero | ImplementsHasInstance | OverridesHasInstance | OverridesGetPropertyNames | TypeOfShouldCallGetCallData;
+
+ ~JSCallbackObject();
+
+ static JSCallbackObject* create(ExecState* exec, JSGlobalObject* globalObject, Structure* structure, JSClassRef classRef, void* data)
+ {
+ ASSERT_UNUSED(globalObject, !structure->globalObject() || structure->globalObject() == globalObject);
+ JSCallbackObject* callbackObject = new (NotNull, allocateCell<JSCallbackObject>(*exec->heap())) JSCallbackObject(exec, structure, classRef, data);
+ callbackObject->finishCreation(exec);
+ return callbackObject;
+ }
+ static JSCallbackObject<Parent>* create(VM&, JSClassRef, Structure*);
+
+ static const bool needsDestruction;
+ static void destroy(JSCell* cell)
+ {
+ static_cast<JSCallbackObject*>(cell)->JSCallbackObject::~JSCallbackObject();
+ }