| Commit message (Collapse) | Author | Age | Files | Lines |
... | |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
Noticed that rb_method_basic_definition_p is frequently called.
Its callers include vm_caller_setup_args_block(),
rb_hash_default_value(), rb_num_neative_int_p(), and a lot more.
It seems worth caching the method resolution part. Majority of
rb_method_basic_definion_p() usages take fixed class and fixed
method id combinations.
Calculating -------------------------------------
ours trunk
so_matrix 2.379 2.115 i/s - 1.000 times in 0.420409s 0.472879s
Comparison:
so_matrix
ours: 2.4 i/s
trunk: 2.1 i/s - 1.12x slower
|
| |
|
| |
|
| |
|
|
|
|
|
| |
Instead run test-bundled-gems.rb by `ENV['RUBY']`, which should be
set by runruby.rb.
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
We track recursion in order to not infinite loop in ==, inspect, and
similar methods by keeping a thread-local 1 or 2 level hash. This allows
us to track when we have seen the same object (ex. using inspect) or
same pair of objects (ex. using ==) in this stack before and to treat
that differently.
Previously both levels of this Hash used the object's memory_id as a key
(using object_id would be slow and wasteful). Unfortunately, prettyprint
(pp.rb) uses this thread local variable to "pretend" to be inspect and
inherit its same recursion behaviour.
This commit changes the top-level hash to be an identity hash and to use
objects as keys instead of their object_ids.
I'd like to have also converted the 2nd level hash to an ident hash, but
it would have prevented an optimization which avoids allocating a 2nd
level hash for only a single element, which we want to keep because it's
by far the most common case.
So the new format of this hash is:
{ object => true } (not paired)
{ lhs_object => rhs_object_memory_id } (paired, single object)
{ lhs_object => { rhs_object_memory_id => true, ... } } (paired, many objects)
We must also update pp.rb to match this (using identity hashes).
|
| |
|
| |
|
| |
|
|
|
|
|
| |
Removed `if` conditions separating `test-bundled-gems`, and pass
`TESTOPTS` and `TEST_BUNDLED_GEMS_ALLOW_FAILURES` via `env`.
|
| |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
This commit is to attempt fixing this error:
http://ci.rvm.jp/results/trunk-gc-asserts@ruby-sky1/2353281
Each non-full heap_page struct contains a reference to the next page
that contains free slots. Compaction could fill any page, including
pages that happen to be linked to as "pages which contain free slots".
To fix this, we'll iterate each page, and rebuild the "free page list"
depending on the number of actual free slots on that page. If there are
no free slots on the page, we'll set the free_next pointer to NULL.
Finally we'll pop one page off the "free page list" and set it as the
"using page" for the next allocation.
|
| |
|
| |
|
| |
|
| |
|
|
|
|
| |
It is unnatural and probably a typo.
|
|
|
|
|
| |
This reverts commit ba35c14325ebbf1da8f200df83c45ee9937ff8a1.
This is because ripper fails symbol lookup error.
|
|
|
|
| |
It is unnatural and probably a typo.
|
| |
|
| |
|
|
|
|
| |
It looks like hanging up when fetching from a remote first time.
|
|
|
|
| |
https://github.com/ruby/racc/commit/a887ebe529
|
| |
|
| |
|
| |
|
| |
|
| |
|
| |
|
| |
|
| |
|
| |
|
|
|
|
| |
https://github.com/ruby/ruby/pull/2637#discussion_r341812475
|
| |
|
| |
|
| |
|
| |
|
| |
|
| |
|
| |
|
|
|
|
| |
I think this meant to mention `MatchData`? This is a breaking change, but
should be a minor one.
|
| |
|
|
|
|
| |
https://github.com/ruby/date/commit/9bc6e30a82
|
|
|
|
| |
https://github.com/ruby/date/commit/ae14e5f293
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
This gets the time zone abbreviations from
https://www.timeanddate.com/time/zones/, and adds unambiguous time
zones not already present in zonetab.list. See bin/update-abbr
for the program used.
This regenerates zonetab.h using prereq.mk (requires gperf).
Only one test line is added, just to make sure a new time zone
abbreviation is picked up.
Fixes Ruby Bug 16286
https://github.com/ruby/date/commit/702e8b3033
|
| |
|
|
|
|
| |
Apply __attribute__((__returns_nonnull__)) when available.
|
|
|
|
| |
malloc can fail. Should treat such situations.
|
|
|
|
|
|
| |
Looking at gc.c, rb_aligned_malloc contains `return NULL;` so it
has to be taken care of. Note however that posix_memalign(3posix)
does _not_ set errno.
|
|
|
|
|
| |
clang also supports __attribute__((__alloc_size__)) so why not use
it when the compiler says it does.
|