Граф коммитов

1031 Коммитов

Автор SHA1 Сообщение Дата
Alan Wu c416dbb3c7 Add missing write barriers to Array#replace
Previously it made object references without using write barriers,
creating GC inconsistencies.

See: http://ci.rvm.jp/results/trunk-gc-asserts@phosphorus-docker/3925529
2022-04-28 11:31:22 -04:00
Burdette Lamar de5aa98f39
Correct whitespace in array.c (#5791) 2022-04-11 15:23:25 -05:00
Burdette Lamar c789bdd311
[DOC] Enhanced RDoc for Array intro (#5781)
This covers the first few sections of the class doc for Array.
2022-04-10 08:33:49 -05:00
Nobuyoshi Nakada 300f4677c9
[DOC] Use simple references to operator methods
Method references is not only able to be marked up as code, also
reflects `--show-hash` option.
The bug that prevented the old rdoc from correctly parsing these
methods was fixed last month.
2022-03-26 21:13:16 +09:00
Burdette Lamar 1a002d9ade
Fix formatting errors in What's Here for Array, Hash, ENV (#5718) 2022-03-25 13:48:21 -05:00
Burdette Lamar f918f6e4e7
[DOC] Repair format and links in What's Here sections (#5711)
* Repair format and links in What's Here for Comparable and Array

* Repair format for What's Here in enum.c
2022-03-25 10:52:06 -05:00
Peter Zhu a51f30c671 [Feature #18634] Implement Arrays on Variable Width Allocation
This commit implements arrays on Variable Width Allocation. This allows
longer arrays to be embedded (i.e. contents directly follow the object
header) which improves performance through better cache locality.
2022-03-22 09:42:39 -04:00
Peter Zhu 412991268f Assume that refcnt of shared root is non-negative
The refcnt of a shared root array should always be non-negative.
2022-03-14 09:45:24 -04:00
Peter Zhu 45786667ec Assume that shared_root exists in rb_ary_decrement_share
All callers of rb_ary_decrement_share guarantee that
shared_root is not 0.
2022-03-14 09:45:18 -04:00
Peter Zhu 06594e7134 Fix crash on GC stress and RGENGC_CHECK_MODE=2
rb_ary_reset could leave the array in a bad state since it frees memory
but does not unset any flags. This can cause a crash on GC stress. This
commit changes rb_ary_reset to set the array as an empty embedded array.
2022-03-12 12:15:24 -05:00
Peter Zhu 9a4bddd761 Add rb_ary_reset
rb_ary_reset will free heap allocated arrays and unshare shared arrays.
2022-03-11 13:16:29 -05:00
Peter Zhu 42e5ec9414 Refactor duplicate code in rb_array_replace
In both cases in the if statement, we free heap allocated arrays and
unshare shared arrays.
2022-03-11 11:45:14 -05:00
Peter Zhu c445963575 Use rb_ary_unshare for shared array in rb_ary_replace
rb_ary_unshare will perform FL_UNSET_SHARED and
rb_ary_decrement_share.
2022-03-07 09:37:49 -05:00
Rogerio Bordignon 832252794e Doc: fix documentation typo for Array#min 2022-03-03 19:18:36 +01:00
Vivek Bharath Akupatni 11bcc0d9d6
[DOC] Fix documentation for Array#delete
Never returns self.
2022-03-01 09:46:22 +09:00
Peter Zhu 651b2e5959 Use rb_ary_behead for rb_ary_shift
rb_ary_shift is just a special case of rb_ary_behead where we behead
only 1 element.
2022-02-23 09:13:04 -05:00
Peter Zhu 26187a8520 Use RARRAY_SHARED_ROOT_FLAG for checking re-enter
RARRAY_SHARED_ROOT_FLAG is defined as FL_USER5, but we should use
RARRAY_SHARED_ROOT_FLAG instead of depending on that they're equal.
2022-02-14 09:35:54 -05:00
Nobuyoshi Nakada 50c972a1ae
[DOC] Simplify operator method references 2022-02-12 12:38:36 +09:00
Burdette Lamar 85ad8c65ca
[DOC] Adjustments to links in array.c (#5532)
Mostly suppressing links to itself.
2022-02-08 08:51:39 -06:00
Nobuyoshi Nakada 16fdc1ff46
[DOC] Fix broken links to literals.rdoc 2022-02-08 01:27:52 +09:00
Nobuyoshi Nakada bc5662d9d8
[DOC] Simplify links to global methods 2022-02-08 01:18:56 +09:00
Peter Zhu a32e5e1b97 [DOC] Use RDoc link style for links in the same class/module
I used this regex:

(?<=\[)#(?:class|module)-([A-Za-z]+)-label-([A-Za-z0-9\-\+]+)

And performed a global find & replace for this:

rdoc-ref:$1@$2
2022-02-07 09:52:06 -05:00
Peter Zhu f9a2802bc5 [DOC] Use RDoc link style for links to other classes/modules
I used this regex:

([A-Za-z]+)\.html#(?:class|module)-[A-Za-z]+-label-([A-Za-z0-9\-\+]+)

And performed a global find & replace for this:

rdoc-ref:$1@$2
2022-02-07 09:52:06 -05:00
Burdette Lamar 28fb6d6b9e
Adding links to literals and Kernel (#5192)
* Adding links to literals and Kernel
2021-12-03 07:12:28 -06:00
Koichi Sasada a24eeee556 Use `Primitive.mandatory_only?` for `Array#sample` 2021-11-15 15:58:56 +09:00
Peter Zhu aeae6e2842 [Feature #18290] Remove all usages of rb_gc_force_recycle
This commit removes usages of rb_gc_force_recycle since it is a burden
to maintain and makes changes to the GC difficult.
2021-11-08 14:05:54 -05:00
180909 724c657700
Remove repeated 'the' (#4966) 2021-10-13 23:05:44 -07:00
S.H dc9112cf10
Using NIL_P macro instead of `== Qnil` 2021-10-03 22:34:45 +09:00
Nobuyoshi Nakada a27c274f04
[DOC] Fix broken links [ci skip]
* As the "doc/" prefix is specified by the `--page-dir` option,
  remove from the rdoc references.
* Refer to the original .rdoc instead of the converted .html.
2021-09-15 14:16:14 +09:00
Burdette Lamar 1af5a0c574
Bsearch doc for Array and Range (#4838)
This PR creates doc/bsearch.rdoc to provide common documentation for bsearch in Array and Range.
2021-09-14 16:08:21 -05:00
S-H-GAMELINKS 032534dbdf Using RB_BIGNUM_TYPE_P macro 2021-09-11 09:13:24 +09:00
卜部昌平 ce54282b75 include/ruby/internal/intern/array.h: add doxygen
Must not be a bad idea to improve documents. [ci skip]
2021-09-10 20:00:06 +09:00
Aaron Patterson cd4f5b1322
Guard array when appending
This prevents early collection of the array.  The GC doesn't see the
array on the stack when Ruby is compiled with optimizations enabled

[ruby-core:105099] [Bug #18140]
2021-09-02 01:22:19 +09:00
universato b6691e9737 Fix a code in the Array#min documentation. 2021-08-31 20:56:52 +09:00
Mike Dalessio d43279edac Fix length calculation for Array#slice!
Commit 4f24255 introduced a bug which allows a length to be passed to
rb_ary_new4 which is too large, resulting in invalid memory access.

For example:

    (1..1000).to_a.slice!(-2, 1000)
2021-08-29 09:41:22 +09:00
S.H 378e8cdad6
Using RBOOL macro 2021-08-02 12:06:44 +09:00
Koichi Sasada fa0279d947 should not share same `def` for specialized method
Because the key of redefine table is `def`, `def` should be
unique for each optimized method (`alias` is not allowed).
2021-07-29 00:56:48 +09:00
Burdette Lamar c1741df1a1 What's Here for Numeric and Comparable 2021-06-21 10:38:16 -07:00
Nobuyoshi Nakada e4f891ce8d
Adjust styles [ci skip]
* --braces-after-func-def-line
* --dont-cuddle-else
* --procnames-start-lines
* --space-after-for
* --space-after-if
* --space-after-while
2021-06-17 10:13:40 +09:00
Jeremy Evans 8b00bfb7c2
Do not allow array modifications after freeze inside sort!
If freezing an array inside sort!, previously the array could be
modified after the freeze.  This checks whether the receiver is
frozen after every yield and potential call to #> or #<,
preventing modifications if the receiver is frozen inside the
block or by the #> or #< call.

Fixes [Bug #17739]
2021-05-21 18:33:56 -07:00
Masataka Pocke Kuwabara e3e5596782 Fix example code in Array#max doc
`[0, 1, 2, 3].max(6)` actually returns `[3, 2, 1, 0]`, but the doc said
it returns `[3, 2, 1]`.
2021-05-08 09:41:08 -04:00
Peter Zhu 3ca291c9ae Correctly update array capacity after realloc
Reallocating to a smaller size in the transient heap may result in no
change in the actual capacity but the capacity of the array is still
updated to the smaller value.

This commit changes `ary_heap_realloc` to return the new capacity which
can be used by the caller to correctly update the capacity.
2021-05-04 11:46:23 -04:00
Yusuke Endoh fb04c69418
array.c (rb_ary_zip): take only as many as needed from an Enumerator (#4389)
[Bug #17814]
2021-04-21 13:02:29 +09:00
Travis Hunter 55d91a096a Add Array#intersect? 2021-04-16 16:06:36 +09:00
Nobuyoshi Nakada f46bbb2e99
[DOC] Improve an example of Array#count comparison [ci skip] 2021-03-29 11:35:38 +09:00
Kenichi Kamiya 813c3333a9 [Doc] Fix Array#count comparing strategy 2021-03-28 14:17:52 -04:00
Nobuyoshi Nakada e019dd24df
Ensure the receiver is modifiable before shrinking [Bug #17736]
* Ensure the receiver is modifiable before shinking [Bug #17736]

* Assert the receivers are not modified
2021-03-20 19:15:38 +09:00
Nobuyoshi Nakada e8b210542b
Define rb_to_array which converts with to_a 2021-02-12 12:15:57 +09:00
Nobuyoshi Nakada 947d93b715
[DOC] {Array,MatchData}#values_at understand ranges [ci skip] 2021-02-07 10:30:43 +09:00
Masaki Matsushita e1e61e256b Improve performance of Array#- when it is called with empty array
This change make Array#- return a copy of the receiver when
the other array is empty.
2021-02-06 17:23:16 +09:00