diff options
author | Takashi Kokubun <takashikkbn@gmail.com> | 2021-08-12 23:19:15 -0700 |
---|---|---|
committer | Takashi Kokubun <takashikkbn@gmail.com> | 2021-08-12 23:26:44 -0700 |
commit | ac4d53bd461ff386cd45fdd484ffb6b628a251ad (patch) | |
tree | 9dd22e012d1feb655023819460e1e1090932ee8d /vm_trace.c | |
parent | 365da4c6ace385f08b97bd657ff5a118055e8ad1 (diff) | |
download | ruby-ac4d53bd461ff386cd45fdd484ffb6b628a251ad.tar.gz |
Don't cancel JIT-ed code on TracePoint :class
events get enabled
Diffstat (limited to 'vm_trace.c')
-rw-r--r-- | vm_trace.c | 8 |
1 files changed, 6 insertions, 2 deletions
diff --git a/vm_trace.c b/vm_trace.c index b603293d34..ed218b8120 100644 --- a/vm_trace.c +++ b/vm_trace.c @@ -81,8 +81,12 @@ update_global_event_hook(rb_event_flag_t vm_events) rb_event_flag_t enabled_iseq_events = ruby_vm_event_enabled_global_flags & ISEQ_TRACE_EVENTS; if (new_iseq_events & ~enabled_iseq_events) { - // Stop calling all JIT-ed code. We can't rewrite existing JIT-ed code to trace_ insns for now. - mjit_cancel_all("TracePoint is enabled"); + // :class events are triggered only in ISEQ_TYPE_CLASS, but mjit_target_iseq_p ignores such iseqs. + // Thus we don't need to cancel JIT-ed code for :class events. + if (new_iseq_events != RUBY_EVENT_CLASS) { + // Stop calling all JIT-ed code. We can't rewrite existing JIT-ed code to trace_ insns for now. + mjit_cancel_all("TracePoint is enabled"); + } /* write all ISeqs if and only if new events are added */ rb_iseq_trace_set_all(new_iseq_events | enabled_iseq_events); |