Deopt if iseq trace events are enabled
This commit is contained in:
parent
f15d85f086
commit
ec3b48d3da
@ -916,7 +916,7 @@ opt_new
|
|||||||
VALUE argc = vm_ci_argc(cd->ci);
|
VALUE argc = vm_ci_argc(cd->ci);
|
||||||
VALUE val = TOPN(argc);
|
VALUE val = TOPN(argc);
|
||||||
|
|
||||||
if (vm_method_cfunc_is(GET_ISEQ(), cd, val, rb_class_new_instance_pass_kw)) {
|
if (vm_method_cfunc_is(GET_ISEQ(), cd, val, rb_class_new_instance_pass_kw) && !(ruby_vm_event_flags & ISEQ_TRACE_EVENTS)) {
|
||||||
RB_DEBUG_COUNTER_INC(opt_new_hit);
|
RB_DEBUG_COUNTER_INC(opt_new_hit);
|
||||||
val = rb_obj_alloc(val);
|
val = rb_obj_alloc(val);
|
||||||
TOPN(argc) = val;
|
TOPN(argc) = val;
|
||||||
|
@ -1999,7 +1999,7 @@ CODE
|
|||||||
TracePoint.new(:c_call, &capture_events).enable{
|
TracePoint.new(:c_call, &capture_events).enable{
|
||||||
c.new
|
c.new
|
||||||
}
|
}
|
||||||
assert_equal [:c_call, :itself, :initialize], events[0]
|
assert_equal [:c_call, :itself, :initialize], events[1]
|
||||||
events.clear
|
events.clear
|
||||||
|
|
||||||
o = Class.new{
|
o = Class.new{
|
||||||
|
Loading…
x
Reference in New Issue
Block a user