From 7144eab350a1922cfade42b71c589410aebb0ca8 Mon Sep 17 00:00:00 2001 From: dearblue Date: Fri, 15 Dec 2023 21:46:00 +0900 Subject: [PATCH] Replace `for` and `CHECKPOINT` block comprehensions I think it will make the eyes less tired for a process flow. --- src/vm.c | 42 +++++++++++++++++++++--------------------- 1 file changed, 21 insertions(+), 21 deletions(-) diff --git a/src/vm.c b/src/vm.c index 35e1650f9..10d6b09f2 100644 --- a/src/vm.c +++ b/src/vm.c @@ -2368,31 +2368,31 @@ RETRY_TRY_BLOCK: break; } - for (;;) { - CHECKPOINT_RESTORE(RBREAK_TAG_BREAK) { - struct RBreak *brk = (struct RBreak*)mrb->exc; - ci = &mrb->c->cibase[brk->ci_break_index]; - v = mrb_break_value_get(brk); - mrb_gc_protect(mrb, v); - } - CHECKPOINT_MAIN(RBREAK_TAG_BREAK) { + CHECKPOINT_RESTORE(RBREAK_TAG_BREAK) { + struct RBreak *brk = (struct RBreak*)mrb->exc; + ci = &mrb->c->cibase[brk->ci_break_index]; + v = mrb_break_value_get(brk); + mrb_gc_protect(mrb, v); + } + CHECKPOINT_MAIN(RBREAK_TAG_BREAK) { + for (;;) { UNWIND_ENSURE(mrb, mrb->c->ci, mrb->c->ci->pc, RBREAK_TAG_BREAK, ci, v); - } - CHECKPOINT_END(RBREAK_TAG_BREAK); - if (mrb->c->ci == ci) { - break; - } - cipop(mrb); - if (mrb->c->ci[1].cci != CINFO_NONE) { - mrb_assert(prev_jmp != NULL); - mrb->exc = (struct RObject*)break_new(mrb, RBREAK_TAG_BREAK, ci, v); - mrb_gc_arena_restore(mrb, ai); - mrb->c->vmexec = FALSE; - mrb->jmp = prev_jmp; - MRB_THROW(prev_jmp); + if (mrb->c->ci == ci) { + break; + } + cipop(mrb); + if (mrb->c->ci[1].cci != CINFO_NONE) { + mrb_assert(prev_jmp != NULL); + mrb->exc = (struct RObject*)break_new(mrb, RBREAK_TAG_BREAK, ci, v); + mrb_gc_arena_restore(mrb, ai); + mrb->c->vmexec = FALSE; + mrb->jmp = prev_jmp; + MRB_THROW(prev_jmp); + } } } + CHECKPOINT_END(RBREAK_TAG_BREAK); mrb->exc = NULL; /* clear break object */ if (ci == mrb->c->cibase) {