summaryrefslogtreecommitdiff
path: root/rts/Schedule.h
diff options
context:
space:
mode:
authorBen Gamari <ben@smart-cactus.org>2022-10-11 14:02:51 -0400
committerMarge Bot <ben+marge-bot@smart-cactus.org>2022-10-12 08:08:37 -0400
commit481467a5ceb07bb28bb6edb1569c86ff3cac315f (patch)
treeca08c2e91a2c5ef1bbeb5fb240c796736a8bbd57 /rts/Schedule.h
parent64a390d9c57b35edb6e7cf09b9324b43a3d08671 (diff)
downloadhaskell-481467a5ceb07bb28bb6edb1569c86ff3cac315f.tar.gz
rts: Don't hint inlining of appendToRunQueue
These hints have resulted in compile-time warnings due to failed inlinings for quite some time. Moreover, it's quite unlikely that inlining them is all that beneficial given that they are rather sizeable functions. Resolves #22280.
Diffstat (limited to 'rts/Schedule.h')
-rw-r--r--rts/Schedule.h57
1 files changed, 3 insertions, 54 deletions
diff --git a/rts/Schedule.h b/rts/Schedule.h
index 5aaafd9d88..eda0aa3f79 100644
--- a/rts/Schedule.h
+++ b/rts/Schedule.h
@@ -136,67 +136,16 @@ void resurrectThreads (StgTSO *);
* NOTE: tso->link should be END_TSO_QUEUE before calling this macro.
* ASSUMES: cap->running_task is the current task.
*/
-EXTERN_INLINE void
-appendToRunQueue (Capability *cap, StgTSO *tso);
-
-EXTERN_INLINE void
-appendToRunQueue (Capability *cap, StgTSO *tso)
-{
- ASSERT(tso->_link == END_TSO_QUEUE);
- if (cap->run_queue_hd == END_TSO_QUEUE) {
- cap->run_queue_hd = tso;
- tso->block_info.prev = END_TSO_QUEUE;
- } else {
- setTSOLink(cap, cap->run_queue_tl, tso);
- setTSOPrev(cap, tso, cap->run_queue_tl);
- }
- cap->run_queue_tl = tso;
- cap->n_run_queue++;
-}
+void appendToRunQueue (Capability *cap, StgTSO *tso);
/* Push a thread on the beginning of the run queue.
* ASSUMES: cap->running_task is the current task.
*/
-EXTERN_INLINE void
-pushOnRunQueue (Capability *cap, StgTSO *tso);
-
-EXTERN_INLINE void
-pushOnRunQueue (Capability *cap, StgTSO *tso)
-{
- setTSOLink(cap, tso, cap->run_queue_hd);
- tso->block_info.prev = END_TSO_QUEUE;
- if (cap->run_queue_hd != END_TSO_QUEUE) {
- setTSOPrev(cap, cap->run_queue_hd, tso);
- }
- cap->run_queue_hd = tso;
- if (cap->run_queue_tl == END_TSO_QUEUE) {
- cap->run_queue_tl = tso;
- }
- cap->n_run_queue++;
-}
+void pushOnRunQueue (Capability *cap, StgTSO *tso);
/* Pop the first thread off the runnable queue.
*/
-INLINE_HEADER StgTSO *
-popRunQueue (Capability *cap)
-{
- ASSERT(cap->n_run_queue > 0);
- StgTSO *t = cap->run_queue_hd;
- ASSERT(t != END_TSO_QUEUE);
- cap->run_queue_hd = t->_link;
-
- StgTSO *link = RELAXED_LOAD(&t->_link);
- if (link != END_TSO_QUEUE) {
- link->block_info.prev = END_TSO_QUEUE;
- }
- RELAXED_STORE(&t->_link, END_TSO_QUEUE); // no write barrier req'd
-
- if (cap->run_queue_hd == END_TSO_QUEUE) {
- cap->run_queue_tl = END_TSO_QUEUE;
- }
- cap->n_run_queue--;
- return t;
-}
+StgTSO *popRunQueue (Capability *cap);
INLINE_HEADER StgTSO *
peekRunQueue (Capability *cap)