summaryrefslogtreecommitdiff
path: root/vm_trace.c
diff options
context:
space:
mode:
authorKJ Tsanaktsidis <[email protected]>2023-12-11 15:00:43 +1100
committerKJ Tsanaktsidis <[email protected]>2023-12-13 13:35:05 +1100
commit4eefab592ac068acfd06fb9422f75a7786fbb855 ()
tree1657c6c58e7a80e34a21b5898f30d369cbc9a471 /vm_trace.c
parent626daa73ec244fa5a159dff31199bd336ec4ac8c (diff)
Refactor local variable names in postponed_job methods
Just removes the unneeded `prereg_` prefix from a few local var names.
-rw-r--r--vm_trace.c36
1 files changed, 18 insertions, 18 deletions
@@ -1682,16 +1682,16 @@ rb_workqueue_register(unsigned flags, rb_postponed_job_func_t func, void *data)
return TRUE;
}
-#define PJOB_PREREG_TABLE_SIZE (sizeof(rb_atomic_t) * CHAR_BIT)
/* pre-registered jobs table, for async-safe jobs */
typedef struct rb_postponed_job_queue {
struct {
rb_postponed_job_func_t func;
void *data;
- } prereg_table[PJOB_PREREG_TABLE_SIZE];
/* Bits in this are set when the corresponding entry in prereg_table has non-zero
* triggered_count; i.e. somebody called rb_postponed_job_trigger */
- rb_atomic_t prereg_triggered_bitset;
} rb_postponed_job_queues_t;
void
@@ -1700,8 +1700,8 @@ rb_vm_postponed_job_queue_init(rb_vm_t *vm)
/* use mimmalloc; postponed job registration is a dependency of objspace, so this gets
* called _VERY_ early inside Init_BareVM */
rb_postponed_job_queues_t *pjq = ruby_mimmalloc(sizeof(rb_postponed_job_queues_t));
- pjq->prereg_triggered_bitset = 0;
- memset(pjq->prereg_table, 0, sizeof(pjq->prereg_table));
vm->postponed_job_queue = pjq;
}
@@ -1720,7 +1720,7 @@ rb_vm_postponed_job_atfork(void)
rb_postponed_job_queues_t *pjq = vm->postponed_job_queue;
/* make sure we set the interrupt flag on _this_ thread if we carried any pjobs over
* from the other side of the fork */
- if (pjq->prereg_triggered_bitset) {
RUBY_VM_SET_POSTPONED_JOB_INTERRUPT(get_valid_ec(vm));
}
@@ -1757,15 +1757,15 @@ rb_postponed_job_preregister(unsigned int flags, rb_postponed_job_func_t func, v
* func, however, the data may get mixed up between them. */
rb_postponed_job_queues_t *pjq = GET_VM()->postponed_job_queue;
- for (unsigned int i = 0; i < PJOB_PREREG_TABLE_SIZE; i++) {
/* Try and set this slot to equal `func` */
- rb_postponed_job_func_t existing_func = (rb_postponed_job_func_t)RUBY_ATOMIC_PTR_CAS(pjq->prereg_table[i], NULL, (void *)func);
if (existing_func == NULL || existing_func == func) {
/* Either this slot was NULL, and we set it to func, or, this slot was already equal to func.
* In either case, clobber the data with our data. Note that concurrent calls to
* rb_postponed_job_register with the same func & different data will result in either of the
* datas being written */
- RUBY_ATOMIC_PTR_EXCHANGE(pjq->prereg_table[i].data, data);
return (rb_postponed_job_handle_t)i;
} else {
/* Try the next slot if this one already has a func in it */
@@ -1783,7 +1783,7 @@ rb_postponed_job_trigger(rb_postponed_job_handle_t h)
rb_vm_t *vm = GET_VM();
rb_postponed_job_queues_t *pjq = vm->postponed_job_queue;
- RUBY_ATOMIC_OR(pjq->prereg_triggered_bitset, (((rb_atomic_t)1UL) << h));
RUBY_VM_SET_POSTPONED_JOB_INTERRUPT(get_valid_ec(vm));
}
@@ -1830,7 +1830,7 @@ rb_postponed_job_flush(rb_vm_t *vm)
ccan_list_append_list(&tmp, &vm->workqueue);
rb_nativethread_lock_unlock(&vm->workqueue_lock);
- rb_atomic_t prereg_triggered_bits = RUBY_ATOMIC_EXCHANGE(pjq->prereg_triggered_bitset, 0);
ec->errinfo = Qnil;
/* mask POSTPONED_JOB dis */
@@ -1839,11 +1839,11 @@ rb_postponed_job_flush(rb_vm_t *vm)
EC_PUSH_TAG(ec);
if (EC_EXEC_TAG() == TAG_NONE) {
/* execute postponed jobs */
- while (prereg_triggered_bits) {
- unsigned int i = bit_length(prereg_triggered_bits) - 1;
- prereg_triggered_bits ^= ((1UL) << i); /* toggle ith bit off */
- rb_postponed_job_func_t func = pjq->prereg_table[i].func;
- void *data = pjq->prereg_table[i].data;
(func)(data);
}
@@ -1874,8 +1874,8 @@ rb_postponed_job_flush(rb_vm_t *vm)
}
/* likewise with any remaining-to-be-executed bits of the preregistered postponed
* job table */
- if (prereg_triggered_bits) {
- RUBY_ATOMIC_OR(pjq->prereg_triggered_bitset, prereg_triggered_bits);
RUBY_VM_SET_POSTPONED_JOB_INTERRUPT(GET_EC());
}
}