Commit Graph
88 Commits
Author SHA1 Message Date
Daniel Holbert ac764635e4 Bug 2043772: Use MakeRefPtr to do allocation for various RefPtr variables in xpcom/threads/. r=xpcom-reviewers,emilio
Differential Revision: https://phabricator.services.mozilla.com/D303524
2026-05-30 14:29:48 +00:00
Sylvestre Ledru 6149f49299 Bug 2023419 - Remove Emacs/Vim modelines from xpcom/ r=emilio
replaced by .editorconfig
# ignore-this-changeset

Differential Revision: https://phabricator.services.mozilla.com/D287878
2026-03-16 17:22:07 +00:00
Jens Stutte 6a6b74df8e Bug 1979268 - part 1: Have a common TargetShutdownTaskSet to manage a set of nsITargetShutdownTask. r=xpcom-reviewers,nika,dom-worker-reviewers,smaug
This is just a refactoring to have less copy&pasted code instead of more once we enable more targets for shutdown tasks.

Differential Revision: https://phabricator.services.mozilla.com/D258804
2025-09-26 17:39:50 +00:00
Nika Layzell b66d532c27 Bug 1824189 - Add a NS_DISPATCH_FALLIBLE flag to specify that events should not be leaked on error, r=xpcom-reviewers,necko-reviewers,geckoview-reviewers,media-playback-reviewers,webrtc-reviewers,bwc,padenot,emilio,jstutte,dom-worker-reviewers,asuth,kershaw,ohall
Differential Revision: https://phabricator.services.mozilla.com/D258327
2025-08-26 16:47:30 +00:00
Atila Butkovits a906e9e172 Revert "Bug 1824189 - Add a NS_DISPATCH_FALLIBLE flag to specify that events should not be leaked on error, r=xpcom-reviewers,necko-reviewers,geckoview-reviewers,media-playback-reviewers,webrtc-reviewers,bwc,padenot,emilio,jstutte,dom-worker-reviewers,asuth,kershaw,ohall" for causing leaks complaining about MediaTransportHandlerSTS.
This reverts commit 381d5dd6f0.
2025-08-26 00:43:59 +00:00
Nika Layzell 381d5dd6f0 Bug 1824189 - Add a NS_DISPATCH_FALLIBLE flag to specify that events should not be leaked on error, r=xpcom-reviewers,necko-reviewers,geckoview-reviewers,media-playback-reviewers,webrtc-reviewers,bwc,padenot,emilio,jstutte,dom-worker-reviewers,asuth,kershaw,ohall
Differential Revision: https://phabricator.services.mozilla.com/D258327
2025-08-25 23:20:08 +00:00
tannal cfc7051cf8 Bug 1917994 - Remove threads.control_event_queue.enabled pref. r=gregp,smaug
Differential Revision: https://phabricator.services.mozilla.com/D222197
2024-09-16 18:14:53 +00:00
Randell Jesup 7715d789c7 Bug 1754554: Resolve TSAN issue with mBaseQueue in memory reporting r=mccr8
Differential Revision: https://phabricator.services.mozilla.com/D178073
2023-05-15 16:42:30 +00:00
Nika Layzell 119713a821 Bug 1799222 - Part 1: Prevent accidental dispatches to threadpool and timer threads, r=xpcom-reviewers,necko-reviewers,geckoview-reviewers,media-playback-reviewers,jesup,m_kato,padenot,kmag
Differential Revision: https://phabricator.services.mozilla.com/D161349
2022-12-16 17:09:16 +00:00
Cristian Tuns de12c42c7f Backed out changeset 42315c023471 (bug 1799222) for causing multiple failures CLOSED TREE 2022-12-06 16:35:58 -05:00
Nika Layzell e8f474cee1 Bug 1799222 - Prevent accidental dispatches to threadpool and timer threads, r=xpcom-reviewers,necko-reviewers,geckoview-reviewers,media-playback-reviewers,jesup,m_kato,padenot,kmag
Differential Revision: https://phabricator.services.mozilla.com/D161349
2022-12-06 20:44:15 +00:00
Olli Pettay 9cbeee328d Bug 1778575, add support for low priority tasks and use such to trigger pending RefreshDriverTimer, r=bas
This improves the setup so that whenever there are only idle/deferred tasks, we can run low priority tasks immediately.
Manual testing shows that this way we get couple of more ticks every now and then.

Without this patch we'd rely on normal priority tasks, but since there might be multiple of those pending, ShouldGiveNonVsyncTasksMoreTime() would
return true.

So, low priority tasks are effectively "run when the queue is otherwise empty (but idle-type of tasks are still special)".

Differential Revision: https://phabricator.services.mozilla.com/D159583
2022-10-18 17:29:44 +00:00
Fabrice Desré e29be44cb7 Bug 1761040 - Prefix thread safety macros with MOZ_ r=geckoview-reviewers,media-playback-reviewers,alwu,jesup,m_kato
Differential Revision: https://phabricator.services.mozilla.com/D152575
2022-08-03 16:39:41 +00:00
Andreea Pavel fc724b92fc Backed out changeset b9d2965591b9 (bug 1761040) for landing with wrong author CLOSED TREE DONTBUILD 2022-08-03 18:55:00 +03:00
Andreea Pavel eda47f3911 Bug 1761040 - Prefix thread safety macros with MOZ_ r=geckoview-reviewers,media-playback-reviewers,alwu,jesup,m_kato
Differential Revision: https://phabricator.services.mozilla.com/D152575
2022-08-03 15:27:43 +00:00
Andreea Pavel c2e97d2e06 Backed out changeset a907159a482f (bug 1761040) for causing build bustages on a CLOSED TREE 2022-08-02 04:59:08 +03:00
Fabrice Desré d2d02e8493 Bug 1761040 - Prefix thread safety macros with MOZ_ r=geckoview-reviewers,media-playback-reviewers,alwu,jesup,m_kato
Differential Revision: https://phabricator.services.mozilla.com/D152575
2022-08-02 00:49:41 +00:00
Jens Stutte 47a60f8bc4 Bug 1772281 - Reduce the scope of the mMutex lock in ThreadEventQueue::SetObserver to avoid a potential recursive deadlock. r=xpcom-reviewers,jesup,nika
Differential Revision: https://phabricator.services.mozilla.com/D148249
2022-06-03 18:03:36 +00:00
Nika Layzell c320f56d5b Bug 1738103 - Part 4: Add XPCOM support for shutdown tasks, r=necko-reviewers,KrisWright
Tasks registered with shutdown tasks are called when the target
nsISerialEventTarget is about to be destroyed.

Differential Revision: https://phabricator.services.mozilla.com/D129840
2022-03-23 22:22:04 +00:00
Randell Jesup 3d8ac120d3 Bug 1760644 - xpcom EventQueue thread-safety annotations r=nika
Differential Revision: https://phabricator.services.mozilla.com/D141652
2022-03-23 01:28:38 +00:00
Randell Jesup 5747a59acb Bug 1749610: Minor cleanup of xpcom EventQueues r=xpcom-reviewers,nika
Differential Revision: https://phabricator.services.mozilla.com/D135644
2022-01-28 16:49:58 +00:00
Andrew McCreight 264d87b4c9 Bug 1736751 - Use swap in ThreadEventQueue::SetObserver. r=KrisWright
Differential Revision: https://phabricator.services.mozilla.com/D129031
2021-11-08 17:37:02 +00:00
Olli Pettay 7694b76889 Bug 1734809 - add a new task priority between vsync and control, r=bas
Differential Revision: https://phabricator.services.mozilla.com/D127935
2021-10-08 19:29:36 +00:00
Olli Pettay 35422c4aa5 Bug 1708042, add control priority to the main thread, r=bas
Differential Revision: https://phabricator.services.mozilla.com/D115404
2021-05-21 15:46:45 +00:00
Iulian Moraru aba861ee42 Backed out 3 changesets (bug 1708042) for causing wr failures on background-color-animation-in-body.html.
Backed out changeset f8febc2db198 (bug 1708042)
Backed out changeset a0fccd7121b5 (bug 1708042)
Backed out changeset ddc6d95f0601 (bug 1708042)
2021-05-21 16:39:38 +03:00
Olli Pettay c09a55f8fe Bug 1708042, add control priority to the main thread, r=bas
Differential Revision: https://phabricator.services.mozilla.com/D115404
2021-05-20 12:42:31 +00:00
Sean Feng 789c711464 Bug 1697585 - Rename high priority to vsync priority r=smaug
`High` priority is being used for vsync tasks, so we should rename it to
make it clear, and renaming it also makes our priority naming less
confusing.

Differential Revision: https://phabricator.services.mozilla.com/D109536
2021-04-14 19:56:42 +00:00
Brindusan Cristian 2e90a569b4 Backed out 5 changesets (bug 1697585) for causing build bustages on nsTimerImpl.h. CLOSED TREE
Backed out changeset e9e4a710e7d1 (bug 1697585)
Backed out changeset bc271f42bcb7 (bug 1697585)
Backed out changeset d8516aec6a5e (bug 1697585)
Backed out changeset 0b1bc6cb84af (bug 1697585)
Backed out changeset 074ebebaee27 (bug 1697585)
2021-04-06 17:45:02 +03:00
Sean Feng 16bd66adfb Bug 1697585 - Rename high priority to vsync priority r=smaug
`High` priority is being used for vsync tasks, so we should rename it to
make it clear, and renaming it also makes our priority naming less
confusing.

Differential Revision: https://phabricator.services.mozilla.com/D109536
2021-04-06 13:10:50 +00:00
Gerald Squelart f25e1c0093 Bug 1691589 - Reduce reliance on GeckoProfiler.h when only labels (and maybe markers) are needed - r=necko-reviewers,geckoview-reviewers,sg,agi,florian
There are no code changes, only #include changes.
It was a fairly mechanical process: Search for all "AUTO_PROFILER_LABEL", and in each file, if only labels are used, convert "GeckoProfiler.h" into "ProfilerLabels.h" (or just add that last one where needed).
In some files, there were also some marker calls but no other profiler-related calls, in these cases "GeckoProfiler.h" was replaced with both "ProfilerLabels.h" and "ProfilerMarkers.h", which still helps in reducing the use of the all-encompassing "GeckoProfiler.h".

Differential Revision: https://phabricator.services.mozilla.com/D104588
2021-02-16 04:44:19 +00:00
Simon Giesecke 46908cfb51 Bug 1660470 - Add missing include directives/forward declarations. r=nika
Differential Revision: https://phabricator.services.mozilla.com/D87865
2020-11-23 16:21:38 +00:00
Bas Schouten 40b0201d26 Bug 1669256 - Part 5: Remove dead code from ProcessNextEvent and its supporting functions. r=smaug
Differential Revision: https://phabricator.services.mozilla.com/D92713
2020-10-09 17:38:15 +00:00
Bas Schouten 2cd7af54d7 Bug 1669256 - Part 4: Remove broken code to control input event prioritization and fix it. r=smaug
Differential Revision: https://phabricator.services.mozilla.com/D92712
2020-10-09 16:57:47 +00:00
Bas Schouten a22a4d9cd8 Bug 1669256 - Part 3: Remove priority related code from ThreadEventQueue. r=smaug
Differential Revision: https://phabricator.services.mozilla.com/D92711
2020-10-09 16:57:40 +00:00
Bas Schouten cc14b411dd Bug 1669256 - Part 2: Remove code for idle handling from ThreadEventQueue. r=smaug
Differential Revision: https://phabricator.services.mozilla.com/D92710
2020-10-09 16:57:38 +00:00
Bas Schouten 73771dfc18 Bug 1669256 - Part 1: Remove AbstractEventQueue and de-templatize ThreadEventQueue. r=smaug
Differential Revision: https://phabricator.services.mozilla.com/D92709
2020-10-09 17:56:34 +00:00
Bas Schouten ebb19b4387 Bug 1669214 - Part 6: Remove code for PrioritizedEventQueue. r=smaug
Differential Revision: https://phabricator.services.mozilla.com/D92455
2020-10-06 13:21:58 +00:00
Bas Schouten e6e7a9365c Bug 1669214 - Part 5: Construct regular EventQueue using TC forwarding for the main thread. r=smaug
Differential Revision: https://phabricator.services.mozilla.com/D92454
2020-10-06 13:21:35 +00:00
Bas Schouten 9bcde8361a Bug 1669214 - Part 1: Remove environment variable to disable TaskController. r=smaug
Differential Revision: https://phabricator.services.mozilla.com/D92450
2020-10-06 13:19:51 +00:00
Bas Schouten eb990fdbaa Bug 1606706 - Part 2: Integrate new TaskController code into tree and allow usage by pref. r=smaug
Differential Revision: https://phabricator.services.mozilla.com/D74672
2020-06-04 00:02:18 +00:00
Bogdan Tara b5e64c8f39 Backed out 2 changesets (bug 1606706) for talos tests timeouts CLOSED TREE
Backed out changeset ab3e1a067a71 (bug 1606706)
Backed out changeset c47cf57dab71 (bug 1606706)
2020-06-03 11:51:04 +03:00
Bas Schouten b4b61e0511 Bug 1606706 - Part 2: Integrate new TaskController code into tree and allow usage by pref. r=smaug,?
Differential Revision: https://phabricator.services.mozilla.com/D74672
2020-06-02 11:36:38 +00:00
Gerald Squelart e9549c4bd9 Bug 1609907 - Remove AUTO_PROFILER_THREAD_SLEEP before mozilla::CondVar waits - r=mstange
CondVar already calls `AUTO_PROFILER_THREAD_SLEEP`, which shouldn't be called recursively.

mozilla::Monitor also uses CondVar, so it shouldn't be surrounded by `AUTO_PROFILER_THREAD_SLEEP` either.

Depends on D72850

Differential Revision: https://phabricator.services.mozilla.com/D72851
2020-05-01 22:12:22 +00:00
Emilio Cobos Álvarez 3ed9a0d131 Bug 1607595 - Remove uses of mozilla::IsBaseOf. r=froydnj
Automatically generated by:

$ rg 'IsBaseOf<' | cut -d : -f 1 | xargs sed -i 's/mozilla::IsBaseOf</std::is_base_of</g'
$ rg 'IsBaseOf<' | cut -d : -f 1 | xargs sed -i 's/IsBaseOf</std::is_base_of</g

Differential Revision: https://phabricator.services.mozilla.com/D59013
2020-01-08 14:52:10 +00:00
Boris Zbarsky 65f6a7e2b6 Bug 1606672. Change nsIRunnablePriority values so increasing value indicates increased priority. r=smaug
Differential Revision: https://phabricator.services.mozilla.com/D58539
2020-01-02 20:07:40 +00:00
Boris Zbarsky 6dffb9e9dc Bug 1597158 part 4. Stop unlocking the provided mutex in IdlePeriodState methods. r=smaug
The basic idea, suggested by Olli, is that we can try to get a runnable in
ThreadEventQueue::GetEvent, and if that does not produce anything unlock our
mutex, do whatever idle state updates we need to do, re-lock our mutex.  Then
always we need to try getting a runnable again, because a non-idle runnable
might have gotten queued while we had the lock unlocked.  So we can't sleep on
our mutex, in the mayWait case, unless we try to get a runnable again first.

My notes on the current (pre this patch) unlocking setup follow.
------------------------------------------------------------

There are four places where we currently unlock:

1) IdlePeriodState::GetIdleDeadlineInternal.  Needed only when !aIsPeek, to
RequestIdleToken, which can do IPC.  The only caller, via
GetDeadlineForIdleTask, is PrioritizedEventQueue::GetEvent and only when we
selected the idle or deferred queue.  We need this to set the proper deadline
on the idle event.  In the cases when this unlock happens we currently _never_
return an idle event, because if we got here that means that we do not have an
idle token.

2) IdlePeriodState::GetLocalIdleDeadline.  Needs to unlock to get the idle
period hint.  The can get called from GetIdleDeadlineInternal in _both_ cases:
peek and get.  The callstack for the get case is covered above.  The peek case
is called from PrioritizedEventQueue::HasReadyEvent which is called from
ThreadEventQueue::HasPendingEvent.

3) IdlePeriodState::SetPaused, because it sends an IPC message.  This is only
called from EnsureIsPaused, which is called from:
  - IdlePeriodState::GetIdleDeadlineInternal.  Only in the !aIsPeek case.
  - IdlePeriodState::RanOutOfTasks called from:
    - PrioritizedEventQueue::GetEvent if we fell into the idle case and our
      queues are empty.
    - PrioritizedEventQueue::DidRunEvent if we are empty.

4) IdlePeriodState::ClearIdleToken because it sends an IPC message.  This is
called from:
    - IdlePeriodState::RanOutOfTasks; see SetPaused.
    - IdlePeriodState::GetIdleDeadlineInternal like EnsureIsPaused.
    - IdlePeriodState::GetIdleToken if token is in the past.  This is only
      called from GetIdleDeadlineInternal, both cases.
    - IdlePeriodState::FlagNotIdle called from PrioritizedEventQueue::GetEvent
      if we find an event in a non-idle queue.

Or rewriting in terms of API entrypoints on IdlePeriodState that might need to
unlock:

* Anything to do with getting deadlines, whether we are peeking or getting.
  Basically, if we need an updated deadline we need to unlock.
* When we have detected we are completely out of tasks (idle or not) to run.
  Right now we do that when either we're asked for an event and don't have one
  or if we run an event and are empty after that (before unlocking!).  But the
  unlocking or not happens in nsThreadEventQueue::DidRunEvent, so separately
  from the getting of the event.  In particular, we are unlocked before we
  enter DidRunEvent, and unlock again before we return from it, so we can do
  whatever updates we want there.
* When we have detected that we have a non-idle event to run; this calls
  FlagNotIdle.

Differential Revision: https://phabricator.services.mozilla.com/D53631
2019-11-22 14:06:17 +00:00
Boris Zbarsky 70fec2c575 Bug 1597158 part 1. Change the GetEvent signature on PrioritizedEventQueue to return whether we considered running idle runnables. r=smaug
The caller will need to know this to properly update idle state.

Differential Revision: https://phabricator.services.mozilla.com/D53627
2019-11-22 14:03:23 +00:00
Randell Jesup 0950db98b2 Bug 1572337: Monitor running event delays and start times r=froydnj
This lets us determine the time that an event has been running, and the time
that the event spent queued - which can be used to figure out 'jank' at the
time the event was queued. For PrioritizedEventQueues, only if such queuing
would delay an input event then the queuing delay is reported.

Differential Revision: https://phabricator.services.mozilla.com/D41279
2019-11-08 21:07:36 +00:00
Razvan Maries 4b01b5de2c Backed out 3 changesets (bug 1572337) ford perma fails. CLOSED TREE
Backed out changeset 00da7156d3fa (bug 1572337)
Backed out changeset 4eda65e054d8 (bug 1572337)
Backed out changeset ea6d5b4b038b (bug 1572337)
2019-11-07 17:29:46 +02:00
Randell Jesup a2e50ac59c Bug 1572337: Monitor running event delays and start times r=froydnj
This lets us determine the time that an event has been running, and the time
that the event spent queued - which can be used to figure out 'jank' at the
time the event was queued. For PrioritizedEventQueues, only if such queuing
would delay an input event then the queuing delay is reported.

Differential Revision: https://phabricator.services.mozilla.com/D41279
2019-11-07 12:53:28 +00:00