module RubyVM::YJIT
Этот модуль позволяет выполнять интроспекцию YJIT — JIT-компилятора CRuby. Всё в модуле в значительной степени зависит от конкретной реализации, и API может быть менее стабильным по сравнению со стандартной библиотекой.
Этот модуль может отсутствовать, если YJIT не поддерживает платформу, для которой собран CRuby.
Открытые методы класса
# File yjit.rb, line 237 def self.code_gc Primitive.rb_yjit_code_gc end
Отбрасывает существующий скомпилированный код, чтобы освободить память и обеспечить возможность повторной компиляции в будущем.
# File yjit.rb, line 160
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 записывает места выхода в указанный файл.
Использование:
Если передан --yjit-exit-locations, будет автоматически создан файл с именем «yjit_exit_locations.dump».
Чтобы собирать трассировки вручную, вызовите напрямую dump_exit_locations.
Обратите внимание: при вызове из скрипта статистика будет собрана после создания дампа, поэтому данные статистики могут включать выходы, возникшие при создании самого дампа.
Вызовите в скрипте:
at_exit do
RubyVM::YJIT.dump_exit_locations("my_file.dump")
end
Затем запустите файл со следующими параметрами:
ruby --yjit --yjit-trace-exits test.rb
После завершения выполнения кода используйте Stackprof, чтобы прочитать файл дампа. Описание параметров см. в документации Stackprof.
# File yjit.rb, line 47
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 Включает компиляцию YJIT. Параметр stats определяет, включать ли статистику YJIT. Параметр log определяет, включать ли журнал компиляции YJIT.
-
stats:-
false: не включать статистику. -
true: включить статистику. Вывести статистику при завершении. -
:quiet: включить статистику. Не выводить статистику при завершении.
-
-
log:-
false: не включать журнал. -
true: включить журнал. Вывести журнал при завершении. -
:quiet: включить журнал. Не выводить журнал при завершении.
-
# File yjit.rb, line 12 def self.enabled? Primitive.cexpr! 'RBOOL(rb_yjit_enabled_p)' end
Проверяет, включён ли YJIT.
# File yjit.rb, line 190
def self.log
return nil unless log_enabled?
Primitive.rb_yjit_get_log.map do |timestamp, path|
[Time.at(timestamp), path]
end
end Возвращает массив записей журнала. Возвращает nil, если параметр не передан или недоступен.
# File yjit.rb, line 22 def self.log_enabled? Primitive.rb_yjit_log_enabled_p end
Проверяет, используется ли --yjit-log.
# File yjit.rb, line 32 def self.reset_stats! Primitive.rb_yjit_reset_stats_bang end
Удаляет статистику, собранную для --yjit-stats.
# File yjit.rb, line 172 def self.runtime_stats(key = nil) raise TypeError, "non-symbol given" unless key.nil? || Symbol === key Primitive.rb_yjit_get_stats(key) end
Возвращает хеш со статистикой, собранной для параметра командной строки --yjit-stats. Возвращает nil, если параметр не передан или недоступен. Если передан аргумент-символ, возвращает только значение указанного параметра статистики. Если передан аргумент любого другого типа, возбуждает исключение TypeError.
# File yjit.rb, line 17 def self.stats_enabled? Primitive.rb_yjit_stats_enabled_p end
Проверяет, используется ли --yjit-stats.
# File yjit.rb, line 180 def self.stats_string # Lazily require StringIO to avoid breaking miniruby require 'stringio' strio = StringIO.new _print_stats(out: strio) strio.string end
Форматирует счётчики и выводит их в виде String. Возвращает непустое содержимое только в том случае, если включён --yjit-stats.
Ruby Core © 1993–2025 Yukihiro Matsumoto
Licensed under the Ruby License.
Ruby Standard Library © contributors
Licensed under their own licenses.