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 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);
|
||||
val = rb_obj_alloc(val);
|
||||
TOPN(argc) = val;
|
||||
|
@ -1999,7 +1999,7 @@ CODE
|
||||
TracePoint.new(:c_call, &capture_events).enable{
|
||||
c.new
|
||||
}
|
||||
assert_equal [:c_call, :itself, :initialize], events[0]
|
||||
assert_equal [:c_call, :itself, :initialize], events[1]
|
||||
events.clear
|
||||
|
||||
o = Class.new{
|
||||
|
Loading…
x
Reference in New Issue
Block a user