summaryrefslogtreecommitdiffhomepage
path: root/src
diff options
context:
space:
mode:
authorYukihiro "Matz" Matsumoto <[email protected]>2018-11-02 20:58:15 +0900
committerYukihiro "Matz" Matsumoto <[email protected]>2018-11-02 20:58:15 +0900
commit788e4388f86452c119e145b835e7853f39732811 (patch)
treee19bae416e8dad076eaa9109dd4df207367b5a61 /src
parent0419f07915603f74bbd3f6435ffee42cde5eaa5f (diff)
parent57a435aa1d26c7d64c9d38c6865255a98e32d4cb (diff)
downloadmruby-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.c23
-rw-r--r--src/load.c21
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;
}
}