A RetroSearch Logo

Home - News ( United States | United Kingdom | Italy | Germany ) - Football scores

Search Query:

Showing content from https://docs.ruby-lang.org/en/3.4/RubyVM/YJIT.html below:

module RubyVM::YJIT - Documentation for Ruby 3.4

module RubyVM::YJIT

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

Source

def self.code_gc
  Primitive.rb_yjit_code_gc
end

Discard existing compiled code to reclaim memory and allow for recompilations in the future.

Source

def 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.

Source

def 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.

Source

def self.enabled?
  Primitive.cexpr! 'RBOOL(rb_yjit_enabled_p)'
end

Check if YJIT is enabled.

Source

def 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.

Source

def self.log_enabled?
  Primitive.rb_yjit_log_enabled_p
end

Check if --yjit-log is used.

Source

def self.reset_stats!
  Primitive.rb_yjit_reset_stats_bang
end

Discard statistics collected for --yjit-stats.

Source

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.

Source

def self.stats_enabled?
  Primitive.rb_yjit_stats_enabled_p
end

Check if --yjit-stats is used.

Source

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