summaryrefslogtreecommitdiffhomepage
path: root/mrbgems/mruby-eval
diff options
context:
space:
mode:
authordearblue <[email protected]>2020-10-24 22:29:31 +0900
committerdearblue <[email protected]>2020-10-24 22:29:31 +0900
commit69a6bb1f124c52deab3b2ea9b5d40bcdc6ea4282 (patch)
tree526dcbb01fd2d8dbeebcee92ec6e0d4a9722fa50 /mrbgems/mruby-eval
parent17247c51f2e713b89d84ea329bae83b71f14a431 (diff)
downloadmruby-69a6bb1f124c52deab3b2ea9b5d40bcdc6ea4282.tar.gz
mruby-69a6bb1f124c52deab3b2ea9b5d40bcdc6ea4282.zip
Reorganize `env_new()` as `mrb_env_new()`
The `mrb_env_new()` function is a global function, but it is still treated as an internal function.
Diffstat (limited to 'mrbgems/mruby-eval')
-rw-r--r--mrbgems/mruby-eval/src/eval.c13
1 files changed, 2 insertions, 11 deletions
diff --git a/mrbgems/mruby-eval/src/eval.c b/mrbgems/mruby-eval/src/eval.c
index 61b33f6e1..d9df8678f 100644
--- a/mrbgems/mruby-eval/src/eval.c
+++ b/mrbgems/mruby-eval/src/eval.c
@@ -6,6 +6,7 @@
#include <mruby/opcode.h>
#include <mruby/error.h>
+struct REnv *mrb_env_new(mrb_state *mrb, struct mrb_context *c, mrb_callinfo *ci, int nstacks, mrb_value *stack, struct RClass *tc);
mrb_value mrb_exec_irep(mrb_state *mrb, mrb_value self, struct RProc *p);
mrb_value mrb_obj_instance_eval(mrb_state *mrb, mrb_value self);
@@ -20,7 +21,6 @@ create_proc_from_string(mrb_state *mrb, const char *s, mrb_int len, mrb_value bi
struct REnv *e;
mrb_callinfo *ci; /* callinfo of eval caller */
struct RClass *target_class = NULL;
- mrb_int bidx;
if (!mrb_nil_p(binding)) {
mrb_raise(mrb, E_ARGUMENT_ERROR, "Binding of eval must be nil.");
@@ -83,16 +83,7 @@ create_proc_from_string(mrb_state *mrb, const char *s, mrb_int len, mrb_value bi
e = ci->env;
}
else {
- e = (struct REnv*)mrb_obj_alloc(mrb, MRB_TT_ENV,
- (struct RClass*)target_class);
- e->mid = ci->mid;
- e->stack = ci[1].stackent;
- e->cxt = mrb->c;
- MRB_ENV_SET_LEN(e, ci->proc->body.irep->nlocals);
- bidx = ci->argc;
- if (ci->argc < 0) bidx = 2;
- else bidx += 1;
- MRB_ENV_SET_BIDX(e, bidx);
+ e = mrb_env_new(mrb, mrb->c, ci, ci->proc->body.irep->nlocals, ci[1].stackent, target_class);
ci->env = e;
}
proc->e.env = e;