Bug #16383 » tracepoint-attr-16383.patch
| vm_insnhelper.c | ||
|---|---|---|
|
vm_call_ivar(rb_execution_context_t *ec, rb_control_frame_t *cfp, struct rb_calling_info *calling, struct rb_call_data *cd)
|
||
|
{
|
||
|
struct rb_call_cache *cc = &cd->cc;
|
||
|
VALUE ret;
|
||
|
RB_DEBUG_COUNTER_INC(ccf_ivar);
|
||
|
cfp->sp -= 1;
|
||
|
return vm_getivar(calling->recv, cc->me->def->body.attr.id, NULL, cc, TRUE);
|
||
|
EXEC_EVENT_HOOK(ec, RUBY_EVENT_C_CALL, calling->recv, cc->me->def->body.attr.id, cd->ci.mid, cc->me->owner, Qundef);
|
||
|
ret = vm_getivar(calling->recv, cc->me->def->body.attr.id, NULL, cc, TRUE);
|
||
|
EXEC_EVENT_HOOK(ec, RUBY_EVENT_C_RETURN, calling->recv, cc->me->def->body.attr.id, cd->ci.mid, cc->me->owner, ret);
|
||
|
return ret;
|
||
|
}
|
||
|
static VALUE
|
||
|
vm_call_attrset(rb_execution_context_t *ec, rb_control_frame_t *cfp, struct rb_calling_info *calling, struct rb_call_data *cd)
|
||
|
{
|
||
|
struct rb_call_cache *cc = &cd->cc;
|
||
|
VALUE ret;
|
||
|
RB_DEBUG_COUNTER_INC(ccf_attrset);
|
||
|
VALUE val = *(cfp->sp - 1);
|
||
|
cfp->sp -= 2;
|
||
|
return vm_setivar(calling->recv, cc->me->def->body.attr.id, val, NULL, cc, 1);
|
||
|
EXEC_EVENT_HOOK(ec, RUBY_EVENT_C_CALL, calling->recv, cc->me->def->body.attr.id, cd->ci.mid, cc->me->owner, Qundef);
|
||
|
ret = vm_setivar(calling->recv, cc->me->def->body.attr.id, val, NULL, cc, 1);
|
||
|
EXEC_EVENT_HOOK(ec, RUBY_EVENT_C_RETURN, calling->recv, cc->me->def->body.attr.id, cd->ci.mid, cc->me->owner, ret);
|
||
|
return ret;
|
||
|
}
|
||
|
static inline VALUE
|
||
- « Previous
- 1
- 2
- Next »