| Age | Commit message (Collapse) | Author |
|
rb_callable_method_entry() creates ccs entry in cc_tbl, but this
code overwrite by insert newly created ccs and overwrote ccs never
freed.
[Bug #16900]
Notes:
Merged: https://github.com/ruby/ruby/pull/3128
|
|
Same as 02705b27be207fce57bd0253251f81108c7ed57b
http://ci.rvm.jp/results/trunk-random1@phosphorus-docker/2955433
```
1)
TestGc#test_start_full_mark [/tmp/ruby/v3/src/trunk-random1/test/ruby/test_gc.rb:61]:
Expected :oldmalloc to be nil.
```
|
|
Create a wrapper object first, then buffer allocation which can
fail.
|
|
|
|
This commit just unpins and updates VM references
|
|
|
|
To get rid of a void function at the end of non-void function.
|
|
instead of :TOTAL of ObjectSpace.count_objects.
This test had failed very occasionally:
https://rubyci.org/logs/rubyci.s3.amazonaws.com/centos8/ruby-master/log/20200521T033004Z.fail.html.gz
```
1) Failure:
TestRubyOptimization#test_block_parameter_should_not_create_objects [/home/chkbuild/chkbuild/tmp/build/20200521T033004Z/ruby/test/ruby/test_optimization.rb:713]:
<0> expected but was
<407>.
```
This test of lazy proc creation checks if no object is created during a
method call. However, calling a method itself increases the count of
objects because method cache is now an object (T_MEMO).
The reason why this test rarely fails is because the test was buggy; it
checked the count of :TOTAL, but :TOTAL count changes only when the GC
heap is expanded. Creating one object rarely causes heap expansion.
The test must have checked not only :TOTAL but also the count of :FREE.
Instead, this change more directly checks :T_DATA. Note that a Proc
object is T_DATA.
|
|
Fix up of 0e3b0fcdba7
From: fd0 (Daisuke Fujimura)
|
|
This is a pure refactoring that improves understanding of what is going
on. Not a big win though.
|
|
Notes:
Merged-By: ioquatix <samuel@codeotaku.com>
|
|
Ruby's GC is incremental, meaning that during the mark phase (and also
the sweep phase) programs are allowed to run. This means that programs
can allocate objects before the mark or sweep phase have actually
completed. Those objects may not have had a chance to be marked, so we
can't know if they are movable or not. Something that references the
newly created object might have called the pinning function during the
mark phase, but since the mark phase hasn't run we can't know if there
is a "pinning" relationship.
To be conservative, we must only allow objects that are not pinned but
also marked to move.
|
|
|
|
The GC will not disassemble incomplete instruction sequences. So it is
important that when instructions are being assembled, any objects the
instructions point at should not be moved.
This patch implements a fixed width array that pins its references.
When the instructions are done being assembled, the pinning array goes
away and the objects inside the iseqs are allowed to move.
|
|
Notes:
Merged: https://github.com/ruby/ruby/pull/3125
|
|
|
|
We observed combination of multiple __builtin_assume() can cause
strange compile results on clang-6 (-DNDEBUG exposed this issue).
To avoid this problem, __builtin_assume() is from clang-7.
https://github.com/ruby/ruby/pull/3120#issuecomment-630821333
Notes:
Merged: https://github.com/ruby/ruby/pull/3122
|
|
|
|
On mingw, wmemcpy() is defined as an inline function using
memcpy(), and the static inline wrapper causes a warning.
```
In file included from include/ruby/ruby.h:39,
from win32/file.c:5:
include/ruby/internal/memory.h:284:16: warning: 'ruby_nonempty_memcpy' is static but used in inline function 'wmemcpy' which is not static
284 | #define memcpy ruby_nonempty_memcpy
| ^~~~~~~~~~~~~~~~~~~~
```
|
|
Patch by koshigoe (Masataka SUZUKI). Thanks!
|
|
Notes:
Merged: https://github.com/ruby/ruby/pull/3119
|
|
|
|
We can update these references too, so lets allow them to move.
|
|
|
|
Fix up previous commit
ref
9aa75795f9f438d5c874d8e418c3c7cdd63024fa,
38002a8adbd98266426940d829429a30af0622a4, and
0e60b59d5884edb8f9aea023efd9b24f1ff02049
|
|
ref 9aa75795f9f438d5c874d8e418c3c7cdd63024fa
|
|
|
|
|
|
|
|
by inlining only hot path.
=== mame/optcarrot ===
$ benchmark-driver -v --rbenv 'before --jit;after --jit' benchmark.yml --repeat-count=24 --output=all
before --jit: ruby 2.8.0dev (2020-05-18T05:21:31Z master 0e5a58b6bf) +JIT [x86_64-linux]
after --jit: ruby 2.8.0dev (2020-05-18T06:12:04Z master 0e3d71a8d1) +JIT [x86_64-linux]
last_commit=Reduce code size for rb_class_of
Calculating -------------------------------------
before --jit after --jit
Optcarrot Lan_Master.nes 71.62880463568773 70.95730063273503 fps
71.73973684273152 71.98447841929851
75.03923801841310 75.54262519509039
75.16300287174957 77.64029272984344
75.16834828625935 78.67861469580785
75.17670723726911 78.81879353707393
75.67637908020630 79.18188850392886
76.19843953215396 79.66484891814478
77.28166716118808 79.80278072861037
77.38509903325165 80.05859292679696
78.12693418455953 80.34624804808006
78.73654441746730 80.66326571254345
79.25387513454415 80.69760605740196
79.44137881689524 81.32053489212245
79.50497657368358 81.50250852553751
79.62401328582868 82.27544931834611
79.79178811723664 82.67455264522741
81.20275352937418 82.93857260493297
81.57027048640776 83.15019118788184
81.63373188649095 83.20728816044721
81.93420437766426 83.25027576772972
82.05716136357167 83.27072145898173
82.21070805525066 83.36008265822194
82.56924063784872 83.36112268888493
=== benchmark-driver/sinatra ===
[rps]
before: 13143.49 rps
after: 13505.70 rps
[inlined rb_class_of size]
before: 11.5K
after: 3.8K
(calculated by `dwarftree --die inlined_subroutine --flat --merge --show-size`)
|
|
Notes:
Merged: https://github.com/ruby/ruby/pull/3115
|
|
Put some functions which are unlikely to be called on JIT in
.text.unlikely section to improve hot code's locality.
|
|
|
|
|
|
|
|
|
|
https://github.com/ruby/reline/commit/38676ba8c2
|
|
https://github.com/ruby/reline/commit/23c67fb7b3
|
|
https://tiswww.case.edu/php/chet/readline/readline.html#IDX25
> If an attempt is made to set history-size to a non-numeric value, the maximum
> number of history entries will be set to 500.
https://github.com/ruby/reline/commit/acf0437280
|
|
https://github.com/ruby/irb/commit/d7c5fb0273
|
|
|
|
Notes:
Merged: https://github.com/ruby/ruby/pull/3116
|
|
|
|
Run tests in the order given in the command line.
|
|
Defer initialization of extension libraries, loading prelude files
and requiring files, and skip if dump options are given.
|
|
Source code encoding is defaulted to UTF-8 now too.
|
|
When multiple autoclose IO objects are leaked too.
|
|
* Per @nobu review
* Enhanced rdoc for String.new
* Respond to review
Notes:
Merged-By: drbrain <drbrain@segment7.net>
|
|
* Per @nobu review
* Rdoc enhancements for Array
* Responses to review
Notes:
Merged-By: drbrain <drbrain@segment7.net>
|
|
|