summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorNobuyoshi Nakada <[email protected]>2023-11-11 15:44:35 +0900
committerNobuyoshi Nakada <[email protected]>2023-11-11 16:58:14 +0900
commit2a442121d1404f9519d83ac72ac24c58a8389b15 ()
treebd5c85323c0204b9ff39d2c14a601bc954745f0c
parent1fe2bc4b22dc262e3a84d1f722f556267a0e0172 (diff)
Stabilize outer variable list
Sort outer variables by names to make dumped binary data stable.
-rw-r--r--compile.c53
1 files changed, 43 insertions, 10 deletions
@@ -11997,15 +11997,36 @@ ibf_dump_ci_entries(struct ibf_dump *dump, const rb_iseq_t *iseq)
return offset;
}
static enum rb_id_table_iterator_result
-dump_outer_variable(ID id, VALUE val, void *dump)
{
- ibf_dump_write_small_value(dump, ibf_dump_id(dump, id));
- ibf_dump_write_small_value(dump, val);
-
return ID_TABLE_CONTINUE;
}
static ibf_offset_t
ibf_dump_outer_variables(struct ibf_dump *dump, const rb_iseq_t *iseq)
{
@@ -12013,12 +12034,24 @@ ibf_dump_outer_variables(struct ibf_dump *dump, const rb_iseq_t *iseq)
ibf_offset_t offset = ibf_dump_pos(dump);
- if (ovs) {
- ibf_dump_write_small_value(dump, (VALUE)rb_id_table_size(ovs));
- rb_id_table_foreach(ovs, dump_outer_variable, (void *)dump);
- }
- else {
- ibf_dump_write_small_value(dump, (VALUE)0);
}
return offset;