From 9914243d6815cd988d81783bf24a7e23c084ae83 Mon Sep 17 00:00:00 2001 From: "Yukihiro \"Matz\" Matsumoto" Date: Fri, 1 Sep 2023 15:29:40 +0900 Subject: [PATCH] vm.c: use direct array access if possible --- src/vm.c | 10 +++++++++- 1 file changed, 9 insertions(+), 1 deletion(-) diff --git a/src/vm.c b/src/vm.c index b9742507d..9340b0c00 100644 --- a/src/vm.c +++ b/src/vm.c @@ -1556,7 +1556,15 @@ RETRY_TRY_BLOCK: switch (mrb_type(va)) { case MRB_TT_ARRAY: if (!mrb_integer_p(vb)) goto getidx_fallback; - regs[a] = mrb_ary_entry(va, mrb_integer(vb)); + else { + mrb_int idx = mrb_integer(vb); + if (0 <= idx && idx < RARRAY_LEN(va)) { + regs[a] = RARRAY_PTR(va)[idx]; + } + else { + regs[a] = mrb_ary_entry(va, idx); + } + } break; case MRB_TT_HASH: va = mrb_hash_get(mrb, va, vb);