зеркало из https://github.com/github/ruby.git
CI can be NULL.
Unused CI (introduced from peephole optimization, etc) can be NULL so introduce NULL check.
This commit is contained in:
Родитель
af12e38675
Коммит
31748e69c8
13
compile.c
13
compile.c
|
@ -10294,6 +10294,7 @@ ibf_dump_ci_entries(struct ibf_dump *dump, const rb_iseq_t *iseq)
|
|||
|
||||
for (i = 0; i < ci_size; i++) {
|
||||
const struct rb_callinfo *ci = cds[i].ci;
|
||||
if (ci != NULL) {
|
||||
ibf_dump_write_small_value(dump, ibf_dump_id(dump, vm_ci_mid(ci)));
|
||||
ibf_dump_write_small_value(dump, vm_ci_flag(ci));
|
||||
ibf_dump_write_small_value(dump, vm_ci_argc(ci));
|
||||
|
@ -10311,6 +10312,11 @@ ibf_dump_ci_entries(struct ibf_dump *dump, const rb_iseq_t *iseq)
|
|||
ibf_dump_write_small_value(dump, 0);
|
||||
}
|
||||
}
|
||||
else {
|
||||
// TODO: truncate NULL ci from call_data.
|
||||
ibf_dump_write_small_value(dump, (VALUE)-1);
|
||||
}
|
||||
}
|
||||
|
||||
return offset;
|
||||
}
|
||||
|
@ -10331,6 +10337,7 @@ ibf_load_ci_entries(const struct ibf_load *load,
|
|||
|
||||
for (i = 0; i < ci_size; i++) {
|
||||
VALUE mid_index = ibf_load_small_value(load, &reading_pos);
|
||||
if (mid_index != (VALUE)-1) {
|
||||
ID mid = ibf_load_id(load, mid_index);
|
||||
unsigned int flag = (unsigned int)ibf_load_small_value(load, &reading_pos);
|
||||
unsigned int argc = (unsigned int)ibf_load_small_value(load, &reading_pos);
|
||||
|
@ -10350,6 +10357,12 @@ ibf_load_ci_entries(const struct ibf_load *load,
|
|||
RB_OBJ_WRITTEN(load->iseq, Qundef, cds[i].ci);
|
||||
cds[i].cc = vm_cc_empty();
|
||||
}
|
||||
else {
|
||||
// NULL ci
|
||||
cds[i].ci = NULL;
|
||||
cds[i].cc = NULL;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
static ibf_offset_t
|
||||
|
|
Загрузка…
Ссылка в новой задаче