summaryrefslogtreecommitdiffhomepage
path: root/src/dump.c
diff options
context:
space:
mode:
authorYukihiro "Matz" Matsumoto <[email protected]>2020-06-29 08:34:56 +0900
committerYukihiro "Matz" Matsumoto <[email protected]>2020-10-12 16:21:22 +0900
commit3d8a38bea4de5ca3a65ec9bce9359b9c62326f9f (patch)
tree3f8ebdcc96896f7cdde31064026ffa588c77776d /src/dump.c
parent639946a006c29f648551512af8aa0bb0cd969412 (diff)
downloadmruby-3d8a38bea4de5ca3a65ec9bce9359b9c62326f9f.tar.gz
mruby-3d8a38bea4de5ca3a65ec9bce9359b9c62326f9f.zip
You don't need to keep index in local variables info in `irep`.
Diffstat (limited to 'src/dump.c')
-rw-r--r--src/dump.c14
1 files changed, 6 insertions, 8 deletions
diff --git a/src/dump.c b/src/dump.c
index 8cd69cd29..aeb23d033 100644
--- a/src/dump.c
+++ b/src/dump.c
@@ -585,7 +585,7 @@ create_lv_sym_table(mrb_state *mrb, const mrb_irep *irep, mrb_sym **syms, uint32
}
for (i = 0; i + 1 < irep->nlocals; ++i) {
- mrb_sym const name = irep->lv[i].name;
+ mrb_sym const name = irep->lv[i];
if (name == 0) continue;
if (find_filename_index(*syms, *syms_len, name) != -1) continue;
@@ -628,16 +628,14 @@ write_lv_record(mrb_state *mrb, const mrb_irep *irep, uint8_t **start, mrb_sym c
int i;
for (i = 0; i + 1 < irep->nlocals; ++i) {
- if (irep->lv[i].name == 0) {
+ if (irep->lv[i] == 0) {
cur += uint16_to_bin(RITE_LV_NULL_MARK, cur);
- cur += uint16_to_bin(0, cur);
}
else {
- int const sym_idx = find_filename_index(syms, syms_len, irep->lv[i].name);
+ int const sym_idx = find_filename_index(syms, syms_len, irep->lv[i]);
mrb_assert(sym_idx != -1); /* local variable name must be in syms */
cur += uint16_to_bin(sym_idx, cur);
- cur += uint16_to_bin(irep->lv[i].r, cur);
}
}
@@ -656,7 +654,7 @@ get_lv_record_size(mrb_state *mrb, const mrb_irep *irep)
size_t ret = 0;
int i;
- ret += (sizeof(uint16_t) + sizeof(uint16_t)) * (irep->nlocals - 1);
+ ret += sizeof(uint16_t) * (irep->nlocals - 1);
for (i = 0; i < irep->rlen; ++i) {
ret += get_lv_record_size(mrb, irep->reps[i]);
@@ -1033,9 +1031,9 @@ dump_irep_struct(mrb_state *mrb, const mrb_irep *irep, uint8_t flags, FILE *fp,
/* dump lv */
if (irep->lv) {
len=irep->nlocals;
- fprintf(fp, "static const struct mrb_lvinfo %s_lv_%d[%d] = {", name, n, len);
+ fprintf(fp, "static const mrb_sym %s_lv_%d[%d] = {", name, n, len);
for (i=0; i+1<len; i++) {
- fprintf(fp, "{%u,%d},\n", irep->lv[i].name, irep->lv[i].r);
+ fprintf(fp, "%u, ", irep->lv[i]);
}
fputs("};\n", fp);
}