Age | Commit message (Collapse) | Author |
|
for consistency with YJIT
Notes:
Merged-By: k0kubun <[email protected]>
|
|
|
|
Notes:
Merged-By: k0kubun <[email protected]>
|
|
* Make mjit_cont sharable with YJIT
* Update dependencies
* Update YJIT binding
Notes:
Merged-By: k0kubun <[email protected]>
|
|
Notes:
Merged: https://github.com/ruby/ruby/pull/6430
|
|
I meant the other one. Otherwise this option doesn't make sense.
|
|
to let mjit_add_iseq_to_process work
|
|
|
|
fixing the behavior of b726c06e7eeafff52e368179dbe79a11b1aff975
|
|
The interface is similar to RubyVM::ISeq.translate; it's used if defined.
Same as --mjit=pause, this is an undocumented feature for MJIT experiments.
|
|
for performance
|
|
You may use `RUBYOPT=--mjit=pause irb` to play with RubyVM::MJIT::C,
control the boot timing of MJIT, or customize the implementation while
paused. It's an undocumented feature for such experiments.
|
|
fork is for parallel compilation, but --mjit-wait cancels it.
It's more useful to not fork it for binding.irb, debugging, etc.
|
|
http://ci.rvm.jp/results/trunk-mjit@phosphorus-docker/4225469
|
|
Notes:
Merged-By: k0kubun <[email protected]>
|
|
This takes care of signal_self_pipe and other things.
|
|
same motivation as d6f21b308bcff03e82f8b3dbf11a852ce111b3b3
|
|
|
|
The current MJIT relies on SIGCHLD and fork(2) to be performant, and
it's something mswin can't offer. You could run Linux MJIT on WSL
instead.
[Misc #18968]
Notes:
Merged-By: k0kubun <[email protected]>
|
|
[Misc #18968]
Notes:
Merged-By: k0kubun <[email protected]>
|
|
Notes:
Merged: https://github.com/ruby/ruby/pull/6193
|
|
|
|
mjit_compile.c should be able to access this more easily.
Notes:
Merged: https://github.com/ruby/ruby/pull/6140
|
|
Since #6006, we no longer avoid executing GC on mjit_worker.c and thus
there's no need to carefully change how we write code whether you're in
mjit.c or mjit_worker.c anymore.
Notes:
Merged-By: k0kubun <[email protected]>
|
|
include/ruby/assert.h sets NDEBUG by default.
As MJIT CI uses -DVM_CHECK_MODE, using only VM_ASSERT might be more
helpful.
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
follow up https://github.com/ruby/ruby/pull/6006
|
|
just less C code to maintain
|
|
[Misc #18830]
Notes:
Merged-By: k0kubun <[email protected]>
|
|
[Feature #18824]
Notes:
Merged-By: k0kubun <[email protected]>
|
|
* Prefixed ccan headers
* Remove unprefixed names in ccan/build_assert
* Remove unprefixed names in ccan/check_type
* Remove unprefixed names in ccan/container_of
* Remove unprefixed names in ccan/list
Co-authored-by: Samuel Williams <[email protected]>
Notes:
Merged-By: ioquatix <[email protected]>
|
|
Use ISEQ_BODY macro to get the rb_iseq_constant_body of the ISeq. Using
this macro will make it easier for us to change the allocation strategy
of rb_iseq_constant_body when using Variable Width Allocation.
Notes:
Merged: https://github.com/ruby/ruby/pull/5698
|
|
Notes:
Merged: https://github.com/ruby/ruby/pull/5448
|
|
This reverts commit b64f81c81729bbc248d19af01cafde88eb60fdc7.
It seems to cause a problem in --jit / --jit-wait CIs. Reverting for now.
|
|
|
|
|
|
|
|
https://ci.appveyor.com/project/ruby/ruby/builds/39542385/job/8b7aq951f9t01x4x
|
|
by a race condition by multiple Ractors.
Atmically incrementing body->total_calls may have its own cost, so for
now we intentionally leave the unreliable total_calls. So we allow an
ISeq to be never pushed when you use multiple Ractors. However, if you
enqueue a single ccan node twice, get_from_list loops infinitely. Thus
this patch takes care of such a situation.
|
|
This is a follow-up of 86c262541ad07528842d76dab4b9b34bd888d5f4.
CRITICAL_SECTION_START/FINISH are not needed when it's called from an
MJIT worker.
Also, ZALLOC needs to be calloc because ZALLOC may trigger GC, which an
MJIT worker must not do.
|
|
This fixes SEGVs like https://github.com/ruby/ruby/runs/2715166621?check_suite_focus=true.
When mjit_recompile is called when mjit_compile is compiling the exact
same iseq (and after it called mjit_capture_cc_entries), iseq->body->jit_unit
is re-created and its cc_entries becomes NULL. Then, when it tries to
lookup cc_entries through iseq->body->jit_unit, it fails.
|
|
This is useful for large applications like Rails.
https://k0kubun.medium.com/ruby-3-jit-can-make-rails-faster-756310f235a
|
|
Compiling everything seems to contributed to improving the final
performance in general. MJIT's compilation is slow anyway, especially
when you need to wait for JIT compaction.
This might make sense for short-time benchmarks like Optcarrot with
default parameters, but it didn't give benefits in my local environment.
|
|
[Bug #17584]
Notes:
Merged-By: k0kubun <[email protected]>
|