Diff
Modified: trunk/Source/_javascript_Core/ChangeLog (117014 => 117015)
--- trunk/Source/_javascript_Core/ChangeLog 2012-05-14 23:47:22 UTC (rev 117014)
+++ trunk/Source/_javascript_Core/ChangeLog 2012-05-14 23:47:53 UTC (rev 117015)
@@ -1,5 +1,26 @@
2012-05-14 Michael Saboff <[email protected]>
+ Enh: Add the Ability to Disable / Enable _javascript_ GC Timer
+ https://bugs.webkit.org/show_bug.cgi?id=86382
+
+ Reviewed by Darin Adler.
+
+ Add flag to GCActivityCallback to enable / disable activity timer.
+ Add api via Heap to set the flag's value.
+
+ * _javascript_Core.vcproj/_javascript_Core/_javascript_Core.def: Windows export
+ * heap/Heap.cpp:
+ (JSC::Heap::setGarbageCollectionTimerEnabled):
+ * heap/Heap.h:
+ * runtime/GCActivityCallback.h:
+ (JSC::GCActivityCallback::isEnabled):
+ (JSC::GCActivityCallback::setEnabled):
+ (JSC::GCActivityCallback::GCActivityCallback):
+ * runtime/GCActivityCallbackCF.cpp:
+ (JSC::DefaultGCActivityCallbackPlatformData::timerDidFire):
+
+2012-05-14 Michael Saboff <[email protected]>
+
Increase Debug Logging in MarkStack::validate()
https://bugs.webkit.org/show_bug.cgi?id=86408
Modified: trunk/Source/_javascript_Core/_javascript_Core.vcproj/_javascript_Core/_javascript_Core.def (117014 => 117015)
--- trunk/Source/_javascript_Core/_javascript_Core.vcproj/_javascript_Core/_javascript_Core.def 2012-05-14 23:47:22 UTC (rev 117014)
+++ trunk/Source/_javascript_Core/_javascript_Core.vcproj/_javascript_Core/_javascript_Core.def 2012-05-14 23:47:53 UTC (rev 117015)
@@ -294,6 +294,7 @@
?setDescriptor@PropertyDescriptor@JSC@@QAEXVJSValue@2@I@Z
?setDumpsGeneratedCode@BytecodeGenerator@JSC@@SAX_N@Z
?setEnumerable@PropertyDescriptor@JSC@@QAEX_N@Z
+ ?setGarbageCollectionTimerEnabled@Heap@JSC@@QAEX_N@Z
?setGetter@PropertyDescriptor@JSC@@QAEXVJSValue@2@@Z
?setLoc@StatementNode@JSC@@QAEXHH@Z
?setMainThreadCallbacksPaused@WTF@@YAX_N@Z
Modified: trunk/Source/_javascript_Core/heap/Heap.cpp (117014 => 117015)
--- trunk/Source/_javascript_Core/heap/Heap.cpp 2012-05-14 23:47:22 UTC (rev 117014)
+++ trunk/Source/_javascript_Core/heap/Heap.cpp 2012-05-14 23:47:53 UTC (rev 117015)
@@ -832,6 +832,11 @@
return m_activityCallback.get();
}
+void Heap::setGarbageCollectionTimerEnabled(bool enable)
+{
+ activityCallback()->setEnabled(enable);
+}
+
void Heap::didAllocate(size_t bytes)
{
m_activityCallback->didAllocate(m_bytesAllocated + m_bytesAbandoned);
Modified: trunk/Source/_javascript_Core/heap/Heap.h (117014 => 117015)
--- trunk/Source/_javascript_Core/heap/Heap.h 2012-05-14 23:47:22 UTC (rev 117014)
+++ trunk/Source/_javascript_Core/heap/Heap.h 2012-05-14 23:47:53 UTC (rev 117015)
@@ -100,6 +100,7 @@
JS_EXPORT_PRIVATE GCActivityCallback* activityCallback();
JS_EXPORT_PRIVATE void setActivityCallback(PassOwnPtr<GCActivityCallback>);
+ JS_EXPORT_PRIVATE void setGarbageCollectionTimerEnabled(bool);
// true if an allocation or collection is in progress
inline bool isBusy();
Modified: trunk/Source/_javascript_Core/runtime/GCActivityCallback.h (117014 => 117015)
--- trunk/Source/_javascript_Core/runtime/GCActivityCallback.h 2012-05-14 23:47:22 UTC (rev 117014)
+++ trunk/Source/_javascript_Core/runtime/GCActivityCallback.h 2012-05-14 23:47:53 UTC (rev 117015)
@@ -47,9 +47,16 @@
virtual void willCollect() { }
virtual void synchronize() { }
virtual void cancel() { }
+ bool isEnabled() const { return m_enabled; }
+ void setEnabled(bool enabled) { m_enabled = enabled; }
protected:
- GCActivityCallback() {}
+ GCActivityCallback()
+ : m_enabled(true)
+ {
+ }
+
+ bool m_enabled;
};
struct DefaultGCActivityCallbackPlatformData;
Modified: trunk/Source/_javascript_Core/runtime/GCActivityCallbackCF.cpp (117014 => 117015)
--- trunk/Source/_javascript_Core/runtime/GCActivityCallbackCF.cpp 2012-05-14 23:47:22 UTC (rev 117014)
+++ trunk/Source/_javascript_Core/runtime/GCActivityCallbackCF.cpp 2012-05-14 23:47:53 UTC (rev 117015)
@@ -63,6 +63,9 @@
void DefaultGCActivityCallbackPlatformData::timerDidFire(CFRunLoopTimerRef, void *info)
{
Heap* heap = static_cast<Heap*>(info);
+ if (!heap->activityCallback()->isEnabled())
+ return;
+
APIEntryShim shim(heap->globalData());
#if !PLATFORM(IOS)
double startTime = WTF::monotonicallyIncreasingTime();
Modified: trunk/Source/WebCore/ChangeLog (117014 => 117015)
--- trunk/Source/WebCore/ChangeLog 2012-05-14 23:47:22 UTC (rev 117014)
+++ trunk/Source/WebCore/ChangeLog 2012-05-14 23:47:53 UTC (rev 117015)
@@ -1,3 +1,17 @@
+2012-05-14 Michael Saboff <[email protected]>
+
+ Enh: Add the Ability to Disable / Enable _javascript_ GC Timer
+ https://bugs.webkit.org/show_bug.cgi?id=86382
+
+ Reviewed by Darin Adler.
+
+ Plumbing to set / clear JS GC activity timer enable flag.
+
+ * WebCore.exp.in:
+ * bindings/js/GCController.cpp:
+ (WebCore::GCController::setJavaScriptGarbageCollectorTimerEnabled):
+ * bindings/js/GCController.h:
+
2012-05-14 Nate Chapin <[email protected]>
[V8] Crash in npObjectGetProperty() in V8NPObject.cpp
Modified: trunk/Source/WebCore/WebCore.exp.in (117014 => 117015)
--- trunk/Source/WebCore/WebCore.exp.in 2012-05-14 23:47:22 UTC (rev 117014)
+++ trunk/Source/WebCore/WebCore.exp.in 2012-05-14 23:47:53 UTC (rev 117015)
@@ -250,6 +250,7 @@
__ZN7WebCore12EventHandler9mouseDownEP7NSEvent
__ZN7WebCore12GCController17garbageCollectNowEv
__ZN7WebCore12GCController18garbageCollectSoonEv
+__ZN7WebCore12GCController41setJavaScriptGarbageCollectorTimerEnabledEb
__ZN7WebCore12GCController43garbageCollectOnAlternateThreadForDebuggingEb
__ZN7WebCore12PopupMenuMacC1EPNS_15PopupMenuClientE
__ZN7WebCore12PrintContext12pagePropertyEPNS_5FrameEPKci
Modified: trunk/Source/WebCore/bindings/js/GCController.cpp (117014 => 117015)
--- trunk/Source/WebCore/bindings/js/GCController.cpp 2012-05-14 23:47:22 UTC (rev 117014)
+++ trunk/Source/WebCore/bindings/js/GCController.cpp 2012-05-14 23:47:53 UTC (rev 117015)
@@ -97,6 +97,11 @@
detachThread(threadID);
}
+void GCController::setJavaScriptGarbageCollectorTimerEnabled(bool enable)
+{
+ JSDOMWindow::commonJSGlobalData()->heap.setGarbageCollectionTimerEnabled(enable);
+}
+
void GCController::discardAllCompiledCode()
{
JSLock lock(SilenceAssertionsOnly);
Modified: trunk/Source/WebCore/bindings/js/GCController.h (117014 => 117015)
--- trunk/Source/WebCore/bindings/js/GCController.h 2012-05-14 23:47:22 UTC (rev 117014)
+++ trunk/Source/WebCore/bindings/js/GCController.h 2012-05-14 23:47:53 UTC (rev 117015)
@@ -44,7 +44,7 @@
void garbageCollectNow(); // It's better to call garbageCollectSoon, unless you have a specific reason not to.
void garbageCollectOnAlternateThreadForDebugging(bool waitUntilDone); // Used for stress testing.
-
+ void setJavaScriptGarbageCollectorTimerEnabled(bool);
void discardAllCompiledCode();
private:
Modified: trunk/Source/WebKit/mac/ChangeLog (117014 => 117015)
--- trunk/Source/WebKit/mac/ChangeLog 2012-05-14 23:47:22 UTC (rev 117014)
+++ trunk/Source/WebKit/mac/ChangeLog 2012-05-14 23:47:53 UTC (rev 117015)
@@ -1,3 +1,16 @@
+2012-05-14 Michael Saboff <[email protected]>
+
+ Enh: Add the Ability to Disable / Enable _javascript_ GC Timer
+ https://bugs.webkit.org/show_bug.cgi?id=86382
+
+ Reviewed by Darin Adler.
+
+ Plumbing to set / clear JS GC activity timer enable flag.
+
+ * Misc/WebCoreStatistics.h:
+ * Misc/WebCoreStatistics.mm:
+ (+[WebCoreStatistics setJavaScriptGarbageCollectorTimerEnabled:]):
+
2012-05-11 Gavin Barraclough <[email protected]>
Introduce PropertyName class
Modified: trunk/Source/WebKit/mac/Misc/WebCoreStatistics.h (117014 => 117015)
--- trunk/Source/WebKit/mac/Misc/WebCoreStatistics.h 2012-05-14 23:47:22 UTC (rev 117014)
+++ trunk/Source/WebKit/mac/Misc/WebCoreStatistics.h 2012-05-14 23:47:53 UTC (rev 117015)
@@ -47,6 +47,7 @@
+ (void)garbageCollectJavaScriptObjects;
+ (void)garbageCollectJavaScriptObjectsOnAlternateThreadForDebugging:(BOOL)waitUntilDone;
++ (void)setJavaScriptGarbageCollectorTimerEnabled:(BOOL)enabled;
+ (size_t)iconPageURLMappingCount;
+ (size_t)iconRetainedPageURLCount;
Modified: trunk/Source/WebKit/mac/Misc/WebCoreStatistics.mm (117014 => 117015)
--- trunk/Source/WebKit/mac/Misc/WebCoreStatistics.mm 2012-05-14 23:47:22 UTC (rev 117014)
+++ trunk/Source/WebKit/mac/Misc/WebCoreStatistics.mm 2012-05-14 23:47:53 UTC (rev 117015)
@@ -120,6 +120,11 @@
gcController().garbageCollectOnAlternateThreadForDebugging(waitUntilDone);
}
++ (void)setJavaScriptGarbageCollectorTimerEnabled:(BOOL)enable
+{
+ gcController().setJavaScriptGarbageCollectorTimerEnabled(enable);
+}
+
+ (size_t)iconPageURLMappingCount
{
return iconDatabase().pageURLMappingCount();
Modified: trunk/Source/WebKit2/ChangeLog (117014 => 117015)
--- trunk/Source/WebKit2/ChangeLog 2012-05-14 23:47:22 UTC (rev 117014)
+++ trunk/Source/WebKit2/ChangeLog 2012-05-14 23:47:53 UTC (rev 117015)
@@ -1,3 +1,23 @@
+2012-05-14 Michael Saboff <[email protected]>
+
+ Enh: Add the Ability to Disable / Enable _javascript_ GC Timer
+ https://bugs.webkit.org/show_bug.cgi?id=86382
+
+ Reviewed by Darin Adler.
+
+ Plumbing to set / clear JS GC activity timer enable flag.
+
+ * UIProcess/API/C/WKContext.cpp:
+ (WKContextSetJavaScriptGarbageCollectorTimerEnabled):
+ * UIProcess/API/C/WKContext.h:
+ * UIProcess/WebContext.cpp:
+ (WebKit::WebContext::setJavaScriptGarbageCollectorTimerEnabled):
+ * UIProcess/WebContext.h:
+ * WebProcess/WebProcess.cpp:
+ (WebKit::WebProcess::setJavaScriptGarbageCollectorTimerEnabled):
+ * WebProcess/WebProcess.h:
+ * WebProcess/WebProcess.messages.in:
+
2012-05-14 Anders Carlsson <[email protected]>
The "plug-in was blocked" callback needs to include enough info to uniquely identify the plug-in + version
Modified: trunk/Source/WebKit2/UIProcess/API/C/WKContext.cpp (117014 => 117015)
--- trunk/Source/WebKit2/UIProcess/API/C/WKContext.cpp 2012-05-14 23:47:22 UTC (rev 117014)
+++ trunk/Source/WebKit2/UIProcess/API/C/WKContext.cpp 2012-05-14 23:47:53 UTC (rev 117015)
@@ -265,6 +265,10 @@
toImpl(contextRef)->garbageCollectJavaScriptObjects();
}
+void WKContextSetJavaScriptGarbageCollectorTimerEnabled(WKContextRef contextRef, bool enable)
+{
+ toImpl(contextRef)->setJavaScriptGarbageCollectorTimerEnabled(enable);
+}
// Deprecated functions.
void _WKContextSetAdditionalPluginsDirectory(WKContextRef context, WKStringRef pluginsDirectory)
{
Modified: trunk/Source/WebKit2/UIProcess/API/C/WKContext.h (117014 => 117015)
--- trunk/Source/WebKit2/UIProcess/API/C/WKContext.h 2012-05-14 23:47:22 UTC (rev 117014)
+++ trunk/Source/WebKit2/UIProcess/API/C/WKContext.h 2012-05-14 23:47:53 UTC (rev 117015)
@@ -156,6 +156,7 @@
WK_EXPORT void WKContextGetStatistics(WKContextRef context, void* functionContext, WKContextGetStatisticsFunction function);
WK_EXPORT void WKContextGarbageCollectJavaScriptObjects(WKContextRef context);
+WK_EXPORT void WKContextSetJavaScriptGarbageCollectorTimerEnabled(WKContextRef context, bool enable);
#ifdef __cplusplus
}
Modified: trunk/Source/WebKit2/UIProcess/WebContext.cpp (117014 => 117015)
--- trunk/Source/WebKit2/UIProcess/WebContext.cpp 2012-05-14 23:47:22 UTC (rev 117014)
+++ trunk/Source/WebKit2/UIProcess/WebContext.cpp 2012-05-14 23:47:53 UTC (rev 117015)
@@ -956,6 +956,11 @@
sendToAllProcesses(Messages::WebProcess::GarbageCollectJavaScriptObjects());
}
+void WebContext::setJavaScriptGarbageCollectorTimerEnabled(bool flag)
+{
+ sendToAllProcesses(Messages::WebProcess::SetJavaScriptGarbageCollectorTimerEnabled(flag));
+}
+
void WebContext::didReceiveMessageOnConnectionWorkQueue(CoreIPC::Connection* connection, CoreIPC::MessageID messageID, CoreIPC::ArgumentDecoder* arguments, bool& didHandleMessage)
{
if (messageID.is<CoreIPC::MessageClassWebContext>()) {
Modified: trunk/Source/WebKit2/UIProcess/WebContext.h (117014 => 117015)
--- trunk/Source/WebKit2/UIProcess/WebContext.h 2012-05-14 23:47:22 UTC (rev 117014)
+++ trunk/Source/WebKit2/UIProcess/WebContext.h 2012-05-14 23:47:53 UTC (rev 117015)
@@ -194,6 +194,7 @@
void getWebCoreStatistics(PassRefPtr<DictionaryCallback>);
void garbageCollectJavaScriptObjects();
+ void setJavaScriptGarbageCollectorTimerEnabled(bool flag);
#if PLATFORM(MAC)
static bool omitPDFSupport();
Modified: trunk/Source/WebKit2/WebProcess/WebProcess.cpp (117014 => 117015)
--- trunk/Source/WebKit2/WebProcess/WebProcess.cpp 2012-05-14 23:47:22 UTC (rev 117014)
+++ trunk/Source/WebKit2/WebProcess/WebProcess.cpp 2012-05-14 23:47:53 UTC (rev 117015)
@@ -962,6 +962,11 @@
gcController().garbageCollectNow();
}
+void WebProcess::setJavaScriptGarbageCollectorTimerEnabled(bool flag)
+{
+ gcController().setJavaScriptGarbageCollectorTimerEnabled(flag);
+}
+
#if ENABLE(PLUGIN_PROCESS)
void WebProcess::pluginProcessCrashed(CoreIPC::Connection*, const String& pluginPath)
{
Modified: trunk/Source/WebKit2/WebProcess/WebProcess.h (117014 => 117015)
--- trunk/Source/WebKit2/WebProcess/WebProcess.h 2012-05-14 23:47:22 UTC (rev 117014)
+++ trunk/Source/WebKit2/WebProcess/WebProcess.h 2012-05-14 23:47:53 UTC (rev 117015)
@@ -216,6 +216,7 @@
void getWebCoreStatistics(uint64_t callbackID);
void garbageCollectJavaScriptObjects();
+ void setJavaScriptGarbageCollectorTimerEnabled(bool flag);
#if PLATFORM(MAC)
void secItemResponse(CoreIPC::Connection*, uint64_t requestID, const SecItemResponseData&);
Modified: trunk/Source/WebKit2/WebProcess/WebProcess.messages.in (117014 => 117015)
--- trunk/Source/WebKit2/WebProcess/WebProcess.messages.in 2012-05-14 23:47:22 UTC (rev 117014)
+++ trunk/Source/WebKit2/WebProcess/WebProcess.messages.in 2012-05-14 23:47:53 UTC (rev 117015)
@@ -77,6 +77,7 @@
GetWebCoreStatistics(uint64_t callbackID)
GarbageCollectJavaScriptObjects()
+ SetJavaScriptGarbageCollectorTimerEnabled(bool enable)
#if PLATFORM(MAC)
SecItemResponse(uint64_t requestID, WebKit::SecItemResponseData response) DispatchOnConnectionQueue