diff options
| author | Yukihiro "Matz" Matsumoto <[email protected]> | 2020-09-21 08:15:54 +0900 |
|---|---|---|
| committer | Yukihiro "Matz" Matsumoto <[email protected]> | 2020-10-12 18:20:26 +0900 |
| commit | bff79112a61959902c89757e473ea62346685847 (patch) | |
| tree | 7fafdedea33dd48899e3fd4c9fd191703f3454cf /src/dump.c | |
| parent | f1d02bfc153bc7063dba6689ef9f0c6299adbc73 (diff) | |
| download | mruby-bff79112a61959902c89757e473ea62346685847.tar.gz mruby-bff79112a61959902c89757e473ea62346685847.zip | |
Dump/load 16 bits for `ilen` and `slen` in `irep`.
Those types are `uint16_t` in definition. Also we no longer need padding
for `iseq`.
Diffstat (limited to 'src/dump.c')
| -rw-r--r-- | src/dump.c | 23 |
1 files changed, 5 insertions, 18 deletions
diff --git a/src/dump.c b/src/dump.c index 3c7c5ac84..a75b0a88e 100644 --- a/src/dump.c +++ b/src/dump.c @@ -29,17 +29,6 @@ static size_t get_irep_record_size_1(mrb_state *mrb, const mrb_irep *irep); #endif static size_t -write_padding(uint8_t *buf) -{ - const size_t align = MRB_DUMP_ALIGNMENT; - size_t pad_len = -(intptr_t)buf & (align-1); - if (pad_len > 0) { - memset(buf, 0, pad_len); - } - return pad_len; -} - -static size_t get_irep_header_size(mrb_state *mrb) { size_t size = 0; @@ -69,9 +58,8 @@ get_iseq_block_size(mrb_state *mrb, const mrb_irep *irep) { size_t size = 0; - size += sizeof(uint32_t); /* ilen */ - size += sizeof(uint32_t); /* max padding */ - size += sizeof(uint32_t) * irep->ilen; /* iseq(n) */ + size += sizeof(uint16_t); /* ilen */ + size += irep->ilen * sizeof(mrb_code); /* iseq(n) */ return size; } @@ -81,8 +69,7 @@ write_iseq_block(mrb_state *mrb, const mrb_irep *irep, uint8_t *buf, uint8_t fla { uint8_t *cur = buf; - cur += uint32_to_bin(irep->ilen, cur); /* number of opcode */ - cur += write_padding(cur); + cur += uint16_to_bin(irep->ilen, cur); /* number of opcode */ memcpy(cur, irep->iseq, irep->ilen * sizeof(mrb_code)); cur += irep->ilen * sizeof(mrb_code); @@ -239,7 +226,7 @@ get_syms_block_size(mrb_state *mrb, const mrb_irep *irep) int sym_no; mrb_int len; - size += sizeof(uint32_t); /* slen */ + size += sizeof(uint16_t); /* slen */ for (sym_no = 0; sym_no < irep->slen; sym_no++) { size += sizeof(uint16_t); /* snl(n) */ if (irep->syms[sym_no] != 0) { @@ -258,7 +245,7 @@ write_syms_block(mrb_state *mrb, const mrb_irep *irep, uint8_t *buf) uint8_t *cur = buf; const char *name; - cur += uint32_to_bin(irep->slen, cur); /* number of symbol */ + cur += uint16_to_bin(irep->slen, cur); /* number of symbol */ for (sym_no = 0; sym_no < irep->slen; sym_no++) { if (irep->syms[sym_no] != 0) { |
