* vm_eval.c (yield_under): change prototype to get argc/argv.
* vm_eval.c (specific_eval): change for above. * vm_eval.c (rb_obj_instance_exec): avoid object allocation. * vm_eval.c (rb_mod_module_exec): ditto. git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@55606 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
This commit is contained in:
parent
68260018df
commit
804a3e100a
10
ChangeLog
10
ChangeLog
@ -1,3 +1,13 @@
|
|||||||
|
Fri Jul 8 00:47:36 2016 NARUSE, Yui <naruse@ruby-lang.org>
|
||||||
|
|
||||||
|
* vm_eval.c (yield_under): change prototype to get argc/argv.
|
||||||
|
|
||||||
|
* vm_eval.c (specific_eval): change for above.
|
||||||
|
|
||||||
|
* vm_eval.c (rb_obj_instance_exec): avoid object allocation.
|
||||||
|
|
||||||
|
* vm_eval.c (rb_mod_module_exec): ditto.
|
||||||
|
|
||||||
Thu Jul 7 20:08:37 2016 Shugo Maeda <shugo@ruby-lang.org>
|
Thu Jul 7 20:08:37 2016 Shugo Maeda <shugo@ruby-lang.org>
|
||||||
|
|
||||||
* vm_args.c (vm_caller_setup_arg_block): disable symbol block
|
* vm_args.c (vm_caller_setup_arg_block): disable symbol block
|
||||||
|
15
vm_eval.c
15
vm_eval.c
@ -1576,7 +1576,7 @@ rb_eval_cmd(VALUE cmd, VALUE arg, int level)
|
|||||||
/* block eval under the class/module context */
|
/* block eval under the class/module context */
|
||||||
|
|
||||||
static VALUE
|
static VALUE
|
||||||
yield_under(VALUE under, VALUE self, VALUE values)
|
yield_under(VALUE under, VALUE self, int argc, const VALUE *argv)
|
||||||
{
|
{
|
||||||
rb_thread_t *th = GET_THREAD();
|
rb_thread_t *th = GET_THREAD();
|
||||||
rb_block_t block, *blockptr;
|
rb_block_t block, *blockptr;
|
||||||
@ -1589,12 +1589,7 @@ yield_under(VALUE under, VALUE self, VALUE values)
|
|||||||
}
|
}
|
||||||
cref = vm_cref_push(th, under, blockptr, TRUE);
|
cref = vm_cref_push(th, under, blockptr, TRUE);
|
||||||
|
|
||||||
if (values == Qundef) {
|
return vm_yield_with_cref(th, argc, argv, cref);
|
||||||
return vm_yield_with_cref(th, 1, &self, cref);
|
|
||||||
}
|
|
||||||
else {
|
|
||||||
return vm_yield_with_cref(th, RARRAY_LENINT(values), RARRAY_CONST_PTR(values), cref);
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
VALUE
|
VALUE
|
||||||
@ -1629,7 +1624,7 @@ specific_eval(int argc, const VALUE *argv, VALUE klass, VALUE self)
|
|||||||
{
|
{
|
||||||
if (rb_block_given_p()) {
|
if (rb_block_given_p()) {
|
||||||
rb_check_arity(argc, 0, 0);
|
rb_check_arity(argc, 0, 0);
|
||||||
return yield_under(klass, self, Qundef);
|
return yield_under(klass, self, 1, &self);
|
||||||
}
|
}
|
||||||
else {
|
else {
|
||||||
VALUE file = Qundef;
|
VALUE file = Qundef;
|
||||||
@ -1725,7 +1720,7 @@ VALUE
|
|||||||
rb_obj_instance_exec(int argc, const VALUE *argv, VALUE self)
|
rb_obj_instance_exec(int argc, const VALUE *argv, VALUE self)
|
||||||
{
|
{
|
||||||
VALUE klass = singleton_class_for_eval(self);
|
VALUE klass = singleton_class_for_eval(self);
|
||||||
return yield_under(klass, self, rb_ary_new4(argc, argv));
|
return yield_under(klass, self, argc, argv);
|
||||||
}
|
}
|
||||||
|
|
||||||
/*
|
/*
|
||||||
@ -1786,7 +1781,7 @@ rb_mod_module_eval(int argc, const VALUE *argv, VALUE mod)
|
|||||||
VALUE
|
VALUE
|
||||||
rb_mod_module_exec(int argc, const VALUE *argv, VALUE mod)
|
rb_mod_module_exec(int argc, const VALUE *argv, VALUE mod)
|
||||||
{
|
{
|
||||||
return yield_under(mod, mod, rb_ary_new4(argc, argv));
|
return yield_under(mod, mod, argc, argv);
|
||||||
}
|
}
|
||||||
|
|
||||||
/*
|
/*
|
||||||
|
Loading…
x
Reference in New Issue
Block a user