Bug 1308039 - Preempt GC to paint (r=mrbkap)

This commit is contained in:
Bill McCloskey 2016-10-06 17:20:58 -07:00
Родитель 387c3c0e70
Коммит 00e4e382d6
1 изменённых файлов: 3 добавлений и 1 удалений

Просмотреть файл

@ -307,7 +307,7 @@ HangMonitorChild::InterruptCallback()
if (forcePaint) { if (forcePaint) {
RefPtr<TabChild> tabChild = TabChild::FindTabChild(forcePaintTab); RefPtr<TabChild> tabChild = TabChild::FindTabChild(forcePaintTab);
if (tabChild) { if (tabChild) {
JS::AutoAssertOnGC aaogc(mContext); JS::AutoAssertOnGC nogc(mContext);
JS::AutoAssertOnBarrier nobarrier(mContext); JS::AutoAssertOnBarrier nobarrier(mContext);
tabChild->ForcePaint(forcePaintEpoch); tabChild->ForcePaint(forcePaintEpoch);
} }
@ -390,6 +390,7 @@ HangMonitorChild::RecvForcePaint(const TabId& aTabId, const uint64_t& aLayerObse
} }
JS_RequestInterruptCallback(mContext); JS_RequestInterruptCallback(mContext);
JS::RequestGCInterruptCallback(mContext);
return true; return true;
} }
@ -1188,6 +1189,7 @@ mozilla::CreateHangMonitorChild(mozilla::ipc::Transport* aTransport,
JSContext* cx = danger::GetJSContext(); JSContext* cx = danger::GetJSContext();
JS_AddInterruptCallback(cx, InterruptCallback); JS_AddInterruptCallback(cx, InterruptCallback);
JS::AddGCInterruptCallback(cx, InterruptCallback);
ProcessHangMonitor* monitor = ProcessHangMonitor::GetOrCreate(); ProcessHangMonitor* monitor = ProcessHangMonitor::GetOrCreate();
HangMonitorChild* child = new HangMonitorChild(monitor); HangMonitorChild* child = new HangMonitorChild(monitor);