diff options
author | Alan Wu <XrXr@users.noreply.github.com> | 2021-09-08 12:01:39 -0400 |
---|---|---|
committer | Alan Wu <XrXr@users.noreply.github.com> | 2021-10-20 18:19:40 -0400 |
commit | 4b58d698b14752f4dfd405637df384c758cae396 (patch) | |
tree | ca3d3ae9e45d6ebba3aa78795c40d6ada9e5caf1 | |
parent | 9bd6ce47454a03ad1cec422f36017bcae56790dd (diff) |
Count interpreter instructions when -DYJIT_STATS=1
The interpreter instruction count was enabled based on RUBY_DEBUG as
opposed to YJIT_STATS. In builds with YJIT_STATS=1 but RUBY_DEBUG=0,
the count was not available.
Move YJIT_STATS in yjit.h where declarations are expoed to code outside
of YJIT. Also reduce the changes made to the interpreter for calling
into YJIT's instruction counting function.
-rw-r--r-- | vm.c | 14 | ||||
-rw-r--r-- | vm_insnhelper.h | 4 | ||||
-rw-r--r-- | yjit.h | 6 |
3 files changed, 9 insertions, 15 deletions
@@ -28,6 +28,7 @@ #include "internal/sanitizers.h" #include "iseq.h" #include "mjit.h" +#include "yjit.h" #include "ruby/st.h" #include "ruby/vm.h" #include "vm_core.h" @@ -37,7 +38,6 @@ #include "vm_insnhelper.h" #include "ractor_core.h" #include "vm_sync.h" -#include "yjit.h" #include "builtin.h" @@ -345,10 +345,6 @@ static void vm_collect_usage_insn(int insn); static void vm_collect_usage_register(int reg, int isset); #endif -#if RUBY_DEBUG -static void vm_yjit_collect_usage_insn(int insn); -#endif - static VALUE vm_make_env_object(const rb_execution_context_t *ec, rb_control_frame_t *cfp); extern VALUE rb_vm_invoke_bmethod(rb_execution_context_t *ec, rb_proc_t *proc, VALUE self, int argc, const VALUE *argv, int kw_splat, VALUE block_handler, @@ -4061,14 +4057,6 @@ MAYBE_UNUSED(static void (*ruby_vm_collect_usage_func_register)(int reg, int iss #endif -#if RUBY_DEBUG -static void -vm_yjit_collect_usage_insn(int insn) -{ - rb_yjit_collect_vm_usage_insn(insn); -} -#endif - #if VM_COLLECT_USAGE_DETAILS /* @param insn instruction number */ static void diff --git a/vm_insnhelper.h b/vm_insnhelper.h index 22a181f95a..459f567106 100644 --- a/vm_insnhelper.h +++ b/vm_insnhelper.h @@ -25,9 +25,9 @@ MJIT_SYMBOL_EXPORT_END #define COLLECT_USAGE_OPERAND(insn, n, op) vm_collect_usage_operand((insn), (n), ((VALUE)(op))) #define COLLECT_USAGE_REGISTER(reg, s) vm_collect_usage_register((reg), (s)) -#elif RUBY_DEBUG +#elif YJIT_STATS /* for --yjit-stats */ -#define COLLECT_USAGE_INSN(insn) vm_yjit_collect_usage_insn(insn) +#define COLLECT_USAGE_INSN(insn) rb_yjit_collect_vm_usage_insn(insn) #define COLLECT_USAGE_OPERAND(insn, n, op) /* none */ #define COLLECT_USAGE_REGISTER(reg, s) /* none */ #else @@ -5,6 +5,8 @@ #ifndef YJIT_H #define YJIT_H 1 +#include "ruby/internal/config.h" +#include "ruby_assert.h" // for RUBY_DEBUG #include "vm_core.h" #include "method.h" @@ -26,6 +28,10 @@ #define YJIT_DUMP_MODE 0 #endif +#ifndef YJIT_STATS +# define YJIT_STATS RUBY_DEBUG +#endif // ifndef YJIT_STATS + #ifndef rb_iseq_t typedef struct rb_iseq_struct rb_iseq_t; #define rb_iseq_t rb_iseq_t |