summaryrefslogtreecommitdiffstats
path: root/src/3rdparty/webkit/JavaScriptCore
diff options
context:
space:
mode:
authorKent Hansen <khansen@trolltech.com>2009-07-27 14:28:32 (GMT)
committerKent Hansen <khansen@trolltech.com>2009-07-27 17:56:08 (GMT)
commit4832462e2f0a3f68485ae85efff368e3346d5c1f (patch)
tree7045c1f0afbe71e2f3e780c4bfbfea520a994e01 /src/3rdparty/webkit/JavaScriptCore
parent0a4579306706f1fbe91d8b54734491376cb92093 (diff)
downloadQt-4832462e2f0a3f68485ae85efff368e3346d5c1f.zip
Qt-4832462e2f0a3f68485ae85efff368e3346d5c1f.tar.gz
Qt-4832462e2f0a3f68485ae85efff368e3346d5c1f.tar.bz2
add garbage collection hook to JSGlobalData::ClientData
Allows us to get a GC callback without having to create a dummy script object that implements JSObject::mark() and calling Heap::protect() on that one.
Diffstat (limited to 'src/3rdparty/webkit/JavaScriptCore')
-rw-r--r--src/3rdparty/webkit/JavaScriptCore/runtime/Collector.cpp4
-rw-r--r--src/3rdparty/webkit/JavaScriptCore/runtime/JSGlobalData.h3
2 files changed, 7 insertions, 0 deletions
diff --git a/src/3rdparty/webkit/JavaScriptCore/runtime/Collector.cpp b/src/3rdparty/webkit/JavaScriptCore/runtime/Collector.cpp
index 0ff97b8..f349f23 100644
--- a/src/3rdparty/webkit/JavaScriptCore/runtime/Collector.cpp
+++ b/src/3rdparty/webkit/JavaScriptCore/runtime/Collector.cpp
@@ -1107,6 +1107,10 @@ bool Heap::collect()
markStackObjectsConservatively();
markProtectedObjects();
+#if QT_BUILD_SCRIPT_LIB
+ if (m_globalData->clientData)
+ m_globalData->clientData->mark();
+#endif
if (m_markListSet && m_markListSet->size())
MarkedArgumentBuffer::markLists(*m_markListSet);
if (m_globalData->exception && !m_globalData->exception.marked())
diff --git a/src/3rdparty/webkit/JavaScriptCore/runtime/JSGlobalData.h b/src/3rdparty/webkit/JavaScriptCore/runtime/JSGlobalData.h
index 96a3c2c..d5202c6 100644
--- a/src/3rdparty/webkit/JavaScriptCore/runtime/JSGlobalData.h
+++ b/src/3rdparty/webkit/JavaScriptCore/runtime/JSGlobalData.h
@@ -65,6 +65,9 @@ namespace JSC {
public:
struct ClientData {
virtual ~ClientData() = 0;
+#ifdef QT_BUILD_SCRIPT_LIB
+ virtual void mark() {}
+#endif
};
static bool sharedInstanceExists();