| Commit message (Collapse) | Author | Age | Files | Lines |
|
|
|
| |
The distinction doesn't make much difference today.
|
|
|
|
| |
It's no longer about the compiler logic itself.
|
|
|
|
| |
to obviate one rb_funcall. This also removes rb_ptr as refactoring.
|
|
|
|
|
|
|
| |
* Revert "Revert "MJIT: Make it parsable by Solargraph""
This reverts commit 8e18761da1932df88bfb6505acbda4740e1b2930.
* Call rb_gc_register_mark_object
|
|
|
|
|
|
|
|
|
|
|
| |
This reverts commit ccd8dd6ad395bbd9f5290e0fcb7929e5e5d36767.
Revert "MJIT: Fix miniruby with MJIT_FORCE_ENABLE"
This reverts commit b033775ed9d9226ba73c1d4a197e55ba89575142.
GitHub Actions is failing. I ran out of time today to investigate it.
will try it again tomorrow.
|
| |
|
| |
|
|
|
|
|
|
|
|
|
|
|
| |
process. Completely isolating the MJIT compilation process complicates a
lot of things for ensuring consistency before and after the fork.
Just running this synchronously makes things a lot easier, for example
the race condition of capture_cc_entries could be fixed by this patch
alone. Hopefully, the bottleneck is the C compiler and not this Ruby
code. Also, this change doesn't negatively impact MJIT's final numbers
on yjit-bench while "1st itr" is degraded for sure.
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
These days we benchmark MJIT using yjit-bench. The warmup duration in
yjit-bench is very short, so compiling many methods comes at a cost even
while it's actually optimal for MJIT to compile everything / tens of
thousands of methods once it reaches the peak performance.
yjit-bench doesn't necessarily represent the peak performance on production.
It measures the performance of Ruby 30~60s after boot. If your JIT takes
more than 1 minute to warm up, there's no way for the JIT to make the numbers
good on yjit-bench.
Until we make MJIT's compilation much faster, we don't afford compiling
10,000 methods on yjit-bench.
This change alone makes MJIT's benchmark number on railsbench 2x better :p
|
| |
|
|
|
| |
for consistency with YJIT
|
| |
|
| |
|
|
|
|
|
|
|
| |
* Make mjit_cont sharable with YJIT
* Update dependencies
* Update YJIT binding
|
| |
|
|
|
|
| |
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
|
| |
|
|
|
|
| |
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]
|
|
|
| |
[Misc #18968]
|
| |
|
| |
|
|
|
|
| |
mjit_compile.c should be able to access this more easily.
|
|
|
|
|
| |
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.
|
|
|
|
|
|
| |
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]
|
|
|
| |
[Feature #18824]
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
* 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 <samuel.williams@oriontransfer.co.nz>
|
|
|
|
|
|
| |
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.
|
| |
|
|
|
|
|
|
| |
This reverts commit b64f81c81729bbc248d19af01cafde88eb60fdc7.
It seems to cause a problem in --jit / --jit-wait CIs. Reverting for now.
|