mirror of
https://github.com/ruby/ruby.git
synced 2022-11-09 12:17:21 -05:00
CI can be NULL.
Unused CI (introduced from peephole optimization, etc) can be NULL so introduce NULL check.
This commit is contained in:
parent
af12e38675
commit
31748e69c8
1 changed files with 39 additions and 26 deletions
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++) {
|
for (i = 0; i < ci_size; i++) {
|
||||||
const struct rb_callinfo *ci = cds[i].ci;
|
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, 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_flag(ci));
|
||||||
ibf_dump_write_small_value(dump, vm_ci_argc(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);
|
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;
|
return offset;
|
||||||
}
|
}
|
||||||
|
@ -10331,6 +10337,7 @@ ibf_load_ci_entries(const struct ibf_load *load,
|
||||||
|
|
||||||
for (i = 0; i < ci_size; i++) {
|
for (i = 0; i < ci_size; i++) {
|
||||||
VALUE mid_index = ibf_load_small_value(load, &reading_pos);
|
VALUE mid_index = ibf_load_small_value(load, &reading_pos);
|
||||||
|
if (mid_index != (VALUE)-1) {
|
||||||
ID mid = ibf_load_id(load, mid_index);
|
ID mid = ibf_load_id(load, mid_index);
|
||||||
unsigned int flag = (unsigned int)ibf_load_small_value(load, &reading_pos);
|
unsigned int flag = (unsigned int)ibf_load_small_value(load, &reading_pos);
|
||||||
unsigned int argc = (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);
|
RB_OBJ_WRITTEN(load->iseq, Qundef, cds[i].ci);
|
||||||
cds[i].cc = vm_cc_empty();
|
cds[i].cc = vm_cc_empty();
|
||||||
}
|
}
|
||||||
|
else {
|
||||||
|
// NULL ci
|
||||||
|
cds[i].ci = NULL;
|
||||||
|
cds[i].cc = NULL;
|
||||||
|
}
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
static ibf_offset_t
|
static ibf_offset_t
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue