summaryrefslogtreecommitdiffstats
path: root/Source/JavaScriptCore/API/JSCallbackObject.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'Source/JavaScriptCore/API/JSCallbackObject.cpp')
-rw-r--r--Source/JavaScriptCore/API/JSCallbackObject.cpp12
1 files changed, 12 insertions, 0 deletions
diff --git a/Source/JavaScriptCore/API/JSCallbackObject.cpp b/Source/JavaScriptCore/API/JSCallbackObject.cpp
index e3ef7a4..6a7462a 100644
--- a/Source/JavaScriptCore/API/JSCallbackObject.cpp
+++ b/Source/JavaScriptCore/API/JSCallbackObject.cpp
@@ -39,4 +39,16 @@ ASSERT_CLASS_FITS_IN_CELL(JSCallbackObject<JSGlobalObject>);
template <> const ClassInfo JSCallbackObject<JSObjectWithGlobalObject>::s_info = { "CallbackObject", &JSObjectWithGlobalObject::s_info, 0, 0 };
template <> const ClassInfo JSCallbackObject<JSGlobalObject>::s_info = { "CallbackGlobalObject", &JSGlobalObject::s_info, 0, 0 };
+void JSCallbackObjectData::finalize(Handle<Unknown> handle, void* context)
+{
+ JSClassRef jsClass = static_cast<JSClassRef>(context);
+ JSObjectRef thisRef = toRef(asObject(handle.get()));
+
+ for (; jsClass; jsClass = jsClass->parentClass)
+ if (JSObjectFinalizeCallback finalize = jsClass->finalize)
+ finalize(thisRef);
+ HandleSlot slot = handle.slot();
+ HandleHeap::heapFor(slot)->deallocate(slot);
+}
+
} // namespace JSC