diff options
author | matz <matz@b2dd03c8-39d4-4d8f-98ff-823fe69b080e> | 2007-11-04 20:36:20 +0000 |
---|---|---|
committer | matz <matz@b2dd03c8-39d4-4d8f-98ff-823fe69b080e> | 2007-11-04 20:36:20 +0000 |
commit | 1eee78b8769f7f01cead3b0782e1ee4ed84e281b (patch) | |
tree | 32ac34a556e40ef93a8e4a15f328d36886b4fc45 /insnhelper.ci | |
parent | ed823523e32e8e8a04123ee5b8ec9c0f3de63c02 (diff) | |
download | ruby-1eee78b8769f7f01cead3b0782e1ee4ed84e281b.tar.gz |
* eval.c (rb_f_send): allow send/__send__ to call methods of all
visibility again. we no longer provide __send, __send!.
* eval.c (rb_invoke_method): new method to honor private
visibility. if it's invoked in a function call style, it calls
private methods as well (previous 1.9 send behavior).
git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@13824 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
Diffstat (limited to 'insnhelper.ci')
-rw-r--r-- | insnhelper.ci | 6 |
1 files changed, 1 insertions, 5 deletions
diff --git a/insnhelper.ci b/insnhelper.ci index d067903ad8..7e5067b92d 100644 --- a/insnhelper.ci +++ b/insnhelper.ci @@ -588,10 +588,9 @@ vm_send_optimize(rb_control_frame_t *reg_cfp, { if (*mn && nd_type((*mn)->nd_body) == NODE_CFUNC) { NODE *node = (*mn)->nd_body; - extern VALUE rb_f_send_bang(int argc, VALUE *argv, VALUE recv); extern VALUE rb_f_send(int argc, VALUE *argv, VALUE recv); - if (node->nd_cfnc == rb_f_send_bang || node->nd_cfnc == rb_f_send) { + if (node->nd_cfnc == rb_f_send) { int i = *num - 1; VALUE sym = TOPN(i); *id = SYMBOL_P(sym) ? SYM2ID(sym) : rb_to_id(sym); @@ -604,9 +603,6 @@ vm_send_optimize(rb_control_frame_t *reg_cfp, *mn = rb_method_node(klass, *id); *num -= 1; DEC_SP(1); - } - - if (node->nd_cfnc == rb_f_send_bang) { *flag |= VM_CALL_FCALL_BIT; } } |