Age | Commit message (Collapse) | Author |
|
Calling some syscall functions such as Dir.chroot causes SIGSYS instead
of EPERM on Android.
This change skips all tests that stops the test-suite run.
|
|
|
|
This raised a NameError before.
Notes:
Merged: https://github.com/ruby/ruby/pull/2438
|
|
|
|
change service name to fix failed test on Solaris
|
|
|
|
This removes an invalid keyword argument separation warning for
code such as:
```ruby
def foo(arg)
arg
end
kw = {}
foo(*[1], **kw)
```
This warning was caused because the remove_empty_keyword_hash
was set based on a comparison with two variables, and in this
case, one of the variables was updated after the check and we
need to use the updated variable.
Simplify things by just inlining the comparison.
|
|
Addrinfo.getaddrinfo and .foreach now accepts :timeout in seconds as
a keyword argument. If getaddrinfo_a(3) is available, the timeout will be
applied for name resolution. Otherwise, it will be ignored.
Socket.tcp accepts :resolv_timeout to use this feature.
|
|
No code changes are necessary, but we didn't have as extensive
tests for these calls previously.
|
|
|
|
And test-rubyspec is deprecated.
|
|
|
|
|
|
|
|
|
|
and add some comments.
(I confirm that `foo(**{})` allocates no hash object.)
|
|
This is a similar refactoring to 8c908c989077c74eed26e02912b98362e509b8a3,
but the target is compile_hash.
|
|
|
|
|
|
As this tool has been intended to use in a working directory,
assume that the toplevel directory is under the VCS, and SVN will
no longer be canonical.
|
|
nd_alen and nd_brace is the same field, but nd_brace is more suitable
for this case.
|
|
|
|
NODE_ZLIST case is handled in compile_hash, so iseq_compile_each0
doesn't have to do the same check redundantly.
|
|
The length of NODE_LIST chain in NODE_HASH is always even because it
represents key-value pairs. There is no need to check for the
odd-length case.
|
|
The array is just for a temporal buffer to create a hash, not stored in
the final iseq.
|
|
|
|
|
|
|
|
|
|
when it's not used. This macro is not used when it's direct threaded code.
This patch is purely for readability and has no impact for any behavior.
|
|
|
|
The original code looks unnecessarily complicated (to me).
Also, it creates a pre-allocated array only for the prefix of the array.
The new code optimizes not only the prefix but also the subsequence that
is longer than 0x40 elements.
# not optimized
10000000.times { [1+1, 1,2,3,4,...,63] } # 2.12 sec.
# (1+1; push 1; push 2; ...; puts 63; newarray 64; concatarray)
# optimized
10000000.times { [1+1, 1,2,3,4,...,63,64] } # 1.46 sec.
# (1+1; newarray 1; putobject [1,2,3,...,64]; concatarray)
|
|
The same refactoring as to b601b13c7267889bf394146353c5f2b0eb488278.
|
|
"popped" case can be so simple, so this change moves the branch to the
first, instead of scattering `if (popped)` branches to the main part.
Also, the return value "len" is not used. So it returns just 0 or 1.
|
|
[Bug #16007]
|
|
|
|
|
|
compile_list was for the compilation of Array literal and Hash literal.
I guess it was originally reasonable to handle them in one function, but
now, compilation of Array is very different from Hash. So the function
was complicated by many branches for Array and Hash.
This change separates the function to two ones for Array and Hash.
|
|
An array literal [1,2,...,301] was compiled to the following iseq:
duparray [1,2,...,300]
putobject [301]
concatarray
The Array literal optimization took every two elements maybe because it
must handle not only Array but also Hash.
Now the optimization takes each element if it is an Array literal. So
the new iseq is: duparray [1,2,...,301].
|
|
`[{}, {}, {}, ..., {}, *{}]` is wrongly created.
A big array literal is created and concatenated for every 256 elements.
The newarraykwsplat must be emitted only at the last chunk.
|
|
|
|
from array to list.
Follow up to ac50ac03aeb210763730cdc45f230e236519223d
|
|
and NODE_ZARRAY to NODE_ZLIST.
NODE_ARRAY is used not only by an Array literal, but also the contents
of Hash literals, method call arguments, dynamic string literals, etc.
In addition, the structure of NODE_ARRAY is a linked list, not an array.
This is very confusing, so I believe `NODE_LIST` is a better name.
|
|
|
|
|
|
|
|
|
|
This were previously hidden because calls from C were not warned.
Notes:
Merged: https://github.com/ruby/ruby/pull/2432
|
|
Notes:
Merged: https://github.com/ruby/ruby/pull/2432
|
|
Previously, Ruby did not warn in these cases, and in some cases
did not have the same behavior. This makes calls from C handled
the same way as calls from Ruby.
Notes:
Merged: https://github.com/ruby/ruby/pull/2432
|