S-H-GAMELINKS
9db5d63ece
[DOC] Use oracle url instead of sun url
...
[ci skip]
2020-08-05 08:04:58 +09:00
Kazuhiro NISHIYAMA
946cd6c534
Use https instead of http
2020-07-28 19:51:54 +09:00
卜部昌平
802bcd3ec8
fix MJIT link error
2020-07-13 08:56:18 +09:00
卜部昌平
9721f477c7
inline Primitive.cexpr!
...
We can obtain the verbatim source code of Primitive.cexpr!. Why not
paste that content into the JITed program.
2020-07-13 08:56:18 +09:00
卜部昌平
de3e931df7
add UNREACHABLE_RETURN
...
Not every compilers understand that rb_raise does not return. When a
function does not end with a return statement, such compilers can issue
warnings. We would better tell them about reachabilities.
2020-06-29 11:05:41 +09:00
卜部昌平
03354feb6a
fix_pow: do not goto into a branch
...
I'm not necessarily against every goto in general, but jumping into a
branch is definitely a bad idea. Better refactor.
2020-06-29 11:05:41 +09:00
卜部昌平
250189f54f
int_pow: do not goto into a branch
...
I'm not necessarily against every goto in general, but jumping into a
branch is definitely a bad idea. Better refactor.
2020-06-29 11:05:41 +09:00
卜部昌平
bf19820bb3
flo_to_s: do not goto into a branch
...
I'm not necessarily against every goto in general, but jumping into a
branch is definitely a bad idea. Better refactor.
2020-06-29 11:05:41 +09:00
Takashi Kokubun
0703e01471
Mark some Integer methods as inline ( #3264 )
2020-06-27 10:07:47 -07:00
Takashi Kokubun
95b0fed371
Make Integer#zero? a separated method and builtin ( #3226 )
...
A prerequisite to fix https://bugs.ruby-lang.org/issues/15589 with JIT.
This commit alone doesn't make a significant difference yet, but I thought
this commit should be committed independently.
This method override was discussed in [Misc #16961 ].
2020-06-20 14:55:09 -07:00
S.H
eaf76be087
Remove unused else if statements in int_even_p func ( #3220 )
...
* remove else if & rb_funcall
* fix int_even_p impl
* fix rb_int_odd_p implementation
2020-06-16 10:13:54 -07:00
S.H
84160dc29b
Add static modifier for rb_int_ceil & rb_int_floor ( #3217 )
2020-06-16 17:47:59 +09:00
Yusuke Endoh
42abad2464
numeric.c: optimize `float ** 2` case by fastpath
...
It would be a relatively frequent case. It is still slower than
`float * float` because `*` has a dedicated VM instruction (opt_mult),
though.
2020-05-12 02:14:27 +09:00
卜部昌平
9e41a75255
sed -i 's|ruby/impl|ruby/internal|'
...
To fix build failures.
2020-05-11 09:24:08 +09:00
卜部昌平
d7f4d732c1
sed -i s|ruby/3|ruby/impl|g
...
This shall fix compile errors.
2020-05-11 09:24:08 +09:00
Nobuyoshi Nakada
5d430c1b34
Added more NORETURN declarations
2020-05-11 00:40:14 +09:00
Yusuke Endoh
1a4f33e84e
numeric.c: Remove unreachable code
...
b cannot be <= 0 here. Found by Coverity Scan
2020-04-09 09:14:02 +09:00
Nobuyoshi Nakada
11d5a8318d
Suppress C4244 "possible loss of data" warnings
2020-04-08 18:03:46 +09:00
Nobuyoshi Nakada
e474c189da
Suppress -Wswitch warnings
2020-04-08 15:13:37 +09:00
卜部昌平
9e6e39c351
Merge pull request #2991 from shyouhei/ruby.h
...
Split ruby.h
2020-04-08 13:28:13 +09:00
Nobuyoshi Nakada
5b287481be
Removed non-RUBY_INTEGER_UNIFICATION code
2020-03-21 16:59:55 +09:00
Jeremy Evans
ecef163cf9
Remove Float::ROUNDS
...
Fixes [Bug #16044 ]
2020-03-09 06:39:42 -07:00
Nobuyoshi Nakada
1ddc719a56
Check the encoding of `half:` option
2020-01-27 16:12:15 +09:00
卜部昌平
5e22f873ed
decouple internal.h headers
...
Saves comitters' daily life by avoid #include-ing everything from
internal.h to make each file do so instead. This would significantly
speed up incremental builds.
We take the following inclusion order in this changeset:
1. "ruby/config.h", where _GNU_SOURCE is defined (must be the very
first thing among everything).
2. RUBY_EXTCONF_H if any.
3. Standard C headers, sorted alphabetically.
4. Other system headers, maybe guarded by #ifdef
5. Everything else, sorted alphabetically.
Exceptions are those win32-related headers, which tend not be self-
containing (headers have inclusion order dependencies).
2019-12-26 20:45:12 +09:00
卜部昌平
0958e19ffb
add several __has_something macro
...
With these macros implemented we can write codes just like we can assume
the compiler being clang. MSC_VERSION_SINCE is defined to implement
those macros, but turned out to be handy for other places. The -fdeclspec
compiler flag is necessary for clang to properly handle __has_declspec().
2019-12-26 20:45:12 +09:00
卜部昌平
0e8219f591
make functions static
...
These functions are used from within a compilation unit so we can
make them static, for better binary size. This changeset reduces
the size of generated ruby binary from 26,590,128 bytes to
26,584,472 bytes on my macihne.
2019-11-19 12:36:19 +09:00
NARUSE, Yui
6aa80d5583
Use FIX2LONG instead of FIX2INT like 26843cbcd0
2019-11-07 18:53:51 +09:00
NARUSE, Yui
26843cbcd0
Use FIX2LONG to avoid unexpected exception
...
Though it won't happen in the real world in this context, FIX2INT may
raise an exception and it cause to generate extra code.
2019-11-07 18:50:35 +09:00
Nobuyoshi Nakada
59648af296
Suppress keyword argument warning from #step
...
* numeric.c (num_step): pass the extracted argument from keyword
argument, not the last argument itself which should have been
warned already.
2019-09-30 01:17:55 +09:00
Nobuyoshi Nakada
5decf66ab3
Inspect dynamic symbol as well as static symbol
2019-08-25 11:39:20 +09:00
Nobuyoshi Nakada
d69ffa4d93
Expanded f_quo
2019-08-10 14:38:30 +09:00
Nobuyoshi Nakada
e89d9f3deb
Deprecate Float::ROUNDS, which should not be a constant
...
[Bug #16044 ]
2019-08-07 00:02:45 +09:00
Nobuyoshi Nakada
4ea5c5610a
Predefine some IDs
2019-08-03 10:18:39 +09:00
Nobuyoshi Nakada
f9a0492b76
Expanded f_ceil
2019-08-02 11:26:58 +09:00
Nobuyoshi Nakada
a036a8a038
Adjust styles and indents
2019-07-19 06:35:15 +09:00
Yusuke Endoh
36f2d9bac2
numeric.c (fix_cmp): remove a unreachable return statement
2019-07-14 22:46:34 +09:00
git
9987296b8b
* expand tabs.
2019-07-14 17:16:35 +09:00
Yusuke Endoh
934e6b2aeb
Prefer `rb_error_arity` to `rb_check_arity` when it can be used
2019-07-14 17:16:19 +09:00
Yusuke Endoh
65e63af377
Make opt_aref instruction support Integer#[]
...
only when its receiver and the argument are both Integers.
Since 6bedbf4625
, Integer#[] has supported a range extraction.
This means that Integer#[] now accepts multiple arguments, which made
the method very slow unfortunately.
This change fixes the performance issue by adding a special handling for
its traditional use case: `num[idx]` where both `num` and `idx` are
Integers.
2019-06-01 13:15:43 +09:00
Hiroshi SHIBATA
b72623012d
Update broken URL in Float documentation.
...
[Misc #15775 ][ruby-core:92332]
2019-05-04 06:23:25 +09:00
git
555d1dda71
* expand tabs.
2019-04-28 23:42:46 +09:00
Yusuke Endoh
6bedbf4625
numeric.c: Extend Integer#[] to support range arguments
...
````
0b01001101[2, 4] #=> 0b0011
0b01001100[2..5] #=> 0b0011
0b01001100[2...6] #=> 0b0011
^^^^
````
[Feature #8842 ]
2019-04-28 23:40:57 +09:00
nobu
e5f01dab9d
numeric.c: fix infinite loop
...
* numeric.c (int_pow): fix infinite loop in the case of y equal 1
and power of x does not overflow.
[ruby-core:91734] [Bug #15651 ]
git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@67203 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2019-03-11 01:37:16 +00:00
mrkn
6f6cf042d2
enumerator.c: fix arith_seq_first for Infinity
...
* enumerator.c (arith_seq_first): fix for Float::INFINITY.
* test/ruby/test_arithmetic_sequence.rb: add tests.
* numeric.c (ruby_float_step_size): export for internal use.
* internal.h: add prototype declaration of ruby_float_step_size.
[ruby-core:90937][Bug #15518 ]
git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@66947 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2019-01-30 06:05:57 +00:00
svn
4bcfccddca
* expand tabs.
...
git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@66915 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2019-01-24 05:30:45 +00:00
mrkn
161ece4795
numeric.c: Fix negative step with float components
...
* numeric.c (ruby_float_step): fix negative step with float components.
* test/ruby/test_numeric.c (test_step_bug15537): add tests.
* test/ruby/test_range.c (test_step_bug15537): add tests.
[Bug #15537 ] [ruby-core:91101]
From: shuujii (Shuji KOBAYASHI) <shuujii@gmail.com>
git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@66914 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2019-01-24 05:30:42 +00:00
mrkn
fc9e0302ea
complex.c: optimize zero check for Float
...
git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@66758 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2019-01-09 07:05:37 +00:00
mrkn
673ff731c1
complex.c: Optimize Complex#* and Complex#**
...
Optimize f_mul for the core numeric class components.
This change improves the computation time of Complex#* and Complex#**.
```
$ make benchmark ITEM=complex_float_ COMPARE_RUBY=/Users/mrkn/.rbenv/versions/2.6.0/bin/ruby
generating known_errors.inc
known_errors.inc unchanged
/Users/mrkn/src/github.com/ruby/ruby/revision.h unchanged
/Users/mrkn/.rbenv/shims/ruby --disable=gems -rrubygems -I/Users/mrkn/src/github.com/ruby/ruby/benchmark/lib /Users/mrkn/src/github.com/ruby/ruby/benchmark/benchmark-driver/exe/benchmark-driver \
--executables="compare-ruby::/Users/mrkn/.rbenv/versions/2.6.0/bin/ruby -I.ext/common --disable-gem" \
--executables="built-ruby::./miniruby -I/Users/mrkn/src/github.com/ruby/ruby/lib -I. -I.ext/common -r/Users/mrkn/src/github.com/ruby/ruby/prelude --disable-gem" \
$(find /Users/mrkn/src/github.com/ruby/ruby/benchmark -maxdepth 1 -name '*complex_float_*.yml' -o -name '*complex_float_*.rb' | sort)
Calculating -------------------------------------
compare-ruby built-ruby
complex_float_add 6.558M 13.012M i/s - 1.000M times in 0.152480s 0.076850s
complex_float_div 576.821k 567.969k i/s - 1.000M times in 1.733640s 1.760660s
complex_float_mul 1.690M 2.628M i/s - 1.000M times in 0.591786s 0.380579s
complex_float_new 1.350M 1.268M i/s - 1.000M times in 0.740669s 0.788762s
complex_float_power 1.571M 1.835M i/s - 1.000M times in 0.636507s 0.544909s
complex_float_sub 8.635M 8.779M i/s - 1.000M times in 0.115814s 0.113906s
Comparison:
complex_float_add
built-ruby: 13012361.7 i/s
compare-ruby: 6558237.1 i/s - 1.98x slower
complex_float_div
compare-ruby: 576821.0 i/s
built-ruby: 567968.8 i/s - 1.02x slower
complex_float_mul
built-ruby: 2627575.4 i/s
compare-ruby: 1689800.0 i/s - 1.55x slower
complex_float_new
compare-ruby: 1350130.8 i/s
built-ruby: 1267809.6 i/s - 1.06x slower
complex_float_power
built-ruby: 1835168.8 i/s
compare-ruby: 1571074.6 i/s - 1.17x slower
complex_float_sub
built-ruby: 8779168.8 i/s
compare-ruby: 8634534.7 i/s - 1.02x slower
```
git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@66697 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2019-01-03 06:19:17 +00:00
mrkn
5f90845420
complex.c: Optimize Complex#+ for some conditions
...
Optimize f_add defined in complex.c for some specific conditions.
It makes Complex#+ about 1.4x faster than r66678.
Compared to r66678:
```
mrkn-mbp15-late2016:complex-optim-o3 mrkn$ make benchmark ITEM=complex_float_ COMPARE_RUBY=/Users/mrkn/.rbenv/versions/trunk-o3/bin/ruby
/Users/mrkn/src/github.com/ruby/ruby/revision.h unchanged
/Users/mrkn/.rbenv/shims/ruby --disable=gems -rrubygems -I/Users/mrkn/src/github.com/ruby/ruby/benchmark/lib /Users/mrkn/src/github.com/ruby/ruby/benchmark/benchmark-driver/exe/benchmark-driver \
--executables="compare-ruby::/Users/mrkn/.rbenv/versions/trunk-o3/bin/ruby -I.ext/common --disable-gem" \
--executables="built-ruby::./miniruby -I/Users/mrkn/src/github.com/ruby/ruby/lib -I. -I.ext/common -r/Users/mrkn/src/github.com/ruby/ruby/prelude --disable-gem" \
$(find /Users/mrkn/src/github.com/ruby/ruby/benchmark -maxdepth 1 -name '*complex_float_*.yml' -o -name '*complex_float_*.rb' | sort)
Calculating -------------------------------------
compare-ruby built-ruby
complex_float_add 9.132M 12.864M i/s - 1.000M times in 0.109511s 0.077734s
complex_float_div 600.723k 627.878k i/s - 1.000M times in 1.664662s 1.592666s
complex_float_mul 2.320M 2.347M i/s - 1.000M times in 0.431039s 0.426113s
complex_float_new 1.473M 1.489M i/s - 1.000M times in 0.678791s 0.671750s
complex_float_power 1.690M 1.722M i/s - 1.000M times in 0.591863s 0.580775s
complex_float_sub 8.870M 9.516M i/s - 1.000M times in 0.112740s 0.105091s
Comparison:
complex_float_add
built-ruby: 12864383.7 i/s
compare-ruby: 9131502.8 i/s - 1.41x slower
complex_float_div
built-ruby: 627878.0 i/s
compare-ruby: 600722.5 i/s - 1.05x slower
complex_float_mul
built-ruby: 2346795.3 i/s
compare-ruby: 2319975.7 i/s - 1.01x slower
complex_float_new
built-ruby: 1488649.1 i/s
compare-ruby: 1473207.5 i/s - 1.01x slower
complex_float_power
built-ruby: 1721837.2 i/s
compare-ruby: 1689580.2 i/s - 1.02x slower
complex_float_sub
built-ruby: 9515562.7 i/s
compare-ruby: 8869966.3 i/s - 1.07x slower
```
git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@66681 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2019-01-01 12:20:05 +00:00
nobu
dc8afd385d
complex.c: rb_complex_new_polar
...
* complex.c (rb_complex_new_polar): renamed with _new to clarify
that it creates a new instance, but is not an instance method.
* complex.c (rb_complex_polar): deprecated.
git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@66359 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2018-12-12 11:06:47 +00:00