Age | Commit message (Collapse) | Author |
|
instead of just unloading worst 10% methods.
|
|
|
|
|
|
to avoid "Too many JIT code, but skipped unloading units for JIT compaction".
Now we can forget the `in_compact` locking.
Moving some functions from mjit.c to mjit_worker.c because mjit_worker.c
should have functions executed in the JIT worker.
|
|
|
|
|
|
|
|
|
|
The check output a warning on M1 Mac mini
http://rubyci.s3.amazonaws.com/osx1100arm/ruby-master/log/20201127T074507Z.log.html.gz
```
checking x86intrin.h usability... no
checking x86intrin.h presence... yes
configure: WARNING: x86intrin.h: present but cannot be compiled
configure: WARNING: x86intrin.h: check for missing prerequisite headers?
configure: WARNING: x86intrin.h: see the Autoconf documentation
configure: WARNING: x86intrin.h: section "Present But Cannot Be Compiled"
configure: WARNING: x86intrin.h: proceeding with the compiler's result
checking for x86intrin.h... no
```
Notes:
Merged: https://github.com/ruby/ruby/pull/3820
|
|
|
|
```
$ benchmark-driver -v --rbenv 'before --jit;after --jit' --repeat-count=12 --alternate --output=all benchmark.yml
before --jit: ruby 3.0.0dev (2020-11-27T06:41:15Z master 8ce1711c25) +JIT [x86_64-linux]
after --jit: ruby 3.0.0dev (2020-11-27T08:36:02Z master 2c592126b9) +JIT [x86_64-linux]
last_commit=Cache access to reg_cfp->self on JIT
Calculating -------------------------------------
before --jit after --jit
Optcarrot Lan_Master.nes 82.40522392468650 82.66023870551237 fps
82.67998539899482 83.08660305312587
85.51280693947453 87.09311989553235
86.32925337181406 87.16115255191410
87.35617494926235 87.30699391518075
87.91865339426212 88.47590342996875
88.11573661006648 88.64778616696353
88.16060826662158 88.67015079203991
88.21639244865058 89.19630739497482
88.47241577897603 89.23443637947730
89.37087287229809 89.57052723997015
89.46969964699964 89.97803363889025
```
|
|
default_rand can points a Bignum seed, so it should be marked.
|
|
Random generators are not Ractor-safe, so we need to prepare
per-ractor default random genearators. This patch set
`Random::DEFAULT = Randm` (not a Random instance, but the Random
class) and singleton methods like `Random.rand()` use a per-ractor
random generator.
[Feature #17322]
Notes:
Merged: https://github.com/ruby/ruby/pull/3813
|
|
This reverts commit 4d2c8edca69884a41d2f843d36023e3decdb9872.
Unfortunately this seems to cause several issues:
https://github.com/ruby/ruby/runs/1462188376?check_suite_focus=true
http://ci.rvm.jp/results/trunk-mjit-wait@phosphorus-docker/3272802
|
|
Performance is probably improved?
$ benchmark-driver -v --rbenv 'before --jit;after --jit' --repeat-count=12 --alternate --output=all benchmark.yml
before --jit: ruby 3.0.0dev (2020-11-27T04:37:47Z master 69e77e81dc) +JIT [x86_64-linux]
after --jit: ruby 3.0.0dev (2020-11-27T05:28:19Z master df6b05c6dd) +JIT [x86_64-linux]
last_commit=Set VM_FRAME_FLAG_FINISH at once
Calculating -------------------------------------
before --jit after --jit
Optcarrot Lan_Master.nes 80.89292998533379 82.19497327502751 fps
80.93130641142331 85.13943315260148
81.06214830270119 87.43757879797808
82.29172808453910 87.89942441487113
84.61206450455929 87.91309779491075
85.44545883567997 87.98026086648694
86.02923132404449 88.03081060383973
86.07411817365879 88.14650206137341
86.34348799602836 88.32791633649961
87.90257338977324 88.57599644892220
88.58006509876580 88.67426384743277
89.26611118140011 88.81669430874207
This should have no bad impact on VM because this function is ALWAYS_INLINE.
|
|
Unfortunately we couldn't see a C backtrace with the previous commit
http://ci.rvm.jp/results/trunk-random2@phosphorus-docker/3272697.
|
|
when GC.compact's SEGV handler is installed
|
|
|
|
|
|
|
|
to prevent failures like
http://ci.rvm.jp/logfiles/brlog.trunk-mjit.20201126-182515.
Since fa1250a506e9b6a1bcbf664f6b7b9c06e045d9b9, it should be safe to do
this.
|
|
|
|
|
|
Notes:
Merged: https://github.com/ruby/ruby/pull/3812
|
|
|
|
rb_define_module_id() doesn't do anything with its parameter so
it's a bit confusing.
|
|
|
|
Both explicit compaction routines (gc_compact and the verify references form)
need to clear the heap before executing compaction. Otherwise some
objects may not be alive, and we'll need the read barrier. The heap
must only contain *live* objects if we want to disable the read barrier
during explicit compaction.
The previous commit was missing the "clear the heap" phase from the
"verify references" explicit compaction function.
Fixes [Bug #17306]
|
|
transient_heap_evacuate() evacuates all living objects from theap
to malloc mangaed memory. This evacuation can run in any ractors
in parallel with other ractor's execution and it is danger.
To stop such danger parallel execution, use rb_vm_barrier() to
stop all other ractors.
|
|
|
|
Ractor's error will be printed if Thread#report_on_exception
is true (default), and error message is used. Without this patch,
the exception object is sent by Ractor.yield and it can be shared
with another ractor.
http://ci.rvm.jp/results/trunk-random3@phosphorus-docker/3269368
To prevent such sharing, show errors befor Ractor.yield().
|
|
This reverts commit 63ad55cd882e4010fe313d271af006a430b5ffa8.
Revert "Disable read barrier on explicit compaction request"
This reverts commit 490b57783d80f0c5f7882c66d9fb6aa02713c9a5.
|
|
A worker crash happens very often, but we're not sure why.
I'd like to know a backtrace if it's available.
|
|
It's failing like
http://ci.rvm.jp/results/trunk-mjit-wait@phosphorus-docker/3270373 but I
have no bandwidth to fix it for now.
We're still checking --jit-wait (without --jit-min-calls=5) on GitHub
Actions.
|
|
This test has been very unstable. I'd like to instantly know whether
it's always failing or random when I look at a CI failure output.
|
|
To prevent CI failure like
https://ci.appveyor.com/project/ruby/ruby/builds/36494552/job/a3ow8atl19786tep
|
|
Auto Compaction uses mprotect to implement a read barrier. mprotect can
only work on regions of memory that are a multiple of the OS page size.
Ruby's pages are a multiple of 4kb, but some platforms (like ppc64le)
don't have 4kb page sizes. This commit disables the features on those
platforms.
Fixes [Bug #17306]
|
|
|
|
We don't need a read barrier when the user calls `GC.compact` because we
don't allow allocations during GC, and all references should be "live"
Notes:
Merged: https://github.com/ruby/ruby/pull/3809
|
|
|
|
Default to ONIGERR_INVALID_CHAR_PROPERTY_NAME in
fetch_char_property_to_ctype and only set otherwise if an ending
} is found.
Fixes [Bug #17340]
Notes:
Merged: https://github.com/ruby/ruby/pull/3807
|
|
for cfd8c7e6ca9f923cee3a062b548d0824fc67e9a5.
|
|
To avoid SEGV like
http://ci.rvm.jp/logfiles/brlog.trunk-mjit.20201124-061530
|
|
Notes:
Merged: https://github.com/ruby/ruby/pull/3804
|
|
GitHub: fix GH-194
Reported by Josef Šimánek. Thanks!!!
https://github.com/ruby/csv/commit/fd86afe081
Notes:
Merged: https://github.com/ruby/ruby/pull/3804
|
|
https://github.com/ruby/csv/commit/e1b430d965
Notes:
Merged: https://github.com/ruby/ruby/pull/3804
|
|
https://github.com/ruby/csv/commit/5623dee00e
Notes:
Merged: https://github.com/ruby/ruby/pull/3804
|
|
https://github.com/ruby/csv/commit/5adeaff91f
Notes:
Merged: https://github.com/ruby/ruby/pull/3804
|
|
https://github.com/ruby/csv/commit/d9e67918e2
Notes:
Merged: https://github.com/ruby/ruby/pull/3804
|
|
https://github.com/ruby/csv/commit/bee48b04c4
Notes:
Merged: https://github.com/ruby/ruby/pull/3804
|