summaryrefslogtreecommitdiffhomepage
path: root/src
diff options
context:
space:
mode:
Diffstat (limited to 'src')
-rw-r--r--src/codedump.c6
-rw-r--r--src/vm.c5
2 files changed, 10 insertions, 1 deletions
diff --git a/src/codedump.c b/src/codedump.c
index 842d40bdf..9174ebe3d 100644
--- a/src/codedump.c
+++ b/src/codedump.c
@@ -416,7 +416,11 @@ codedump(mrb_state *mrb, mrb_irep *irep)
print_lv_a(mrb, irep, a);
break;
CASE(OP_HASHADD, BB):
- printf("OP_HASHADD\tR%d\t%d", a, b);
+ printf("OP_HASHADD\tR%d\t%d\t", a, b);
+ print_lv_a(mrb, irep, a);
+ break;
+ CASE(OP_HASHCAT, B):
+ printf("OP_HASHCAT\tR%d\t", a);
print_lv_a(mrb, irep, a);
break;
diff --git a/src/vm.c b/src/vm.c
index 8332158f7..b47469ebf 100644
--- a/src/vm.c
+++ b/src/vm.c
@@ -2710,6 +2710,11 @@ RETRY_TRY_BLOCK:
mrb_gc_arena_restore(mrb, ai);
NEXT;
}
+ CASE(OP_HASHCAT, B) {
+ mrb_hash_merge(mrb, regs[a], regs[a+1]);
+ mrb_gc_arena_restore(mrb, ai);
+ NEXT;
+ }
CASE(OP_LAMBDA, BB)
c = OP_L_LAMBDA;