Skip to content

Commit 8982de2

Browse files
committed
Embed vm->ci_table
1 parent 0f10920 commit 8982de2

4 files changed

Lines changed: 12 additions & 18 deletions

File tree

gc.c

Lines changed: 6 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -4193,14 +4193,12 @@ rb_gc_vm_weak_table_foreach(vm_table_foreach_callback_func callback,
41934193

41944194
switch (table) {
41954195
case RB_GC_VM_CI_TABLE: {
4196-
if (vm->ci_table) {
4197-
st_foreach_with_replace(
4198-
vm->ci_table,
4199-
vm_weak_table_foreach_weak_key,
4200-
vm_weak_table_foreach_update_weak_key,
4201-
(st_data_t)&foreach_data
4202-
);
4203-
}
4196+
st_foreach_with_replace(
4197+
&vm->ci_table,
4198+
vm_weak_table_foreach_weak_key,
4199+
vm_weak_table_foreach_update_weak_key,
4200+
(st_data_t)&foreach_data
4201+
);
42044202
break;
42054203
}
42064204
case RB_GC_VM_OVERLOADED_CME_TABLE: {

vm.c

Lines changed: 3 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -3413,10 +3413,7 @@ ruby_vm_destruct(rb_vm_t *vm)
34133413

34143414
rb_vm_living_threads_init(vm);
34153415
ruby_vm_run_at_exit_hooks(vm);
3416-
if (vm->ci_table) {
3417-
st_free_table(vm->ci_table);
3418-
vm->ci_table = NULL;
3419-
}
3416+
st_free_embedded_table(&vm->ci_table);
34203417
RB_ALTSTACK_FREE(vm->main_altstack);
34213418

34223419
struct global_object_list *next;
@@ -3505,7 +3502,7 @@ vm_memsize(const void *ptr)
35053502
rb_vm_memsize_postponed_job_queue() +
35063503
rb_vm_memsize_workqueue(&vm->workqueue) +
35073504
vm_memsize_at_exit_list(vm->at_exit) +
3508-
rb_st_memsize(vm->ci_table) +
3505+
(rb_st_memsize(&vm->ci_table) - sizeof(struct st_table)) +
35093506
vm_memsize_builtin_function_table(vm->builtin_function_table) +
35103507
(rb_id_table_memsize(&vm->negative_cme_table) - sizeof(struct rb_id_table)) +
35113508
(rb_st_memsize(&vm->overloaded_cme_table) - sizeof(struct st_table)) +
@@ -4741,7 +4738,7 @@ Init_vm_objects(void)
47414738

47424739
/* initialize mark object array, hash */
47434740
vm->mark_object_ary = pin_array_list_new(Qnil);
4744-
vm->ci_table = st_init_table(&vm_ci_hashtype);
4741+
st_init_existing_table_with_size(&vm->ci_table, &vm_ci_hashtype, 0);
47454742
vm->cc_refinement_set = rb_cc_refinement_set_create();
47464743
}
47474744

vm_core.h

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -812,7 +812,7 @@ typedef struct rb_vm_struct {
812812

813813
const struct rb_builtin_function *builtin_function_table;
814814

815-
st_table *ci_table;
815+
st_table ci_table;
816816
struct rb_id_table negative_cme_table;
817817
st_table overloaded_cme_table; // cme -> overloaded_cme
818818
set_table unused_block_warning_table;

vm_method.c

Lines changed: 2 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -672,8 +672,7 @@ rb_vm_ci_lookup(ID mid, unsigned int flag, unsigned int argc, const struct rb_ca
672672
new_ci->argc = argc;
673673

674674
RB_VM_LOCKING() {
675-
st_table *ci_table = vm->ci_table;
676-
VM_ASSERT(ci_table);
675+
st_table *ci_table = &vm->ci_table;
677676

678677
do {
679678
st_update(ci_table, (st_data_t)new_ci, ci_lookup_i, (st_data_t)&ci);
@@ -693,7 +692,7 @@ rb_vm_ci_free(const struct rb_callinfo *ci)
693692
rb_vm_t *vm = GET_VM();
694693

695694
st_data_t key = (st_data_t)ci;
696-
st_delete(vm->ci_table, &key, NULL);
695+
st_delete(&vm->ci_table, &key, NULL);
697696
}
698697

699698
struct cc_refinement_entries {

0 commit comments

Comments
 (0)