Diff
Modified: trunk/Source/WebKit2/ChangeLog (94453 => 94454)
--- trunk/Source/WebKit2/ChangeLog 2011-09-02 22:19:59 UTC (rev 94453)
+++ trunk/Source/WebKit2/ChangeLog 2011-09-02 22:21:07 UTC (rev 94454)
@@ -1,3 +1,21 @@
+2011-09-02 Ada Chan <adac...@apple.com>
+
+ Add WKContextGarbageCollectJavaScriptObjects() which does a garbage collection in the WebProcess
+ https://bugs.webkit.org/show_bug.cgi?id=67526
+
+ Reviewed by Darin Adler.
+
+ * UIProcess/API/C/WKContext.cpp:
+ (WKContextGarbageCollectJavaScriptObjects):
+ * UIProcess/API/C/WKContext.h:
+ * UIProcess/WebContext.cpp:
+ (WebKit::WebContext::garbageCollectJavaScriptObjects): Send a message to WebProcess to garbage collect JS objects.
+ * UIProcess/WebContext.h:
+ * WebProcess/WebProcess.cpp:
+ (WebKit::WebProcess::garbageCollectJavaScriptObjects): Call GCController::garbageCollectNow().
+ * WebProcess/WebProcess.h:
+ * WebProcess/WebProcess.messages.in: Add GarbageCollectJavaScriptObjects message.
+
2011-09-02 Anders Carlsson <ander...@apple.com>
Remove plug-in paths from web process sandbox
Modified: trunk/Source/WebKit2/UIProcess/API/C/WKContext.cpp (94453 => 94454)
--- trunk/Source/WebKit2/UIProcess/API/C/WKContext.cpp 2011-09-02 22:19:59 UTC (rev 94453)
+++ trunk/Source/WebKit2/UIProcess/API/C/WKContext.cpp 2011-09-02 22:21:07 UTC (rev 94454)
@@ -237,3 +237,8 @@
toImpl(contextRef)->getWebCoreStatistics(DictionaryCallback::create(context, callback));
}
+void WKContextGarbageCollectJavaScriptObjects(WKContextRef contextRef)
+{
+ toImpl(contextRef)->garbageCollectJavaScriptObjects();
+}
+
Modified: trunk/Source/WebKit2/UIProcess/API/C/WKContext.h (94453 => 94454)
--- trunk/Source/WebKit2/UIProcess/API/C/WKContext.h 2011-09-02 22:19:59 UTC (rev 94453)
+++ trunk/Source/WebKit2/UIProcess/API/C/WKContext.h 2011-09-02 22:21:07 UTC (rev 94454)
@@ -140,6 +140,8 @@
typedef void (*WKContextGetStatisticsFunction)(WKDictionaryRef statistics, WKErrorRef error, void* functionContext);
WK_EXPORT void WKContextGetStatistics(WKContextRef context, void* functionContext, WKContextGetStatisticsFunction function);
+
+WK_EXPORT void WKContextGarbageCollectJavaScriptObjects(WKContextRef context);
#ifdef __cplusplus
}
Modified: trunk/Source/WebKit2/UIProcess/WebContext.cpp (94453 => 94454)
--- trunk/Source/WebKit2/UIProcess/WebContext.cpp 2011-09-02 22:19:59 UTC (rev 94453)
+++ trunk/Source/WebKit2/UIProcess/WebContext.cpp 2011-09-02 22:21:07 UTC (rev 94454)
@@ -829,4 +829,9 @@
callback->performCallbackWithReturnValue(statistics.get());
}
+void WebContext::garbageCollectJavaScriptObjects()
+{
+ process()->send(Messages::WebProcess::GarbageCollectJavaScriptObjects(), 0);
+}
+
} // namespace WebKit
Modified: trunk/Source/WebKit2/UIProcess/WebContext.h (94453 => 94454)
--- trunk/Source/WebKit2/UIProcess/WebContext.h 2011-09-02 22:19:59 UTC (rev 94453)
+++ trunk/Source/WebKit2/UIProcess/WebContext.h 2011-09-02 22:21:07 UTC (rev 94454)
@@ -181,6 +181,7 @@
bool httpPipeliningEnabled();
void getWebCoreStatistics(PassRefPtr<DictionaryCallback>);
+ void garbageCollectJavaScriptObjects();
private:
WebContext(ProcessModel, const String& injectedBundlePath);
Modified: trunk/Source/WebKit2/WebProcess/WebProcess.cpp (94453 => 94454)
--- trunk/Source/WebKit2/WebProcess/WebProcess.cpp 2011-09-02 22:19:59 UTC (rev 94453)
+++ trunk/Source/WebKit2/WebProcess/WebProcess.cpp 2011-09-02 22:21:07 UTC (rev 94454)
@@ -934,6 +934,11 @@
m_connection->send(Messages::WebContext::DidGetWebCoreStatistics(data, callbackID), 0);
}
+void WebProcess::garbageCollectJavaScriptObjects()
+{
+ gcController().garbageCollectNow();
+}
+
#if ENABLE(PLUGIN_PROCESS)
void WebProcess::pluginProcessCrashed(const String& pluginPath)
{
Modified: trunk/Source/WebKit2/WebProcess/WebProcess.h (94453 => 94454)
--- trunk/Source/WebKit2/WebProcess/WebProcess.h 2011-09-02 22:19:59 UTC (rev 94453)
+++ trunk/Source/WebKit2/WebProcess/WebProcess.h 2011-09-02 22:21:07 UTC (rev 94454)
@@ -178,6 +178,7 @@
void setTextCheckerState(const TextCheckerState&);
void getWebCoreStatistics(uint64_t callbackID);
+ void garbageCollectJavaScriptObjects();
// ChildProcess
virtual bool shouldTerminate();
Modified: trunk/Source/WebKit2/WebProcess/WebProcess.messages.in (94453 => 94454)
--- trunk/Source/WebKit2/WebProcess/WebProcess.messages.in 2011-09-02 22:19:59 UTC (rev 94453)
+++ trunk/Source/WebKit2/WebProcess/WebProcess.messages.in 2011-09-02 22:21:07 UTC (rev 94454)
@@ -69,4 +69,5 @@
SetEnhancedAccessibility(bool flag)
GetWebCoreStatistics(uint64_t callbackID)
+ GarbageCollectJavaScriptObjects()
}