summaryrefslogtreecommitdiff
path: root/insnhelper.ci
diff options
context:
space:
mode:
authormatz <matz@b2dd03c8-39d4-4d8f-98ff-823fe69b080e>2007-11-04 20:36:20 +0000
committermatz <matz@b2dd03c8-39d4-4d8f-98ff-823fe69b080e>2007-11-04 20:36:20 +0000
commit1eee78b8769f7f01cead3b0782e1ee4ed84e281b (patch)
tree32ac34a556e40ef93a8e4a15f328d36886b4fc45 /insnhelper.ci
parented823523e32e8e8a04123ee5b8ec9c0f3de63c02 (diff)
* 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.ci6
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;
}
}