diff options
author | k0kubun <k0kubun@b2dd03c8-39d4-4d8f-98ff-823fe69b080e> | 2018-06-23 14:11:19 +0000 |
---|---|---|
committer | k0kubun <k0kubun@b2dd03c8-39d4-4d8f-98ff-823fe69b080e> | 2018-06-23 14:11:19 +0000 |
commit | e1be448840da9ac2db4eeeed5d07ae8a765bacce (patch) | |
tree | 0d2ffded9f46497fa10af1a2bc7193750fba49ec /vm_trace.c | |
parent | a62a776d575ada3cb3a8ae2beb8a2908a27648a1 (diff) | |
download | ruby-e1be448840da9ac2db4eeeed5d07ae8a765bacce.tar.gz |
mjit.c: disable calling JIT-ed code
when TracePoint is enabled. We're cancelling JIT-ed code execution AFTER
each instruction, but there is no guard before the first insn of method.
To prevent spoiling performance, I don't want to modify the JIT-ed code
to fix this. So this commit replaces `mjit_enabled` check with `mjit_call_p`
check.
git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@63734 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
Diffstat (limited to 'vm_trace.c')
-rw-r--r-- | vm_trace.c | 4 |
1 files changed, 4 insertions, 0 deletions
diff --git a/vm_trace.c b/vm_trace.c index 10ee1ca18e..fabb15be2f 100644 --- a/vm_trace.c +++ b/vm_trace.c @@ -25,6 +25,7 @@ #include "ruby/debug.h" #include "vm_core.h" +#include "mjit.h" #include "iseq.h" #include "eval_intern.h" @@ -68,6 +69,9 @@ update_global_event_hook(rb_event_flag_t vm_events) rb_event_flag_t enabled_iseq_events = ruby_vm_event_enabled_flags & ISEQ_TRACE_EVENTS; if (new_iseq_events & ~enabled_iseq_events) { + /* Stop calling all JIT-ed code. Compiling trace insns is not supported for now. */ + mjit_call_p = FALSE; + /* write all ISeqs iff new events are added */ rb_iseq_trace_set_all(new_iseq_events | enabled_iseq_events); } |