Commit graph

551 commits

Author SHA1 Message Date
usa
6e103e8412 merge revision(s) 47896: [Backport #10369]
* array.c (ary_recycle_hash): add RB_GC_GUARD
	  (rb_ary_diff): remove volatile
	  [Bug #10369]


git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/branches/ruby_2_0_0@47936 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2014-10-15 07:19:49 +00:00
usa
172cc121b9 merge revision(s) 47683: [Backport #10281]
array.c: GC guard

	* array.c (rb_ary_splice): prevent replacing array from GC.

git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/branches/ruby_2_0_0@47930 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2014-10-15 06:55:27 +00:00
usa
bea02d1b35 merge revision(s) 46417,46418: [Backport #9939]
* array.c (yield_indexed_values): extract from permute0(),
	  rpermute0(), and rcombinate0().

	* array.c (rb_ary_combination): iterate on a shared copy, and use
	  array of indexes instead of array of chosen objects.
	  [ruby-core:63149] [Bug #9939]


git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/branches/ruby_2_0_0@47332 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2014-08-31 06:56:43 +00:00
usa
1abe5c8d41 merge revision(s) 46416: [Backport #9942]
* array.c (rb_ary_permutation): `p` is the array of size `r`, as
	  commented at permute0().  since `n >= r` here, buffer overflow
	  never happened, just reduce unnecessary allocation though.


git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/branches/ruby_2_0_0@47331 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2014-08-31 06:30:50 +00:00
usa
05ebc662fb merge revision(s) 45562: [Backport #9727]
* array.c (ary_reject): may be turned into a shared array during
	  the given block.  [ruby-dev:48101] [Bug #9727]


git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/branches/ruby_2_0_0@46155 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2014-05-27 02:52:49 +00:00
nagachika
0a57e6c975 merge revision(s) 42040,42041,42047: [Backport #8654]
* array.c (rb_ary_count): iterate items appropriately.
	  [Bug #8654]

	* array.c (rb_ary_count): check length to avoid SEGV
	  while iterating. Remove other pointer loop when arg is given.

	* test/ruby/test_array.rb (test_count): add test for bug.
	  [ruby-core:56072] [Bug #8654]

	* test/ruby/test_array.rb (test_count): add a test case for #count
	  with an argument. See Bug #8654.


git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/branches/ruby_2_0_0@43228 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2013-10-09 16:04:12 +00:00
nagachika
9f110100be merge revision(s) 41593:
* array.c: Return value in Array overview example found by @PragTob
	  [Fix GH-336] https://github.com/ruby/ruby/pull/336


git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/branches/ruby_2_0_0@41606 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2013-06-24 15:12:30 +00:00
nagachika
80a83ca64f merge revision(s) 41592:
* array.c (rb_ary_zip): typo by @PragTob [Fix GH-337]
	  https://github.com/ruby/ruby/pull/337


git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/branches/ruby_2_0_0@41605 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2013-06-24 15:12:02 +00:00
nagachika
1ef4fecd63 merge revision(s) 41245: [Backport #8513]
* array.c (FL_SET_EMBED): shared object is frozen even when get
	  unshared.

	* array.c (rb_ary_modify): ARY_SET_CAPA needs unshared array.


git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/branches/ruby_2_0_0@41323 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2013-06-15 17:14:53 +00:00
nagachika
555035a349 merge revision(s) 40208: [Backport #8380]
* internal.h (MUL_OVERFLOW_SIGNED_INTEGER_P): New macro.
	  (MUL_OVERFLOW_FIXNUM_P): Ditto.
	  (MUL_OVERFLOW_LONG_P): Ditto.

	* array.c (rb_ary_product): Don't overflow on signed integer
	  multiplication.

	* numeric.c (fix_mul): Ditto.
	  (int_pow): Ditto.

	* rational.c (f_imul): Ditto.

	* insns.def (opt_mult): Ditto.

	* thread.c (sleep_timeval): Don't overflow on signed integer addition.

	* bignum.c (rb_int2big): Don't overflow on signed integer negation.
	  (rb_big2ulong): Ditto.
	  (rb_big2long): Ditto.
	  (rb_big2ull): Ditto.
	  (rb_big2ll): Ditto.


git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/branches/ruby_2_0_0@40602 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2013-05-07 16:49:01 +00:00
nagachika
6fd0dac2fa merge revision(s) 40455:
* array.c: Improve rdoc for eql?

git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/branches/ruby_2_0_0@40467 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2013-04-25 13:18:38 +00:00
nagachika
5a34781bd3 merge revision(s) 40274:
* array.c: rdoc tweak for include?

git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/branches/ruby_2_0_0@40279 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2013-04-13 13:40:59 +00:00
nagachika
ff1bd2ba57 merge revision(s) 39785: [Backport #8108]
* array.c: fix rdoc. [ruby-core:53485] [ruby-trunk - Bug #8108]

git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/branches/ruby_2_0_0@40167 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2013-04-06 17:51:14 +00:00
nagachika
9fcf2f8f4b merge revision(s) 39418:
* array.c: Document #<=> return values and formatting

	* bignum.c: ditto

	* file.c: ditto

	* object.c: ditto

	* numeric.c: ditto

	* rational.c: ditto

	* string.c: ditto

	* time.c: ditto


git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/branches/ruby_2_0_0@39666 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2013-03-09 13:52:22 +00:00
nagachika
79b2fb0559 merge revision(s) 39415:
* array.c (rb_ary_diff, rb_ary_and, rb_ary_or): Document return order
	  [RubySpec #7803]


git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/branches/ruby_2_0_0@39664 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2013-03-09 13:45:43 +00:00
nagachika
b025b119c9 merge revision(s) 39322:
* array.c: Fix typo in class documentation

git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/branches/ruby_2_0_0@39586 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2013-03-04 15:38:20 +00:00
zzak
42142d434f * object.c: rdoc formatting for Kernel#Array() [Backport #7931]
* array.c: Add rdoc for Array() method to Creating Arrays section


git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/branches/ruby_2_0_0@39454 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2013-02-24 04:45:37 +00:00
marcandre
45c33f5e8d * backport r39442 from trunk:
* array.c: Fix rdoc for flatten!

    * hash.c: Correct rdoc for reject!

git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/branches/ruby_2_0_0@39443 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2013-02-23 20:18:35 +00:00
usa
450a515e95 * array.c (rb_ary_dup): reverted r39004. see [Bug #7768], and the
release manager finailly decided to revert it.


git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@39157 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2013-02-08 10:58:35 +00:00
charliesome
86aa98fed4 * array.c (rb_ary_dup): make returned array the same class as the original
array [Bug #7768] [ruby-core:51792]
* test/ruby/test_array.rb (class TestArray): add test

git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@39004 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2013-02-01 14:05:49 +00:00
marcandre
69adf990e1 * array.c (rb_ary_bsearch): Fix r38986 (typo) [Bug #7726]
* range.c (range_bsearch): ditto

git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@38988 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2013-01-30 06:07:29 +00:00
marcandre
a7938af19c * array.c (rb_ary_bsearch): Fix r38986 (missing whitespace)
* range.c (range_bsearch): ditto

git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@38987 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2013-01-30 06:01:40 +00:00
marcandre
20c0fb69d6 * array.c (rb_ary_bsearch): Raise TypeError on bad return from block
* range.c (range_bsearch): ditto

* test/ruby/test_array.rb (class): Test for above

* test/ruby/test_range.rb (class): ditto

git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@38986 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2013-01-30 06:00:24 +00:00
marcandre
39048aca75 * array.c (rb_ary_bsearch): Return enumerator if no block [#7725]
* range.c (range_bsearch): ditto

* test/ruby/test_array.rb: Test for above

* test/ruby/test_range.rb: ditto

git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@38984 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2013-01-30 05:11:03 +00:00
eregon
d5b7fc432f * array.c: Improve documentation about
comparison by hash for concerned methods. [ruby-core:51266]

git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@38974 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2013-01-29 10:32:27 +00:00
marcandre
96af5360a4 * enum.c (enum_zip): Fix error message
* array.c (take_items): Same, for Array#zip
  [Bug #7706]

git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@38927 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2013-01-24 07:51:05 +00:00
nobu
be7bf5aa0c adjust style
git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@38654 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2012-12-29 12:22:04 +00:00
ko1
f6f388a5bd * array.c, enum.c, insns.def, io.c, numeric.c, parse.y, process.c,
range.c: use prepared IDs.
  A patch from charliesome (Charlie Somerville).
  [Bug #7495]
* common.mk: add dependency to id.h.
* common.mk: replace ID_H_INCLUDES with id.h.



git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@38143 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2012-12-02 09:57:47 +00:00
nobu
66fd9d44d8 adjust style.
git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@38128 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2012-12-01 15:25:28 +00:00
marcandre
5768a4a7e0 * array.c: Fix rdoc for Array#delete [#7437]
git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@37872 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2012-11-26 20:14:49 +00:00
shirosaki
56132b1346 array.c: refactoring of rb_ary_delete_same()
* array.c (ary_resize_smaller): new function to resize array.

* array.c (rb_ary_delete): refactoring to extract a function.

* array.c (rb_ary_delete_same): refactoring.
  It renames function, reduces duplicated code and removes unused
  code.

* gc.c (wmap_final_func): follow the above change.

* internal.h (rb_ary_delete_same): ditto.

git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@37843 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2012-11-25 13:39:26 +00:00
eregon
0012b0abd7 * array.c: fixes for the updated documentation in r35858:
Typos and #take/#drop accept to take/drop 0 elements.

git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@37842 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2012-11-25 13:28:59 +00:00
shirosaki
1cdeab5cdd Fix WeakRef finalize
* array.c (rb_ary_delete_same_obj): new function for WeakRef.
  This deletes same objects as item argument in the array.

* internal.h (rb_ary_delete_same_obj): add a declaration.

* gc.c (wmap_final_func): remove WeakRef object reference from the
  array. rb_ary_delete() is not usable because it uses rb_equal() to
  compare object references.

* gc.c (wmap_finalize): remove recycled object references from weak
  map hash properly. How to get object reference from object id was
  wrong. st_delete() doesn't work properly if key and value arguments
  are same. The key of obj2wmap is referenced object and the value of
  obj2wmap is WeakRef array.

* gc.c (wmap_aset): obj2wmap should contain WeakRef array in the
  definition.

* test/test_weakref.rb
  (TestWeakRef#test_not_reference_different_object,
   TestWeakRef#test_weakref_finalize): add tests for above.
  [ruby-core:49044] [Bug #7304]

git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@37834 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2012-11-24 12:26:54 +00:00
shirosaki
005986bd44 Fix Segmentation fault at TestArray#test_aref
* array.c (rb_ary_aref): fix Segmentation fault at TestArray#test_aref
  on x64 mingw. Variable argument of rb_scan_args() should be a pointer
  (VALUE *), but 0 of variable argument seems not equal to null pointer
  on x64 mingw.

git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@37828 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2012-11-24 04:01:40 +00:00
shirosaki
97ecab7b34 Fix cache validity check of require
* array.c (rb_ary_shared_with_p): fix cache validity check.
  If #pop or #shift has been called against $: or $", the array will
  be still shared with the snapshot. We check array length for cache
  validity.
  [ruby-core:49518] [Bug #7383]

* test/ruby/test_require.rb
  (TestRequire#test_require_with_array_pop,
   TestRequire#test_require_with_array_shift): add tests for above.

git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@37808 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2012-11-22 14:55:32 +00:00
marcandre
aa58a684b7 * array.c (rb_get_values_at): Improve rdoc
git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@37770 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2012-11-20 15:03:52 +00:00
mame
4c37c520e2 * array.c (rb_ary_bsearch): fix rdoc bug (O(n log n) -> O(log n)).
Patch by Charlie Somerville.  [ruby-core:49661] [Bug #7409]

* range.c (range_bsearch): ditto.

git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@37755 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2012-11-20 11:13:45 +00:00
mame
412b023742 * range.c (range_bsearch): fix some bugs: a documentation bug, a wrong
condition, missed break in switch/case, and workaround for GCC
  optimization. See [ruby-core:49364] in detail.  A great patch from
  Heesob Park. [Bug #7352] [Feature #4766]

* array.c (rb_ary_bsearch): fix similar bug (missed break).

* test/ruby/test_range.rb: add two test cases for above.

git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@37662 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2012-11-15 13:50:55 +00:00
mame
de07850e47 * array.c (rb_ary_bsearch): add Array#bsearch for binary search.
[ruby-core:36390] [Feature #4766]

* test/ruby/test_array.rb: add a test for above.

* range.c (range_bsearch): add Range#bsearch for binary search.
  [ruby-core:36390] [Feature #4766]

* test/ruby/test_range.rb: add a test for above

* NEWS: added the two new methods.

git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@37655 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2012-11-14 15:53:50 +00:00
tenderlove
4c740bae97 * probes.d: add DTrace probe declarations. [ruby-core:27448]
* array.c (empty_ary_alloc, ary_new): added array create DTrace probe.

* compile.c (rb_insns_name): allowing DTrace probes to access
  instruction sequence name.

* Makefile.in: translate probes.d file to appropriate header file.

* common.mk: declare dependencies on the DTrace header.

* configure.in: add a test for existence of DTrace.

* eval.c (setup_exception): add a probe for when an exception is
  raised.

* gc.c: Add DTrace probes for mark begin and end, and sweep begin and
  end.

* hash.c (empty_hash_alloc): Add a probe for hash allocation.

* insns.def: Add probes for function entry and return.

* internal.h: function declaration for compile.c change.

* load.c (rb_f_load): add probes for `load` entry and exit, require
  entry and exit, and wrapping search_required for load path search.

* object.c (rb_obj_alloc): added a probe for general object creation.

* parse.y (yycompile0): added a probe around parse and compile phase.

* string.c (empty_str_alloc, str_new): DTrace probes for string
  allocation.

* test/dtrace/*: tests for DTrace probes.

* vm.c (vm_invoke_proc): add probes for function return on exception
  raise, hash create, and instruction sequence execution.

* vm_core.h: add probe declarations for function entry and exit.

* vm_dump.c: add probes header file.

* vm_eval.c (vm_call0_cfunc, vm_call0_cfunc_with_frame): add probe on
  function entry and return.

* vm_exec.c: expose instruction number to instruction name function.

* vm_insnshelper.c: add function entry and exit probes for cfunc
  methods.

* vm_insnhelper.h: vm usage information is always collected, so
  uncomment the functions.

12 19:14:50 2012  Akinori MUSHA  <knu@iDaemons.org>

* configure.in (isinf, isnan): isinf() and isnan() are macros on
  DragonFly which cannot be found by AC_REPLACE_FUNCS().  This
  workaround enforces the fact that they exist on DragonFly.

12 15:59:38 2012  Shugo Maeda  <shugo@ruby-lang.org>

* vm_core.h (rb_call_info_t::refinements), compile.c (new_callinfo),
  vm_insnhelper.c (vm_search_method): revert r37616 because it's too
  slow.  [ruby-dev:46477]

* test/ruby/test_refinement.rb (test_inline_method_cache): skip
  the test until the bug is fixed efficiently.

git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@37631 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2012-11-12 21:52:12 +00:00
naruse
efeee7afa9 * array.c (rb_ary_splice): fix r37583 doesn't condier the case when
beg > array length.

git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@37588 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2012-11-09 11:04:05 +00:00
nobu
fdbd371678 array.c: speedup Array#unshift by using space in shared array
* array.c: speedup Array#unshift by using space in shared array.
  [Feature #6638]
  - when array owns its shared array (ARY_SHARED_NUM == 1), and there
    is enough space then try unshift values directly into shared
    array.
  - when resulting array is big (~>64 items) then make it shared with
    enough room for future #unshifts, and then insert into shared
    array.

git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@37584 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2012-11-09 07:08:50 +00:00
nobu
aaa9cb1ab4 array.c: use shared array in rb_ary_slice
* array.c (rb_ary_splice): use shared array in rb_ary_slice.
  [Feature #6638]
  - use ary_ensure_room_for_push when rb_ary_slice used to add at the
    end of array, cause rb_ary_concat use rb_ary_slice.

git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@37583 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2012-11-09 07:08:45 +00:00
nobu
b11975dfe0 array.c: make array really suitable for queue
* array.c (ary_ensure_room_for_push): make array really suitable for
  queue.  [Feature #6638]
  when array is shared (which happens after Array#shift), and
  ARY_SHARED_NUM == 1 (which is very often when array used as queue),
  then make rb_ary_push push directly into shared array.

git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@37582 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2012-11-09 07:08:42 +00:00
nobu
06de286c68 array.c: steal shared array's container when ARY_SHARED_NUM == 1
* array.c (rb_ary_modify): steal shared array's container when
  ARY_SHARED_NUM == 1.  [Feature #6638]
  - Do not allocate new memory in rb_ary_modify when ARY_SHARED_NUM == 1
    and length almost same.
  - Store ARY_CAPA instead of RARRAY_LEN in ary_make_shared, to make
    it useful.
  - Fix rb_ary_sort_bang accordantly.

git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@37581 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2012-11-09 07:08:38 +00:00
marcandre
bc63449331 * array.c: Fix mistake in rdoc of Array#uniq.
git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@37542 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2012-11-07 19:45:59 +00:00
marcandre
b8b01ab995 * array.c (rb_ary_cycle): Support for Array#cycle.size
[Feature #6636]

git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@37505 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2012-11-06 17:12:05 +00:00
marcandre
ba59365db9 * array.c (rb_ary_repeated_combination): Support for repeated_combination.size
[Feature #6636]

git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@37504 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2012-11-06 17:11:51 +00:00
marcandre
68c90c4a2d * array.c (rb_ary_repeated_permutation): Support for repeated_permutation.size
[Feature #6636]

git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@37503 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2012-11-06 17:11:36 +00:00
marcandre
6bbf668d6e * array.c (rb_ary_combination): Support for Array#combination.size
[Feature #6636]

git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@37502 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2012-11-06 17:11:21 +00:00