summaryrefslogtreecommitdiffhomepage
path: root/src/dump.c
diff options
context:
space:
mode:
authorYukihiro "Matz" Matsumoto <[email protected]>2020-09-21 08:15:54 +0900
committerYukihiro "Matz" Matsumoto <[email protected]>2020-10-12 18:20:26 +0900
commitbff79112a61959902c89757e473ea62346685847 (patch)
tree7fafdedea33dd48899e3fd4c9fd191703f3454cf /src/dump.c
parentf1d02bfc153bc7063dba6689ef9f0c6299adbc73 (diff)
downloadmruby-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.c23
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) {