From 8322c441eeb62f3ab189c2c33f7f21652ad3ed53 Mon Sep 17 00:00:00 2001 From: dearblue Date: Sun, 31 Dec 2023 14:49:59 +0900 Subject: [PATCH] Remove unreachable blocks in `OP_RETURN` When `mrb->c->prev` is non `NULL` and `mrb->c->noexec` is false, switching source fiber should suspend with `Fiber#resume`. In this case, the condition `mrb->c->ci == mrb->c->cibase` is not satisfied. --- src/vm.c | 10 ---------- 1 file changed, 10 deletions(-) diff --git a/src/vm.c b/src/vm.c index 759fd977a..30bdbf849 100644 --- a/src/vm.c +++ b/src/vm.c @@ -2340,16 +2340,6 @@ RETRY_TRY_BLOCK: NORMAL_RETURN: ci = mrb->c->ci; - - if (ci == mrb->c->cibase) { - struct mrb_context *c; - c = mrb->c; - - if (c->prev && !c->vmexec && c->prev->ci == c->prev->cibase) { - RAISE_LIT(mrb, E_FIBER_ERROR, "double resume"); - } - } - v = regs[a]; mrb_gc_protect(mrb, v); CHECKPOINT_RESTORE(RBREAK_TAG_BREAK) {