summaryrefslogtreecommitdiffhomepage
path: root/src/vm.c
diff options
context:
space:
mode:
Diffstat (limited to 'src/vm.c')
-rw-r--r--src/vm.c7
1 files changed, 3 insertions, 4 deletions
diff --git a/src/vm.c b/src/vm.c
index 7f79db32b..4e232c1fc 100644
--- a/src/vm.c
+++ b/src/vm.c
@@ -966,9 +966,9 @@ prepare_tagged_break(mrb_state *mrb, uint32_t tag, const struct RProc *proc, mrb
#define INIT_DISPATCH for (;;) { insn = BYTECODE_DECODER(*pc); CODE_FETCH_HOOK(mrb, irep, pc, regs); switch (insn) {
#define CASE(insn,ops) case insn: pc0=pc++; FETCH_ ## ops (); pc_save = pc;
-#define NEXT break
+#define NEXT goto L_END_DISPATCH
#define JUMP NEXT
-#define END_DISPATCH }}
+#define END_DISPATCH L_END_DISPATCH:;}}
#else
@@ -2324,7 +2324,7 @@ RETRY_TRY_BLOCK:
mrb_int div = mrb_num_div_int(mrb, x, y);
SET_INT_VALUE(mrb, regs[a], div);
}
- goto L_DIV_OUT;
+ NEXT;
#ifndef MRB_NO_FLOAT
case TYPES2(MRB_TT_INTEGER,MRB_TT_FLOAT):
x = (mrb_float)mrb_integer(regs[a]);
@@ -2349,7 +2349,6 @@ RETRY_TRY_BLOCK:
f = mrb_num_div_flo(mrb, x, y);
SET_FLOAT_VALUE(mrb, regs[a], f);
#endif
- L_DIV_OUT:
NEXT;
}