| Age | Commit message (Collapse) | Author |
|
|
|
|
|
|
|
|
|
|
|
We weren't taking in to account that objects with generic IV tables
could go "too complex" in the IV set code. This commit takes that in to
account and also ensures FL_EXIVAR is set when a geniv object
transitions to "too complex"
Co-Authored-By: Jean Boussier <byroot@ruby-lang.org>
|
|
|
|
There is a handful of call sites where we may transition to
OBJ_TOO_COMPLEX_SHAPE if we just ran out of shapes, but that
weren't handling it properly.
|
|
This commit implements compilation for the PostExeuctionNode by
using the ScopeNode to create child iseqs where appropriate.
|
|
|
|
|
|
For static analysis, it’s better to keep unused literal nodes.
If simply change `block_append` to fall through, both "unused literal ignored"
and "possibly useless use of a literal in void context" warnings
are shown for the same line. But it’s verbose then remove
"unused literal ignored" warning.
This kind of optimization is already implemented on compile.c.
`compile_block` calls `iseq_compile_each0` with `popped = 1` when NODE_BLOCK
has next.
|
|
Add a new API rb_profile_thread_frames(), which is essentialy a
per-thread version of rb_profile_frames().
While the original rb_profile_frames() always returns results about the
current active thread obtained by GET_EC(), this new API takes a Thread
to be profiled as an argument.
This should come in handy when profiling I/O-bound programs such as
webapps, since this new API allows us to learn about Threads performing
I/O (which do not have the GVL).
Profiling worker threads (such as Sidekiq workers) may be another
application.
Implements [Feature #10602]
Co-authored-by: Mike Perham <mike@perham.net>
|
|
|
|
(https://github.com/ruby/irb/pull/743)
* Use IRB's own doc for doc dialog tests
* Run doc dialog tests for older Rubies too
* Remove unnecessary CI setups
https://github.com/ruby/irb/commit/97a2b86f0a
|
|
instead of assert.
It's better because assert_equal prints the values when it fails.
https://github.com/ruby/rdoc/commit/91d40ce8f8
|
|
https://github.com/ruby/prism/commit/bd4d248fd6
|
|
https://github.com/ruby/prism/commit/4a7be1fc50
|
|
* no_proxy is meant to operate on the destination address, not on the name of the proxy
* if both end with `'.example'`, the test does not nail down the behaviour
https://github.com/ruby/net-http/commit/bb9a5cfa3d
|
|
|
|
- Prefix `check_both_ways` with `assert_` to show proper failure
lines.
- Extract dedicated assertions for Encoding::UndefinedConversionError
and Encoding::InvalidByteSequenceError.
|
|
test/fiber/test_queue.rb: Make the stuck tests fail.
We observed the 2 tests in the `test/fiber/test_queue.rb` getting stuck
in some GCC compilers in Ubuntu ppc64le focal/jammy, even when the timeout
`queue.pop(timeout: 0.0001)` is set in the code.
This commit is to make the tests fail rather than getting stuck.
|
|
Since the check for MAX_SHAPE_ID was done before even checking
if the transition we're looking for even exists, as soon as the
max shape is reached, get_next_shape_internal would always return
`TOO_COMPLEX` regardless of whether the transition we're looking
for already exist or not.
In addition to entirely de-optimize all newly created objects, it
also made an assertion fail in `vm_setivar`:
```
vm_setivar:rb_shape_get_next_iv_shape(rb_shape_get_shape_by_id(source_shape_id), id) == dest_shape
```
|
|
This reverts commit db3b814cb0ff6ffe83fe0c4f66cd6ce8951c3ca7.
This debugging information is no longer needed.
|
|
https://github.com/ruby/prism/commit/5b72f84480
|
|
https://github.com/ruby/prism/commit/44090d9f26
|
|
https://github.com/ruby/prism/commit/ee54244800
|
|
https://github.com/ruby/prism/commit/1da5e05672
|
|
|
|
https://github.com/ruby/prism/commit/9fdb41d8ba
|
|
https://github.com/ruby/prism/commit/160df9a687
|
|
https://github.com/ruby/prism/commit/e6deed05a5
|
|
MultiTargetNode
https://github.com/ruby/prism/commit/6d1858192e
|
|
https://github.com/ruby/prism/commit/e60240d54b
|
|
https://github.com/ruby/prism/commit/ec31fd827f
|
|
https://github.com/ruby/prism/commit/dda7a0da52
|
|
Method calls with keyword splat args compile differently than
without since they merge the keyword arg hash with the keyword splat
hash. We know this information at parse time, so can set a flag
which the compiler can use.
https://github.com/ruby/prism/commit/e5f8a9a3cd
|
|
Added the correct encoding to the allocated regex. This required making
a new method to set the encoding and pass that to `rb_enc_reg_new`
instead of `rb_reg_new`. The former `rb_reg_new` would set the encoding
to ASCII8BIT regardless of encoding flag.
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|