Actions
Feature #14830
closedRubyVM::MJIT.pause / RubyVM::MJIT.resume
Description
This ticket is picking only MJIT.pause from https://bugs.ruby-lang.org/issues/14491 and adding MJIT.resume.
Purpose¶
- When benchmarking JIT-ed code, I want to get rid of bad impact for performance that comes from ongoing JIT compilation, without waiting for all JIT compilation finish.
- To make it easy to maintain Ruby's test cases that expect there is no child process with --jit. Using --jit makes them fail by existence of gcc or clang process, and I don't want to wait all JIT compilation finish to make it pass.
Proposals¶
# Pause MJIT compilations but keep JIT-ed code available
RubyVM::MJIT.pause
# Start MJIT compilations again after the MJIT.pause
RubyVM::MJIT.resume
Details¶
RubyVM::MJIT.pause¶
- When MJIT is disabled (without --jit), it raises RuntimeError: "MJIT is not enabled".
- When MJIT is enabled,
- and when MJIT is paused, it does nothing and returns false.
- and when MJIT is running, it blocks to wait for current JIT finish, pauses MJIT worker and returns true.
RubyVM::MJIT.resume¶
- When MJIT is disabled (without --jit), it raises RuntimeError: "MJIT is not enabled".
- When MJIT is enabled,
- and when MJIT is paused, it starts MJIT worker and returns true. It raises RuntimeError if it fails to resume (very rare).
- and when MJIT is running, it does nothing and returns false.
Actions
Like0
Like0Like0Like0Like0Like0Like0Like0