This module allows for introspection of YJIT, CRubyâs just-in-time compiler. Everything in the module is highly implementation specific and the API might be less stable compared to the standard library.
This module may not exist if YJIT does not support the particular platform for which CRuby is built.
Public Class Methods Sourcedef self.code_gc Primitive.rb_yjit_code_gc end
Discard existing compiled code to reclaim memory and allow for recompilations in the future.
Sourcedef self.dump_exit_locations(filename) unless trace_exit_locations_enabled? raise ArgumentError, "--yjit-trace-exits must be enabled to use dump_exit_locations." end File.binwrite(filename, Marshal.dump(RubyVM::YJIT.exit_locations)) end
Marshal
dumps exit locations to the given filename.
Usage:
If --yjit-exit-locations
is passed, a file named âyjit_exit_locations.dumpâ will automatically be generated.
If you want to collect traces manually, call dump_exit_locations
directly.
Note that calling this in a script will generate stats after the dump is created, so the stats data may include exits from the dump itself.
In a script call:
at_exit do RubyVM::YJIT.dump_exit_locations("my_file.dump") end
Then run the file with the following options:
ruby --yjit --yjit-trace-exits test.rb
Once the code is done running, use Stackprof to read the dump file. See Stackprof documentation for options.
Sourcedef self.enable(stats: false, log: false) return false if enabled? at_exit { print_and_dump_stats } if stats call_yjit_hooks Primitive.rb_yjit_enable(stats, stats != :quiet, log, log != :quiet) end
Enable YJIT compilation. stats
option decides whether to enable YJIT stats or not. log
decides whether to enable YJIT compilation logging or not.
stats
:
false
: Donât enable stats.
true
: Enable stats. Print stats at exit.
:quiet
: Enable stats. Do not print stats at exit.
log
:
false
: Donât enable the log.
true
: Enable the log. Print log at exit.
:quiet
: Enable the log. Do not print log at exit.
def self.enabled? Primitive.cexpr! 'RBOOL(rb_yjit_enabled_p)' end
Check if YJIT is enabled.
Sourcedef self.log return nil unless log_enabled? Primitive.rb_yjit_get_log.map do |timestamp, path| [Time.at(timestamp), path] end end
Return an array of log entries. Return nil
when option is not passed or unavailable.
def self.log_enabled? Primitive.rb_yjit_log_enabled_p end
Check if --yjit-log
is used.
def self.reset_stats! Primitive.rb_yjit_reset_stats_bang end
Discard statistics collected for --yjit-stats
.
def self.runtime_stats(key = nil) raise TypeError, "non-symbol given" unless key.nil? || Symbol === key Primitive.rb_yjit_get_stats(key) end
Return a hash for statistics generated for the --yjit-stats
command line option. Return nil
when option is not passed or unavailable. If a symbol argument is provided, return only the value for the named stat. If any other type is provided, raises TypeError
.
def self.stats_enabled? Primitive.rb_yjit_stats_enabled_p end
Check if --yjit-stats
is used.
def self.stats_string require 'stringio' strio = StringIO.new _print_stats(out: strio) strio.string end
Format and print out counters as a String
. This returns a non-empty content only when --yjit-stats
is enabled.
RetroSearch is an open source project built by @garambo | Open a GitHub Issue
Search and Browse the WWW like it's 1997 | Search results from DuckDuckGo
HTML:
3.2
| Encoding:
UTF-8
| Version:
0.7.3