Skip to content

Commit e42bcd7

Browse files
committed
Rename fiber_serial into ec_serial
Since it now live in the EC.
1 parent 28b195f commit e42bcd7

File tree

7 files changed

+55
-55
lines changed

7 files changed

+55
-55
lines changed

cont.c

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -1996,9 +1996,9 @@ fiber_alloc(VALUE klass)
19961996
}
19971997

19981998
static rb_serial_t
1999-
next_fiber_serial(rb_ractor_t *cr)
1999+
next_ec_serial(rb_ractor_t *cr)
20002000
{
2001-
return cr->next_fiber_serial++;
2001+
return cr->next_ec_serial++;
20022002
}
20032003

20042004
static rb_fiber_t*
@@ -2020,7 +2020,7 @@ fiber_t_alloc(VALUE fiber_value, unsigned int blocking)
20202020
cont_init(&fiber->cont, th);
20212021

20222022
fiber->cont.saved_ec.fiber_ptr = fiber;
2023-
fiber->cont.saved_ec.fiber_serial = next_fiber_serial(th->ractor);
2023+
fiber->cont.saved_ec.serial = next_ec_serial(th->ractor);
20242024
rb_ec_clear_vm_stack(&fiber->cont.saved_ec);
20252025

20262026
fiber->prev = NULL;
@@ -2567,7 +2567,7 @@ rb_threadptr_root_fiber_setup(rb_thread_t *th)
25672567
}
25682568
fiber->cont.type = FIBER_CONTEXT;
25692569
fiber->cont.saved_ec.fiber_ptr = fiber;
2570-
fiber->cont.saved_ec.fiber_serial = next_fiber_serial(th->ractor);
2570+
fiber->cont.saved_ec.serial = next_ec_serial(th->ractor);
25712571
fiber->cont.saved_ec.thread_ptr = th;
25722572
fiber->blocking = 1;
25732573
fiber->killed = 0;

internal/cont.h

Lines changed: 0 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -31,11 +31,4 @@ VALUE rb_fiber_inherit_storage(struct rb_execution_context_struct *ec, struct rb
3131
VALUE rb_fiberptr_self(struct rb_fiber_struct *fiber);
3232
unsigned int rb_fiberptr_blocking(struct rb_fiber_struct *fiber);
3333
struct rb_execution_context_struct * rb_fiberptr_get_ec(struct rb_fiber_struct *fiber);
34-
35-
static inline rb_serial_t
36-
rb_ec_fiber_serial(struct rb_execution_context_struct *ec)
37-
{
38-
VM_ASSERT(ec->fiber_serial >= 1);
39-
return ec->fiber_serial;
40-
}
4134
#endif /* INTERNAL_CONT_H */

ractor.c

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -422,7 +422,7 @@ ractor_alloc(VALUE klass)
422422
VALUE rv = TypedData_Make_Struct(klass, rb_ractor_t, &ractor_data_type, r);
423423
FL_SET_RAW(rv, RUBY_FL_SHAREABLE);
424424
r->pub.self = rv;
425-
r->next_fiber_serial = 1;
425+
r->next_ec_serial = 1;
426426
VM_ASSERT(ractor_status_p(r, ractor_created));
427427
return rv;
428428
}
@@ -440,7 +440,7 @@ rb_ractor_main_alloc(void)
440440
r->name = Qnil;
441441
r->pub.self = Qnil;
442442
r->newobj_cache = rb_gc_ractor_cache_alloc(r);
443-
r->next_fiber_serial = 1;
443+
r->next_ec_serial = 1;
444444
ruby_single_main_ractor = r;
445445

446446
return r;

ractor_core.h

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -91,7 +91,7 @@ struct rb_ractor_struct {
9191

9292
// ractor local data
9393

94-
rb_serial_t next_fiber_serial;
94+
rb_serial_t next_ec_serial;
9595

9696
st_table *local_storage;
9797
struct rb_id_table *idkey_local_storage;

thread.c

Lines changed: 5 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -453,7 +453,7 @@ rb_threadptr_unlock_all_locking_mutexes(rb_thread_t *th)
453453
th->keeping_mutexes = mutex->next_mutex;
454454

455455
// rb_warn("mutex #<%p> was not unlocked by thread #<%p>", (void *)mutex, (void*)th);
456-
VM_ASSERT(mutex->fiber_serial);
456+
VM_ASSERT(mutex->ec_serial);
457457
const char *error_message = rb_mutex_unlock_th(mutex, th, 0);
458458
if (error_message) rb_bug("invalid keeping_mutexes: %s", error_message);
459459
}
@@ -5283,7 +5283,7 @@ rb_thread_shield_owned(VALUE self)
52835283

52845284
rb_mutex_t *m = mutex_ptr(mutex);
52855285

5286-
return m->fiber_serial == rb_ec_fiber_serial(GET_EC());
5286+
return m->ec_serial == rb_ec_serial(GET_EC());
52875287
}
52885288

52895289
/*
@@ -5302,7 +5302,7 @@ rb_thread_shield_wait(VALUE self)
53025302

53035303
if (!mutex) return Qfalse;
53045304
m = mutex_ptr(mutex);
5305-
if (m->fiber_serial == rb_ec_fiber_serial(GET_EC())) return Qnil;
5305+
if (m->ec_serial == rb_ec_serial(GET_EC())) return Qnil;
53065306
rb_thread_shield_waiting_inc(self);
53075307
rb_mutex_lock(mutex);
53085308
rb_thread_shield_waiting_dec(self);
@@ -5820,7 +5820,7 @@ debug_deadlock_check(rb_ractor_t *r, VALUE msg)
58205820
if (th->locking_mutex) {
58215821
rb_mutex_t *mutex = mutex_ptr(th->locking_mutex);
58225822
rb_str_catf(msg, " mutex:%llu cond:%"PRIuSIZE,
5823-
(unsigned long long)mutex->fiber_serial, rb_mutex_num_waiting(mutex));
5823+
(unsigned long long)mutex->ec_serial, rb_mutex_num_waiting(mutex));
58245824
}
58255825

58265826
{
@@ -5860,7 +5860,7 @@ rb_check_deadlock(rb_ractor_t *r)
58605860
}
58615861
else if (th->locking_mutex) {
58625862
rb_mutex_t *mutex = mutex_ptr(th->locking_mutex);
5863-
if (mutex->fiber_serial == rb_ec_fiber_serial(th->ec) || (!mutex->fiber_serial && !ccan_list_empty(&mutex->waitq))) {
5863+
if (mutex->ec_serial == rb_ec_serial(th->ec) || (!mutex->ec_serial && !ccan_list_empty(&mutex->waitq))) {
58645864
found = 1;
58655865
}
58665866
}

thread_sync.c

Lines changed: 35 additions & 35 deletions
Original file line numberDiff line numberDiff line change
@@ -7,7 +7,7 @@ static VALUE rb_eClosedQueueError;
77

88
/* Mutex */
99
typedef struct rb_mutex_struct {
10-
rb_serial_t fiber_serial;
10+
rb_serial_t ec_serial;
1111
VALUE thread; // even if the fiber is collected, we might need access to the thread in mutex_free
1212
struct rb_mutex_struct *next_mutex;
1313
struct ccan_list_head waitq; /* protected by GVL */
@@ -81,7 +81,7 @@ static void rb_mutex_abandon_all(rb_mutex_t *mutexes);
8181
static void rb_mutex_abandon_keeping_mutexes(rb_thread_t *th);
8282
static void rb_mutex_abandon_locking_mutex(rb_thread_t *th);
8383
#endif
84-
static const char* rb_mutex_unlock_th(rb_mutex_t *mutex, rb_thread_t *th, rb_serial_t fiber_serial);
84+
static const char* rb_mutex_unlock_th(rb_mutex_t *mutex, rb_thread_t *th, rb_serial_t ec_serial);
8585

8686
/*
8787
* Document-class: Thread::Mutex
@@ -125,7 +125,7 @@ rb_thread_t* rb_fiber_threadptr(const rb_fiber_t *fiber);
125125
static bool
126126
mutex_locked_p(rb_mutex_t *mutex)
127127
{
128-
return mutex->fiber_serial != 0;
128+
return mutex->ec_serial != 0;
129129
}
130130

131131
static void
@@ -221,26 +221,26 @@ thread_mutex_remove(rb_thread_t *thread, rb_mutex_t *mutex)
221221
}
222222

223223
static void
224-
mutex_set_owner(rb_mutex_t *mutex, rb_thread_t *th, rb_serial_t fiber_serial)
224+
mutex_set_owner(rb_mutex_t *mutex, rb_thread_t *th, rb_serial_t ec_serial)
225225
{
226226
mutex->thread = th->self;
227-
mutex->fiber_serial = fiber_serial;
227+
mutex->ec_serial = ec_serial;
228228
}
229229

230230
static void
231-
mutex_locked(rb_mutex_t *mutex, rb_thread_t *th, rb_serial_t fiber_serial)
231+
mutex_locked(rb_mutex_t *mutex, rb_thread_t *th, rb_serial_t ec_serial)
232232
{
233-
mutex_set_owner(mutex, th, fiber_serial);
233+
mutex_set_owner(mutex, th, ec_serial);
234234
thread_mutex_insert(th, mutex);
235235
}
236236

237237
static inline bool
238-
mutex_trylock(rb_mutex_t *mutex, rb_thread_t *th, rb_serial_t fiber_serial)
238+
mutex_trylock(rb_mutex_t *mutex, rb_thread_t *th, rb_serial_t ec_serial)
239239
{
240-
if (mutex->fiber_serial == 0) {
240+
if (mutex->ec_serial == 0) {
241241
RUBY_DEBUG_LOG("%p ok", mutex);
242242

243-
mutex_locked(mutex, th, fiber_serial);
243+
mutex_locked(mutex, th, ec_serial);
244244
return true;
245245
}
246246
else {
@@ -252,7 +252,7 @@ mutex_trylock(rb_mutex_t *mutex, rb_thread_t *th, rb_serial_t fiber_serial)
252252
static VALUE
253253
rb_mut_trylock(rb_execution_context_t *ec, VALUE self)
254254
{
255-
return RBOOL(mutex_trylock(mutex_ptr(self), ec->thread_ptr, rb_ec_fiber_serial(ec)));
255+
return RBOOL(mutex_trylock(mutex_ptr(self), ec->thread_ptr, rb_ec_serial(ec)));
256256
}
257257

258258
VALUE
@@ -262,9 +262,9 @@ rb_mutex_trylock(VALUE self)
262262
}
263263

264264
static VALUE
265-
mutex_owned_p(rb_serial_t fiber_serial, rb_mutex_t *mutex)
265+
mutex_owned_p(rb_serial_t ec_serial, rb_mutex_t *mutex)
266266
{
267-
return RBOOL(mutex->fiber_serial == fiber_serial);
267+
return RBOOL(mutex->ec_serial == ec_serial);
268268
}
269269

270270
static VALUE
@@ -305,7 +305,7 @@ do_mutex_lock(struct mutex_args *args, int interruptible_p)
305305
rb_execution_context_t *ec = args->ec;
306306
rb_thread_t *th = ec->thread_ptr;
307307
rb_fiber_t *fiber = ec->fiber_ptr;
308-
rb_serial_t fiber_serial = rb_ec_fiber_serial(ec);
308+
rb_serial_t ec_serial = rb_ec_serial(ec);
309309
rb_mutex_t *mutex = args->mutex;
310310
rb_atomic_t saved_ints = 0;
311311

@@ -315,13 +315,13 @@ do_mutex_lock(struct mutex_args *args, int interruptible_p)
315315
rb_raise(rb_eThreadError, "can't be called from trap context");
316316
}
317317

318-
if (!mutex_trylock(mutex, th, fiber_serial)) {
319-
if (mutex->fiber_serial == fiber_serial) {
318+
if (!mutex_trylock(mutex, th, ec_serial)) {
319+
if (mutex->ec_serial == ec_serial) {
320320
rb_raise(rb_eThreadError, "deadlock; recursive locking");
321321
}
322322

323-
while (mutex->fiber_serial != fiber_serial) {
324-
VM_ASSERT(mutex->fiber_serial != 0);
323+
while (mutex->ec_serial != ec_serial) {
324+
VM_ASSERT(mutex->ec_serial != 0);
325325

326326
VALUE scheduler = rb_fiber_scheduler_current();
327327
if (scheduler != Qnil) {
@@ -335,8 +335,8 @@ do_mutex_lock(struct mutex_args *args, int interruptible_p)
335335

336336
rb_ensure(call_rb_fiber_scheduler_block, self, delete_from_waitq, (VALUE)&sync_waiter);
337337

338-
if (!mutex->fiber_serial) {
339-
mutex_set_owner(mutex, th, fiber_serial);
338+
if (!mutex->ec_serial) {
339+
mutex_set_owner(mutex, th, ec_serial);
340340
}
341341
}
342342
else {
@@ -376,8 +376,8 @@ do_mutex_lock(struct mutex_args *args, int interruptible_p)
376376
ccan_list_del(&sync_waiter.node);
377377

378378
// unlocked by another thread while sleeping
379-
if (!mutex->fiber_serial) {
380-
mutex_set_owner(mutex, th, fiber_serial);
379+
if (!mutex->ec_serial) {
380+
mutex_set_owner(mutex, th, ec_serial);
381381
}
382382

383383
rb_ractor_sleeper_threads_dec(th->ractor);
@@ -390,13 +390,13 @@ do_mutex_lock(struct mutex_args *args, int interruptible_p)
390390
if (interruptible_p) {
391391
/* release mutex before checking for interrupts...as interrupt checking
392392
* code might call rb_raise() */
393-
if (mutex->fiber_serial == fiber_serial) {
393+
if (mutex->ec_serial == ec_serial) {
394394
mutex->thread = Qfalse;
395-
mutex->fiber_serial = 0;
395+
mutex->ec_serial = 0;
396396
}
397397
RUBY_VM_CHECK_INTS_BLOCKING(th->ec); /* may release mutex */
398-
if (!mutex->fiber_serial) {
399-
mutex_set_owner(mutex, th, fiber_serial);
398+
if (!mutex->ec_serial) {
399+
mutex_set_owner(mutex, th, ec_serial);
400400
}
401401
}
402402
else {
@@ -415,13 +415,13 @@ do_mutex_lock(struct mutex_args *args, int interruptible_p)
415415
}
416416

417417
if (saved_ints) th->ec->interrupt_flag = saved_ints;
418-
if (mutex->fiber_serial == fiber_serial) mutex_locked(mutex, th, fiber_serial);
418+
if (mutex->ec_serial == ec_serial) mutex_locked(mutex, th, ec_serial);
419419
}
420420

421421
RUBY_DEBUG_LOG("%p locked", mutex);
422422

423423
// assertion
424-
if (mutex_owned_p(fiber_serial, mutex) == Qfalse) rb_bug("do_mutex_lock: mutex is not owned.");
424+
if (mutex_owned_p(ec_serial, mutex) == Qfalse) rb_bug("do_mutex_lock: mutex is not owned.");
425425

426426
return self;
427427
}
@@ -456,7 +456,7 @@ rb_mutex_lock(VALUE self)
456456
static VALUE
457457
rb_mut_owned_p(rb_execution_context_t *ec, VALUE self)
458458
{
459-
return mutex_owned_p(rb_ec_fiber_serial(ec), mutex_ptr(self));
459+
return mutex_owned_p(rb_ec_serial(ec), mutex_ptr(self));
460460
}
461461

462462
VALUE
@@ -466,20 +466,20 @@ rb_mutex_owned_p(VALUE self)
466466
}
467467

468468
static const char *
469-
rb_mutex_unlock_th(rb_mutex_t *mutex, rb_thread_t *th, rb_serial_t fiber_serial)
469+
rb_mutex_unlock_th(rb_mutex_t *mutex, rb_thread_t *th, rb_serial_t ec_serial)
470470
{
471471
RUBY_DEBUG_LOG("%p", mutex);
472472

473-
if (mutex->fiber_serial == 0) {
473+
if (mutex->ec_serial == 0) {
474474
return "Attempt to unlock a mutex which is not locked";
475475
}
476-
else if (fiber_serial && mutex->fiber_serial != fiber_serial) {
476+
else if (ec_serial && mutex->ec_serial != ec_serial) {
477477
return "Attempt to unlock a mutex which is locked by another thread/fiber";
478478
}
479479

480480
struct sync_waiter *cur = 0, *next;
481481

482-
mutex->fiber_serial = 0;
482+
mutex->ec_serial = 0;
483483
thread_mutex_remove(th, mutex);
484484

485485
ccan_list_for_each_safe(&mutex->waitq, cur, next, node) {
@@ -517,7 +517,7 @@ do_mutex_unlock(struct mutex_args *args)
517517
rb_mutex_t *mutex = args->mutex;
518518
rb_thread_t *th = rb_ec_thread_ptr(args->ec);
519519

520-
err = rb_mutex_unlock_th(mutex, th, rb_ec_fiber_serial(args->ec));
520+
err = rb_mutex_unlock_th(mutex, th, rb_ec_serial(args->ec));
521521
if (err) rb_raise(rb_eThreadError, "%s", err);
522522
}
523523

@@ -583,7 +583,7 @@ rb_mutex_abandon_all(rb_mutex_t *mutexes)
583583
while (mutexes) {
584584
mutex = mutexes;
585585
mutexes = mutex->next_mutex;
586-
mutex->fiber_serial = 0;
586+
mutex->ec_serial = 0;
587587
mutex->next_mutex = 0;
588588
ccan_list_head_init(&mutex->waitq);
589589
}

vm_core.h

Lines changed: 8 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1041,7 +1041,7 @@ struct rb_execution_context_struct {
10411041

10421042
rb_fiber_t *fiber_ptr;
10431043
struct rb_thread_struct *thread_ptr;
1044-
rb_serial_t fiber_serial;
1044+
rb_serial_t serial;
10451045

10461046
/* storage (ec (fiber) local) */
10471047
struct rb_id_table *local_storage;
@@ -2037,6 +2037,13 @@ RUBY_EXTERN unsigned int ruby_vm_event_local_num;
20372037
#define GET_THREAD() rb_current_thread()
20382038
#define GET_EC() rb_current_execution_context(true)
20392039

2040+
static inline rb_serial_t
2041+
rb_ec_serial(struct rb_execution_context_struct *ec)
2042+
{
2043+
VM_ASSERT(ec->serial >= 1);
2044+
return ec->serial;
2045+
}
2046+
20402047
static inline rb_thread_t *
20412048
rb_ec_thread_ptr(const rb_execution_context_t *ec)
20422049
{

0 commit comments

Comments
 (0)