| Age | Commit message (Collapse) | Author |
|
Find ZJIT options in RUN_OPTS/SPECOPTS and put new ones from the bisection script
there too.
|
|
ZJIT: Improve zjit_bisect.rb
1. The command name in the help message is outdated.
2. When the command failed by itself, the message can be clearer.
|
|
I spent a long time bisecting some largish program before realizing
that failure was in fact coming from the child timing out due to
zjit_bisect.rb not clearing the stdout and stderr pipe.
Fix the pipe deadlock by redirecting to /dev/null. This sacrifices
the debug output during boot, but for that we also get to remove
a lot of code and the dependency on Open3.
|
|
Also add a check in the bisect script that can assign blame to the HIR
optimizer.
|
|
|
|
|
|
|
|
|
|
|
|
Add support for `--zjit-allowed-iseqs=SomeFile` and
`--zjit-log-compiled-iseqs=SomeFile` so we can restrict and inspect
which ISEQs get compiled.
Then add `jit_bisect.rb` which we can run to try and narrow a failing
script. For example:
plum% ../tool/zjit_bisect.rb ../build-dev/miniruby "test.rb"
I, [2025-07-29T12:41:18.657177 #96899] INFO -- : Starting with JIT list of 4 items.
I, [2025-07-29T12:41:18.657229 #96899] INFO -- : Verifying items
I, [2025-07-29T12:41:18.726213 #96899] INFO -- : step fixed[0] and items[4]
I, [2025-07-29T12:41:18.726246 #96899] INFO -- : 4 candidates
I, [2025-07-29T12:41:18.797212 #96899] INFO -- : 2 candidates
Reduced JIT list:
bar@test.rb:8
plum%
We start with 4 compiled functions and shrink to just one.
|