mirror of
https://github.com/ruby/ruby.git
synced 2022-11-09 12:17:21 -05:00
rewrite only if changed.
* vm_trace.c (update_global_event_hook): rewrite ISeqs only when effective events are changed. git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@60765 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
This commit is contained in:
parent
b000b1d930
commit
19ae98d5ce
1 changed files with 12 additions and 1 deletions
13
vm_trace.c
13
vm_trace.c
|
@ -59,11 +59,22 @@ rb_vm_trace_mark_event_hooks(rb_hook_list_t *hooks)
|
||||||
|
|
||||||
/* ruby_vm_event_flags management */
|
/* ruby_vm_event_flags management */
|
||||||
|
|
||||||
|
#define RUBY_EVENTS_TRACE_BY_ISEQ (RUBY_EVENT_LINE | \
|
||||||
|
RUBY_EVENT_CLASS | \
|
||||||
|
RUBY_EVENT_END | \
|
||||||
|
RUBY_EVENT_CALL | \
|
||||||
|
RUBY_EVENT_RETURN| \
|
||||||
|
RUBY_EVENT_B_CALL| \
|
||||||
|
RUBY_EVENT_B_RETURN)
|
||||||
|
|
||||||
static void
|
static void
|
||||||
update_global_event_hook(rb_event_flag_t vm_events)
|
update_global_event_hook(rb_event_flag_t vm_events)
|
||||||
{
|
{
|
||||||
ruby_vm_event_flags = vm_events;
|
if ((vm_events & RUBY_EVENTS_TRACE_BY_ISEQ) !=
|
||||||
|
(ruby_vm_event_flags & RUBY_EVENTS_TRACE_BY_ISEQ)) {
|
||||||
rb_iseq_trace_set_all(vm_events);
|
rb_iseq_trace_set_all(vm_events);
|
||||||
|
}
|
||||||
|
ruby_vm_event_flags = vm_events;
|
||||||
rb_objspace_set_event_hook(vm_events);
|
rb_objspace_set_event_hook(vm_events);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
Loading…
Reference in a new issue