diff options
| author | Yukihiro "Matz" Matsumoto <[email protected]> | 2018-11-02 20:58:15 +0900 |
|---|---|---|
| committer | Yukihiro "Matz" Matsumoto <[email protected]> | 2018-11-02 20:58:15 +0900 |
| commit | 788e4388f86452c119e145b835e7853f39732811 (patch) | |
| tree | e19bae416e8dad076eaa9109dd4df207367b5a61 /src | |
| parent | 0419f07915603f74bbd3f6435ffee42cde5eaa5f (diff) | |
| parent | 57a435aa1d26c7d64c9d38c6865255a98e32d4cb (diff) | |
| download | mruby-788e4388f86452c119e145b835e7853f39732811.tar.gz mruby-788e4388f86452c119e145b835e7853f39732811.zip | |
Merge branch 'take-cheeze-fix_dump_load'
Since our new VM instruction is byte based, there's no need to endian
conversion of instruction sequences.
Diffstat (limited to 'src')
| -rw-r--r-- | src/dump.c | 23 | ||||
| -rw-r--r-- | src/load.c | 21 |
2 files changed, 6 insertions, 38 deletions
diff --git a/src/dump.c b/src/dump.c index df1e171e4..c2c334c9a 100644 --- a/src/dump.c +++ b/src/dump.c @@ -81,30 +81,11 @@ static ptrdiff_t write_iseq_block(mrb_state *mrb, mrb_irep *irep, uint8_t *buf, uint8_t flags) { uint8_t *cur = buf; - int iseq_no; cur += uint32_to_bin(irep->ilen, cur); /* number of opcode */ cur += write_padding(cur); - switch (flags & DUMP_ENDIAN_NAT) { - case DUMP_ENDIAN_BIG: - if (bigendian_p()) goto native; - for (iseq_no = 0; iseq_no < irep->ilen; iseq_no++) { - cur += uint32_to_bin(irep->iseq[iseq_no], cur); /* opcode */ - } - break; - case DUMP_ENDIAN_LIL: - if (!bigendian_p()) goto native; - for (iseq_no = 0; iseq_no < irep->ilen; iseq_no++) { - cur += uint32l_to_bin(irep->iseq[iseq_no], cur); /* opcode */ - } - break; - - native: - case DUMP_ENDIAN_NAT: - memcpy(cur, irep->iseq, irep->ilen * sizeof(mrb_code)); - cur += irep->ilen * sizeof(mrb_code); - break; - } + memcpy(cur, irep->iseq, irep->ilen * sizeof(mrb_code)); + cur += irep->ilen * sizeof(mrb_code); return cur - buf; } diff --git a/src/load.c b/src/load.c index 54b50b14d..70f5406eb 100644 --- a/src/load.c +++ b/src/load.c @@ -83,23 +83,10 @@ read_irep_record_1(mrb_state *mrb, const uint8_t *bin, size_t *len, uint8_t flag irep->flags |= MRB_ISEQ_NO_FREE; } else { - irep->iseq = (mrb_code *)mrb_malloc(mrb, sizeof(mrb_code) * irep->ilen); - if (flags & FLAG_BYTEORDER_NATIVE) { - memcpy(irep->iseq, src, sizeof(uint32_t) * irep->ilen); - src += sizeof(uint32_t) * irep->ilen; - } - else if (flags & FLAG_BYTEORDER_BIG) { - for (i = 0; i < irep->ilen; i++) { - irep->iseq[i] = (mrb_code)bin_to_uint32(src); /* iseq */ - src += sizeof(uint32_t); - } - } - else { - for (i = 0; i < irep->ilen; i++) { - irep->iseq[i] = (mrb_code)bin_to_uint32l(src); /* iseq */ - src += sizeof(uint32_t); - } - } + size_t data_len = sizeof(mrb_code) * irep->ilen; + irep->iseq = (mrb_code *)mrb_malloc(mrb, data_len); + memcpy(irep->iseq, src, data_len); + src += data_len; } } |
