Age | Commit message (Collapse) | Author |
|
|
|
* Adding links to literals and Kernel
Notes:
Merged-By: BurdetteLamar <[email protected]>
|
|
The methods aren't called for FIXNUM, and it's best to have
consistent behavior.
Fixes [Bug #18377]
Notes:
Merged: https://github.com/ruby/ruby/pull/5199
|
|
Adds remarks about literals and Kernel methods to Float and Integer.
Notes:
Merged-By: BurdetteLamar <[email protected]>
|
|
Notes:
Merged-By: BurdetteLamar <[email protected]>
|
|
* What's Here for Float
Notes:
Merged-By: BurdetteLamar <[email protected]>
|
|
* Enhanced RDoc for Float#floor
* Enhanced RDoc for Float
* Enhanced RDoc for Float
Notes:
Merged-By: BurdetteLamar <[email protected]>
|
|
* Enhanced RDoc for Float#prev_float
Notes:
Merged-By: BurdetteLamar <[email protected]>
|
|
* Enhanced RDoc for Float#next_float
Notes:
Merged-By: BurdetteLamar <[email protected]>
|
|
* What's Here section for Integer
Notes:
Merged-By: BurdetteLamar <[email protected]>
|
|
Treats:
#>
#>=
#<
#<=
#eql?
#nan?
#infinite?
#finite?
Notes:
Merged-By: BurdetteLamar <[email protected]>
|
|
Treated (or previously treated):
#quo
#%
#divmod
#**`
#eql?
#<=>
#==
#hash
Notes:
Merged-By: BurdetteLamar <[email protected]>
|
|
Treats:
#to_s
#coerce
#+
#-
#*
#/
Notes:
Merged-By: BurdetteLamar <[email protected]>
|
|
This provides a significant speedup for symbol, true, false,
nil, and 0-9, class/module, and a small speedup in most other cases.
Speedups (using included benchmarks):
:symbol :: 60%
0-9 :: 50%
Class/Module :: 50%
nil/true/false :: 20%
integer :: 10%
[] :: 10%
"" :: 3%
One reason this approach is faster is it reduces the number of
VM instructions for each interpolated value.
Initial idea, approach, and benchmarks from Eric Wong. I applied
the same approach against the master branch, updating it to handle
the significant internal changes since this was first proposed 4
years ago (such as CALL_INFO/CALL_CACHE -> CALL_DATA). I also
expanded it to optimize true/false/nil/0-9/class/module, and added
handling of missing methods, refined methods, and RUBY_DEBUG.
This renames the tostring insn to anytostring, and adds an
objtostring insn that implements the optimization. This requires
making a few functions non-static, and adding some non-static
functions.
This disables 4 YJIT tests. Those tests should be reenabled after
YJIT optimizes the new objtostring insn.
Implements [Feature #13715]
Co-authored-by: Eric Wong <[email protected]>
Co-authored-by: Alan Wu <[email protected]>
Co-authored-by: Yusuke Endoh <[email protected]>
Co-authored-by: Koichi Sasada <[email protected]>
Notes:
Merged: https://github.com/ruby/ruby/pull/5002
Merged-By: jeremyevans <[email protected]>
|
|
Treats:
#<<
#>>
#to_s
Notes:
Merged-By: BurdetteLamar <[email protected]>
|
|
Treats:
#times
#round
#floor
#ceil
#truncate
::sqrt
Notes:
Merged-By: BurdetteLamar <[email protected]>
|
|
Treated:
#==
#<=>
#<
#<=
#>
#>=
#&
#|
#^
Notes:
Merged-By: BurdetteLamar <[email protected]>
|
|
Treated:
#+
#-
#*
#fdiv
#/
#div
#**
#[]
#digits
#upto
#downto
Notes:
Merged-By: BurdetteLamar <[email protected]>
|
|
Treats:
#allbits?
#anybits?
#nobits?
#succ
#pred
#chr`
#to_s
#+
#-
Notes:
Merged-By: BurdetteLamar <[email protected]>
|
|
This reverts commit fc456adc6a62d09b755243b8c8f190934b9965d6.
It broke the CI check.
https://github.com/ruby/ruby/runs/4207922247?check_suite_focus=true#step:3:4
```
numeric.c:3518: * 255.chr(Encoding::UTF_8) # => "ΓΏ"
Error: Process completed with exit code 1.
```
|
|
Treats:
#allbits?
#anybits?
#nobits?
#succ
#pred
#chr`
#to_s
#+
#-
Notes:
Merged-By: BurdetteLamar <[email protected]>
|
|
|
|
Treats:
#eql?
#<+>
#floor
#ceil
#round
#truncate
#step
Notes:
Merged-By: BurdetteLamar <[email protected]>
|
|
Notes:
Merged: https://github.com/ruby/ruby/pull/5027
|
|
Notes:
Merged: https://github.com/ruby/ruby/pull/5027
|
|
|
|
Treated:
#@-
#fdiv
#div
#abs
#zero?
#nonzero?
#to_int
#positive?
#negative?
Notes:
Merged-By: BurdetteLamar <[email protected]>
|
|
Treats:
Numeric#coerce
Numeric#clone
Numeric#dup
Numeric#@+ (unary plus)
Numeric#i
Float#coerce
Notes:
Merged-By: BurdetteLamar <[email protected]>
|
|
Treats Numeric#remainder and Integer#remainder.
Notes:
Merged-By: BurdetteLamar <[email protected]>
|
|
Treats:
Integer#divmod
Float#divmod
Numeric#divmod
Notes:
Merged-By: BurdetteLamar <[email protected]>
|
|
Treats Integer#% and Float#%.
Notes:
Merged-By: BurdetteLamar <[email protected]>
|
|
Notes:
Merged-By: BurdetteLamar <[email protected]>
|
|
Notes:
Merged: https://github.com/ruby/ruby/pull/4926
|
|
Notes:
Merged: https://github.com/ruby/ruby/pull/4837
Merged-By: nobu <[email protected]>
|
|
Notes:
Merged: https://github.com/ruby/ruby/pull/4821
|
|
Notes:
Merged: https://github.com/ruby/ruby/pull/4816
|
|
Notes:
Merged: https://github.com/ruby/ruby/pull/4806
|
|
Notes:
Merged: https://github.com/ruby/ruby/pull/4805
|
|
|
|
Notes:
Merged: https://github.com/ruby/ruby/pull/4783
|
|
rb_num_negative_int_p is equivalent to calling the "<" method on
Integer (and checking whether it is overridden), where in this case we
are interested in whether the "actual" value can fit inside an unsigned
int.
This also was slow because rb_num_negative_int_p calls
rb_method_basic_definition_p, doing a method lookup to check for < being
overridden.
This replaces the check in both rb_fix2uint and rb_fix2ushort with FIXNUM_NEGATIVE_P which simply checks
whether the VALUE is signed.
Notes:
Merged: https://github.com/ruby/ruby/pull/4747
|
|
ndigits higher than 14 can result in values that are slightly too
large due to floating point limitations. Converting to rational
for the calculation and then back to float fixes these issues.
Fixes [Bug #14635]
Fixes [Bug #17183]
Co-authored by: Yusuke Endoh <[email protected]>
Notes:
Merged: https://github.com/ruby/ruby/pull/4682
|
|
Notes:
Merged: https://github.com/ruby/ruby/pull/4695
Merged-By: nobu <[email protected]>
|
|
This speeds up performance by multiple orders of magnitude for
large integers.
Fixes [Bug #14391]
Co-authored-by: tompng (tomoya ishida) <[email protected]>
Notes:
Merged: https://github.com/ruby/ruby/pull/4584
|
|
The previous implementation could result in a returned
float that is 1/(10**ndigits) too low. First try adding
one before dividing, and if that results in a value that is
greater than the initial number, then try the original
calculation.
Spec added for ciel, but the issue doesn't appear to affect
ciel, at least not for the same number. If the issue does
effect ciel, a similar fix could probably work for it.
Fixes [Bug #18018]
Notes:
Merged: https://github.com/ruby/ruby/pull/4681
|
|
Notes:
Merged: https://github.com/ruby/ruby/pull/4654
|
|
|
|
* Improve perfomance for Integer#size method [Feature #17135]
* re-run ci
* Let MJIT frame skip work for Integer#size
Co-authored-by: Takashi Kokubun <[email protected]>
Notes:
Merged-By: k0kubun <[email protected]>
|
|
Depending on the float range, there could be an off-by-one error,
where the last result that should be in the range was missed. Fix
this by checking if the computed value for the expected value
outside the range is still inside the range, and if so, increment
the step size.
Fixes [Bug #16612]
Notes:
Merged: https://github.com/ruby/ruby/pull/4434
|
|
Notes:
Merged-By: k0kubun <[email protected]>
|