diff options
author | Koichi Sasada <ko1@atdot.net> | 2023-02-15 14:49:13 +0900 |
---|---|---|
committer | Koichi Sasada <ko1@atdot.net> | 2023-02-15 15:42:51 +0900 |
commit | 1f936d654ac49dff1a6d55aa079aaf1ebba24042 (patch) | |
tree | 3e45e9419c23464331d84c46340ad280670ac10a /ractor.c | |
parent | 413120e58178a140e44e39ae79b7ec39f7ee0cbf (diff) | |
download | ruby-1f936d654ac49dff1a6d55aa079aaf1ebba24042.tar.gz |
`ractor_queue_enq/deq` doesn't need `rq` param
`rq` is always `r`'s queue.
Diffstat (limited to 'ractor.c')
-rw-r--r-- | ractor.c | 13 |
1 files changed, 7 insertions, 6 deletions
@@ -380,9 +380,10 @@ ractor_queue_empty_p(rb_ractor_t *r, struct rb_ractor_queue *rq) } static bool -ractor_queue_deq(rb_ractor_t *r, struct rb_ractor_queue *rq, struct rb_ractor_basket *basket) +ractor_queue_deq(rb_ractor_t *r, struct rb_ractor_basket *basket) { bool found = false; + struct rb_ractor_queue *rq = &r->sync.incoming_queue; RACTOR_LOCK(r); { @@ -407,10 +408,12 @@ ractor_queue_deq(rb_ractor_t *r, struct rb_ractor_queue *rq, struct rb_ractor_ba } static void -ractor_queue_enq(rb_ractor_t *r, struct rb_ractor_queue *rq, struct rb_ractor_basket *basket) +ractor_queue_enq(rb_ractor_t *r, struct rb_ractor_basket *basket) { ASSERT_ractor_locking(r); + struct rb_ractor_queue *rq = &r->sync.incoming_queue; + if (rq->size <= rq->cnt) { rq->baskets = realloc(rq->baskets, sizeof(struct rb_ractor_basket) * rq->size * 2); for (int i=rq->size - rq->start; i<rq->cnt; i++) { @@ -480,12 +483,11 @@ ractor_recursive_receive_if(rb_ractor_t *r) static VALUE ractor_try_receive(rb_execution_context_t *ec, rb_ractor_t *r) { - struct rb_ractor_queue *rq = &r->sync.incoming_queue; struct rb_ractor_basket basket; ractor_recursive_receive_if(r); - if (ractor_queue_deq(r, rq, &basket) == false) { + if (ractor_queue_deq(r, &basket) == false) { if (r->sync.incoming_port_closed) { rb_raise(rb_eRactorClosedError, "The incoming port is already closed"); } @@ -900,7 +902,6 @@ static void ractor_send_basket(rb_execution_context_t *ec, rb_ractor_t *r, struct rb_ractor_basket *b) { bool closed = false; - struct rb_ractor_queue *rq = &r->sync.incoming_queue; RACTOR_LOCK(r); { @@ -908,7 +909,7 @@ ractor_send_basket(rb_execution_context_t *ec, rb_ractor_t *r, struct rb_ractor_ closed = true; } else { - ractor_queue_enq(r, rq, b); + ractor_queue_enq(r, b); if (ractor_wakeup(r, wait_receiving, wakeup_by_send)) { RUBY_DEBUG_LOG("wakeup"); } |