diff options
author | Jean Boussier <jean.boussier@gmail.com> | 2021-08-26 16:11:15 +0200 |
---|---|---|
committer | Alan Wu <XrXr@users.noreply.github.com> | 2021-10-20 18:19:39 -0400 |
commit | b5a0baf1c0f969bba966ca0791f27487de5b1067 (patch) | |
tree | a42a3d480d85df92d605ef86b33115af80924ccb | |
parent | 924e3ca84fba717f03bea7a4636f623f8e24b484 (diff) |
Allow to toggle YJIT stats collection from runtime
For use cases where you want to collect the metrics
for a specific piece of code (typically a web request)
you can have the stats turned off by default and then
turn them on at runtime before executing the code you care
about.
-rw-r--r-- | yjit.rb | 8 | ||||
-rw-r--r-- | yjit_iface.c | 7 |
2 files changed, 15 insertions, 0 deletions
@@ -134,6 +134,14 @@ module YJIT Primitive.reset_stats_bang end + def self.stats_enabled? + Primitive.cexpr! 'rb_yjit_opts.gen_stats ? Qtrue : Qfalse' + end + + def self.stats_enabled=(enabled) + Primitive.set_stats_enabled(enabled) + end + def self.enabled? Primitive.cexpr! 'rb_yjit_enabled_p() ? Qtrue : Qfalse' end diff --git a/yjit_iface.c b/yjit_iface.c index 473ff2cec1..dfd0f58760 100644 --- a/yjit_iface.c +++ b/yjit_iface.c @@ -808,6 +808,13 @@ reset_stats_bang(rb_execution_context_t *ec, VALUE self) return Qnil; } +static VALUE +set_stats_enabled(rb_execution_context_t *ec, VALUE self, VALUE enabled) +{ + rb_yjit_opts.gen_stats = RB_TEST(enabled); + return enabled; +} + #include "yjit.rbinc" #if YJIT_STATS |