summaryrefslogtreecommitdiff
path: root/ractor.c
diff options
context:
space:
mode:
authorKoichi Sasada <ko1@atdot.net>2023-02-15 14:49:13 +0900
committerKoichi Sasada <ko1@atdot.net>2023-02-15 15:42:51 +0900
commit1f936d654ac49dff1a6d55aa079aaf1ebba24042 (patch)
tree3e45e9419c23464331d84c46340ad280670ac10a /ractor.c
parent413120e58178a140e44e39ae79b7ec39f7ee0cbf (diff)
downloadruby-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.c13
1 files changed, 7 insertions, 6 deletions
diff --git a/ractor.c b/ractor.c
index ac64e12ac3..3ea65e382b 100644
--- a/ractor.c
+++ b/ractor.c
@@ -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");
}