variable.c: refactor `mrb_vm_const_get` function.

parent 090356ec
...@@ -803,9 +803,9 @@ mrb_vm_const_get(mrb_state *mrb, mrb_sym sym) ...@@ -803,9 +803,9 @@ mrb_vm_const_get(mrb_state *mrb, mrb_sym sym)
struct RClass *c; struct RClass *c;
struct RClass *c2; struct RClass *c2;
mrb_value v; mrb_value v;
const struct RProc *proc; const struct RProc *proc = mrb->c->ci->proc;
c = MRB_PROC_TARGET_CLASS(mrb->c->ci->proc); c = MRB_PROC_TARGET_CLASS(proc);
if (!c) c = mrb->object_class; if (!c) c = mrb->object_class;
if (iv_get(mrb, c->iv, sym, &v)) { if (iv_get(mrb, c->iv, sym, &v)) {
return v; return v;
...@@ -821,8 +821,7 @@ mrb_vm_const_get(mrb_state *mrb, mrb_sym sym) ...@@ -821,8 +821,7 @@ mrb_vm_const_get(mrb_state *mrb, mrb_sym sym)
c2 = mrb_class_ptr(klass); c2 = mrb_class_ptr(klass);
} }
if (c2 && (c2->tt == MRB_TT_CLASS || c2->tt == MRB_TT_MODULE)) c = c2; if (c2 && (c2->tt == MRB_TT_CLASS || c2->tt == MRB_TT_MODULE)) c = c2;
mrb_assert(!MRB_PROC_CFUNC_P(mrb->c->ci->proc)); proc = proc->upper;
proc = mrb->c->ci->proc;
while (proc) { while (proc) {
c2 = MRB_PROC_TARGET_CLASS(proc); c2 = MRB_PROC_TARGET_CLASS(proc);
if (c2 && iv_get(mrb, c2->iv, sym, &v)) { if (c2 && iv_get(mrb, c2->iv, sym, &v)) {
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment