| Age | Commit message (Collapse) | Author |
|
https://github.com/ruby/date/commit/945e26e243
|
|
https://github.com/ruby/date/commit/7fe2bd5f94
|
|
https://github.com/ruby/date/commit/a45f8f03c9
|
|
We should always have a T_HASH here, so we can use FL_TEST_RAW to avoid
checking whether we may have an immediate value.
I expect this to be a very small performance improvement (perf stat
./miniruby benchmark/hash_aref_miss.rb shows a ~1% improvement). It also
removes 9 instructions from rb_hash_default_value on x86_64.
Notes:
Merged: https://github.com/ruby/ruby/pull/6945
|
|
On a hash miss we need to call default if it is redefined in order to
return the default value to be used. Previously we checked this with
rb_method_basic_definition_p, which avoids the method call but requires
a method lookup.
This commit replaces the previous check with BASIC_OP_UNREDEFINED_P and
a new BOP_DEFAULT. We still need to fall back to
rb_method_basic_definition_p when called on a subclasss of hash.
| |compare-ruby|built-ruby|
|:---------------|-----------:|---------:|
|hash_aref_miss | 2.692| 3.531|
| | -| 1.31x|
Co-authored-by: Daniel Colson <danieljamescolson@gmail.com>
Co-authored-by: "Ian C. Anderson" <ian@iancanderson.com>
Co-authored-by: Jack McCracken <me@jackmc.xyz>
Notes:
Merged: https://github.com/ruby/ruby/pull/6945
|
|
Prefer Array#unpack1 and Enumerable#sum.
I think the bitmask formula ``2 ** @width - 1`` would be clearer, but not faster for such small integers.
Notes:
Merged-By: k0kubun <takashikkbn@gmail.com>
|
|
Not all builds have RGENGC_CHECK_MODE set, so it should also crash when
RUBY_DEBUG is set.
|
|
Moves the check earlier to before we actually perform the allocation.
|
|
Notes:
Merged-By: ioquatix <samuel@codeotaku.com>
|
|
Make printing shapes better, use a struct instead of specific methods
for each field on a shape.
Co-Authored-By: Aaron Patterson <tenderlove@ruby-lang.org>
Notes:
Merged: https://github.com/ruby/ruby/pull/6942
|
|
Allocating memory (xmalloc and xrealloc) during GC could cause GC to
trigger, which would crash with `[BUG] during_gc != 0`. This is an
intermittent bug which could be hard to debug.
This commit changes it so that any memory allocation during GC will
emit a warning. When debug flags are enabled it will also cause a crash.
Notes:
Merged: https://github.com/ruby/ruby/pull/6921
|
|
Notes:
Merged: https://github.com/ruby/ruby/pull/4825
|
|
* 4-digits or more is required as year
* Minutes and seconds parts are not ommittable
Notes:
Merged: https://github.com/ruby/ruby/pull/4825
|
|
Notes:
Merged: https://github.com/ruby/ruby/pull/4825
|
|
Which limits the precision of subsecond. Defaulted to 9, that
means nanosecond.
Notes:
Merged: https://github.com/ruby/ruby/pull/4825
|
|
Notes:
Merged: https://github.com/ruby/ruby/pull/4825
|
|
Notes:
Merged: https://github.com/ruby/ruby/pull/4825
|
|
`Time.new` now parses strings such as the result of `Time#inspect`
and restricted ISO-8601 formats.
Notes:
Merged: https://github.com/ruby/ruby/pull/4825
|
|
[Bug #19150]
Notes:
Merged: https://github.com/ruby/ruby/pull/6948
|
|
Regexp optimization and Wasm support are added.
|
|
|
|
|
|
https://github.com/ruby/date/commit/7afd9d4615
|
|
|
|
https://github.com/ruby/logger/commit/4e8d9e27fd
|
|
|
|
The use of keyword arguments should be reserved for future extension.
|
|
|
|
https://github.com/ruby/io-console/commit/441528e3eb
|
|
|
|
https://github.com/ruby/io-wait/commit/940ba319d3
|
|
now `enc_table->list` is not a pointer.
|
|
https://github.com/ruby/irb/commit/ed9e435a6b
|
|
This reduces global lock acquiring for reading.
https://bugs.ruby-lang.org/issues/18949
Notes:
Merged: https://github.com/ruby/ruby/pull/6935
|
|
|
|
|
|
All the method call types need to handle argument shifting in case they're
called by `.send`, and we weren't handling that in `OPTIMIZED_METHOD_TYPE_CALL`.
Lack of shifting caused the stack size assertion in gen_leave() to fail.
Discovered by Rails CI: https://buildkite.com/rails/rails/builds/91705#018516c4-f8f8-469e-bc2d-ddeb25ca8317/1920-2067
Diagnosed with help from `@eileencodes` and `@k0kubun`.
Notes:
Merged: https://github.com/ruby/ruby/pull/6943
Merged-By: XrXr
|
|
Notes:
Merged: https://github.com/ruby/ruby/pull/6939
|
|
SIZE_POOL_COUNT is a GC macro, it should belong in gc.h and not shape.h.
SIZE_POOL_COUNT doesn't depend on shape.h so we can have shape.h depend
on gc.h.
Co-Authored-By: Matt Valentine-House <matt@eightbitraptor.com>
Notes:
Merged: https://github.com/ruby/ruby/pull/6940
|
|
https://github.com/ruby/net-http/commit/da626e4e42
|
|
I meant to commit diff, but it was left uncommitted locally.
|
|
Moves check for gc_is_moveable_obj from try_move to gc_compact_plane.
Co-Authored-By: Matt Valentine-House <matt@eightbitraptor.com>
Notes:
Merged: https://github.com/ruby/ruby/pull/6938
|
|
When moving Objects between size pools we have to assign a new shape.
This happened during updating references - we tried to create a new shape
tree that mirrored the existing tree, but based on the root shape of the
new size pool.
This causes allocations to happen if the new tree doesn't already exist,
potentially triggering a GC, during GC.
This commit changes object movement to look for a pre-existing new tree
during object movement, and if that tree does not exist, we don't move
the object to the new pool.
This allows us to remove the shape allocation from update references.
Co-Authored-By: Peter Zhu <peter@peterzhu.ca>
Notes:
Merged: https://github.com/ruby/ruby/pull/6938
|
|
Stubs we generate for invalidation don't necessarily co-locate with the
code that jump to the stub. Since we rely on co-location to keep stubs
alive as they are in the outlined code block, it used to be possible for
code GC inside branch_stub_hit() to free the stub that's its direct
caller, leading us to return to freed code after.
Stubs used to look like:
```
mov arg0, branch_ptr
mov arg1, target_idx
mov arg2, ec
call branch_stub_hit
jmp return_reg
```
Since the call and the jump after the call is the same for all stubs, we
can extract them and use a static trampoline for them. That makes
branch_stub_hit() always return to static code. Stubs now look like:
```
mov arg0, branch_ptr
mov arg1, target_idx
jmp trampoline
```
Where the trampoline is:
```
mov arg2, ec
call branch_stub_hit
jmp return_reg
```
Code GC can now free stubs without problems since we'll always return
to the trampoline, which we generate once on boot and lives forever.
This might save a small bit of memory due to factoring out the static
part of stubs, but it's probably minor.
[Bug #19234]
Co-authored-by: Takashi Kokubun <takashikkbn@gmail.com>
Notes:
Merged-By: maximecb <maximecb@ruby-lang.org>
|
|
|
|
|
|
Notes:
Merged: https://github.com/ruby/ruby/pull/6941
|
|
It was a bad copy-paste.
|
|
auto_request_review, codeql-analysis, scorecards don't have it either,
but those are intentional.
|
|
This reverts the net-imap upgrade of commit e3ed6c07832edf2a95bae3bdd908cc3f5b65eebe.
net-imap tests of test-bundled-gems seem to be broken
https://github.com/ruby/ruby/actions/runs/3704473689/jobs/6277145052.
|