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

33269 Коммитов

Автор SHA1 Сообщение Дата
ko1 b848aad5bf * gc.c (gc_profile_dump_on): use "Page" terminology.
git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@43428 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2013-10-26 05:35:43 +00:00
ko1 d03912898e * gc.c (gc_sweep, gc_heap_lazy_sweep): fix measurement code.
We only need one sweep time measurement without lazy sweep.



git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@43427 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2013-10-26 04:31:10 +00:00
akr fdf7b4586f * addr2line.c: Include ELF header after system headers (especially
sys/types.h) to avoid compilation failure,
  "usr/include/sh3/elf_machdep.h:4:2: error: #error Define _BYTE_ORDER!",
  on NetBSD/sh3 (dreamcast, hpcsh, landisk, mmeye).



git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@43426 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2013-10-26 03:04:27 +00:00
ko1 286d567bbf * gc.c: tuning parameters.
* gc.c (GC_MALLOC_LIMIT): change default value to 16MB.
* gc.c (GC_MALLOC_LIMIT_GROWTH_FACTOR): change default value to 2.0.
* gc.c (gc_before_sweep): change decrease ratio of `malloc_limit'
  from 1/4 to 1/10.



git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@43425 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2013-10-26 02:46:30 +00:00
ko1 6c458aec30 * gc.c (vm_malloc_increase): do gc_rest_sweep() before GC.
gc_rest_sweep() can reduce malloc_increase, so try it before GC.
  Otherwise, malloc_increase can be less than malloc_limit at
  gc_before_sweep(). This means that re-calculation of malloc_limit
  may be wrong value.



git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@43424 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2013-10-26 02:34:23 +00:00
tarui 59735e2c61 * gc.c (gc_before_heap_sweep): Restructure code to mean clearly.
heap->freelist is connected to end of list.


git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@43423 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2013-10-25 21:37:39 +00:00
svn 7518f59cbe * 2013-10-26
git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@43422 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2013-10-25 19:09:19 +00:00
ko1 98feb2b9bf * gc.c (gc_before_heap_sweep): fix freelist management.
After rb_gc_force_recycle() for a object blonging to heap->freelist,
  `heap->using_page->freelist' is not null.



git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@43421 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2013-10-25 19:09:14 +00:00
nobu a2231670d6 range.c: fix int and VALUE
* range.c (SET_EXCL): set boolean always.

* range.c (range_init): fix int flag and boolean VALUE.

git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@43420 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2013-10-25 06:57:20 +00:00
nobu a6d095bd22 range.c: setter macros
* range.c (RANGE_SET_{BEG,END,EXCL}): add setter macros which wrap
  RSTRUCT_SET() and index.

git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@43419 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2013-10-25 05:18:26 +00:00
svn 8a9358c528 * 2013-10-25
git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@43418 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2013-10-24 18:19:38 +00:00
nobu 5ef68ab22d Makefile.sub: fix typo
* win32/Makefile.sub (MISSING): fix typo, missing extention.

git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@43417 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2013-10-24 18:19:33 +00:00
marcandre 8afbb0e6ef * parse.y: Remove +(binary) and -(binary) special cases [Feature #9048]
git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@43413 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2013-10-24 12:58:54 +00:00
zzak ec9ec26430 * object.c: [DOC] Document first argument also takes string for:
rb_mod_const_get, rb_mod_const_set, rb_mod_const_defined

  Also added note about NameError exception for invalid constant name


git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@43412 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2013-10-24 03:48:54 +00:00
kosaki 61430a167b * thread.c (rb_thread_terminate_all): add a comment why we need
state check and call terminate_i again.

git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@43411 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2013-10-24 03:25:25 +00:00
kosaki 30edf111c5 * thread.c (rb_thread_terminate_all): add a comment why infinite
sleep is safe.

git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@43410 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2013-10-24 03:15:58 +00:00
tmm1 b906f0ed17 * gc.c: add new initial_growth_max tuning parameter. [ruby-core:57928] [Bug #9035]
git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@43409 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2013-10-23 22:47:29 +00:00
nobu a0c67155a0 win32.h: suppress INFINITY warnings
* include/ruby/win32.h (rb_infinity_float): suppress overflow in
  constant arithmetic warnings.  [ruby-core:57981] [Bug #9044]

git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@43408 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2013-10-23 16:34:22 +00:00
nobu 33945edf39 Makefile.sub: C99 mathematics functions
* win32/Makefile.sub (config.h): fix version number of runtime
  library.  log2 needs to be defined, not only HAVE_LOG2.
  [ruby-core:57992] [Bug #9044]

git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@43407 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2013-10-23 16:34:17 +00:00
nobu c7f60a0b23 * ChangeLog: adjust indent.
git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@43406 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2013-10-23 16:34:14 +00:00
marcandre f9a169fff2 * lib/ostruct.rb: raise NoMethodError with a #name and #args.
Patch by Kenichi Kamiya. [Fixes GH-383]

* test/ostruct/test_ostruct.rb: Added tests for above.

git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@43405 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2013-10-23 15:14:17 +00:00
marcandre 5b5de3984e * lib/ostruct.rb (Struct#each_pair): Return an enumerator with size
Patch by Kenichi Kamiya. [Fixes GH-383]

* test/ostruct/test_ostruct.rb: Added tests for above.

git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@43404 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2013-10-23 15:13:57 +00:00
marcandre 99d5d90f2f * lib/ostruct.rb (OpenStruct#delete): Use the converted argument.
Patch by Kenichi Kamiya. [Fixes GH-383]

* test/ostruct/test_ostruct.rb: Added tests for above.

git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@43403 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2013-10-23 15:13:38 +00:00
marcandre b9e18abe4a * lib/ostruct.rb: Raise RuntimeError when modifying frozen instances
instead of TypeError. Patch by Kenichi Kamiya. [Fixes GH-383]

* test/ostruct/test_ostruct.rb: Added tests for above.

git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@43402 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2013-10-23 15:13:19 +00:00
marcandre dc215dcd9f * array.c: Add Array#to_h [Feature #7292]
* enum.c: Add Enumerable#to_h

git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@43401 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2013-10-23 15:10:48 +00:00
svn 57e52dea77 * 2013-10-24
git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@43400 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2013-10-23 15:05:31 +00:00
tmm1 dd117ea118 * gc.c: Rename free_min to min_free_slots and free_min_page to max_free_slots. The algorithm for heap growth is:
if (swept_slots < min_free_slots) pages++
    if (swept_slots > max_free_slots) pages--

git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@43399 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2013-10-23 15:05:22 +00:00
nobu dd2979b3dd Makefile.sub: C99 mathematics functions
* win32/Makefile.sub (config.h): VC 2013 supports C99 mathematics
  functions.  [ruby-core:57981] [Bug #9044]

git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@43398 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2013-10-23 13:51:05 +00:00
ko1 602241142f * gc.c: move increment from heap to heap_pages.
Share `increment' information with heaps.
* gc.c: change ratio of heap_pages_free_min_page
  to 0.80.
  This change means slow down page freeing speed.



git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@43397 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2013-10-23 10:16:01 +00:00
ko1 99c4e43d6a * gc.c (heap_pages_free_unused_pages): cast to (int) for size_t
variable `i'.



git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@43396 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2013-10-23 08:52:38 +00:00
ko1 69d787ff6d * gc.c: introduce tomb heap.
Tomb heap is where zombie objects and ghost (freed slot) lived in.
  Separate from other heaps (now there is only eden heap) at sweeping
  helps freeing pages more efficiently.
  Before this patch, even if there is an empty page at former phase
  of sweeping, we can't free it.
  Algorithm:
    (1) Sweeping all pages in a heap and move empty pages from the
        heap to tomb_heap.
    (2) Check all exsisting pages and free a page
        if all slots of this page are empty and
           there is enough empty slots (checking by swept_num)
  To introduce this pach, there are several tuning of GC parameters.



git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@43395 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2013-10-23 08:48:54 +00:00
ko1 29ffa2c273 * gc.c (gc_prof_sweep_timer_stop): catch up recent changes
to compile on GC_PROFILE_MORE_DETAIL=1.



git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@43394 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2013-10-23 05:22:10 +00:00
zzak 2bd5ab359d * file.c: [DOC] fix rdoc format of File#expand_path from r43386
git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@43393 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2013-10-23 02:44:06 +00:00
svn 9229a0f3ce * 2013-10-23
git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@43392 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2013-10-22 15:46:26 +00:00
kazu a7e66877aa fix typos
git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@43391 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2013-10-22 15:46:21 +00:00
shyouhei ec6f077809 * vm_core.h (enum): avoid syntax error.
* method.h: ditto.

	* internal.h: ditto.


git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@43390 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2013-10-22 12:59:27 +00:00
ko1 3d85d6edb5 * gc.c (Init_heap): move logics from heap_pages_init() and remove
heap_pages_init().



git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@43389 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2013-10-22 10:54:44 +00:00
ko1 d6fe84b6f3 * gc.c: allow multiple heaps.
Now, objects are managed by page. And a set of pages is called heap.
  This commit supports multiple heaps in the object space.
  * Functions heap_* and rb_heap_t manages heap data structure.
  * Functions heap_page_* and struct heap_page manage page data
    strcuture.
  * Functions heap_pagse_* and struct rb_objspace_t::heap_pages
    maintains all pages.
    For example, pagaes are allocated from the heap_pages.
  See https://bugs.ruby-lang.org/projects/ruby-trunk/wiki/GC_design
  and https://bugs.ruby-lang.org/attachments/4015/data-heap_structure_with_multiple_heaps.png
  for more deitals.
  Now, there is only one heap called `eden', which is a space for all
  new generated objects.



git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@43388 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2013-10-22 10:28:31 +00:00
akr 4292fd7798 * lib/pp.rb (object_address_group): Use Kernel#to_s to obtain the class
name and object address.
  This fix a problem caused by %p in C generates variable length
  address.
  Reported by ko1 via IRC.



git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@43387 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2013-10-22 09:29:53 +00:00
eregon 5b91ab1f2e * file.c (File#expand_path): [DOC] improve documentation of File#expand_path.
Based on patch by Prathamesh Sonpatki. [ruby-core:57734] [Bug #9002]

git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@43386 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2013-10-22 07:59:23 +00:00
nobu f57c988e34 dir.c: DOTMATCH to current directory
* dir.c (glob_helper): don't skip current directories if FNM_DOTMATCH
  is given.  [ruby-core:53108] [Bug #8006]

git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@43385 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2013-10-22 06:59:54 +00:00
nobu 4ae79ade41 * remove trailing spaces.
git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@43384 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2013-10-22 06:58:05 +00:00
ko1 f5b15f0e3f * vm_trace.c: exterminate Zombies.
There is a bug that T_ZOMBIE objects are not collected.
  Because there is a pass to miss finalizer postponed job
  with multi-threading. This patch solve this issue.
* vm_trace.c (rb_postponed_job_register_one): set
  RUBY_VM_SET_POSTPONED_JOB_INTERRUPT(th) if another same job
  is registered.
  There is a possibility to remain a postponed job without
  interrupt flag.
* vm_trace.c (rb_postponed_job_register_one): check interrupt
  carefully.
* vm_trace.c (rb_postponed_job_register_one): use additional space
  to avoid buffer full.
* gc.c (gc_finalize_deferred_register): check failure.
* thread.c (rb_threadptr_execute_interrupts): check
  `postponed_job_interrupt' immediately.  There is a possibility
  to miss this flag.



git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@43383 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2013-10-22 06:24:54 +00:00
nobu 3636f8c0f5 configure.in: check CFLAGS and LDFLAGS
* configure.in: check if the given CFLAGS and LDFLAGS are working, and
  bail out early if not.

git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@43382 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2013-10-22 03:11:20 +00:00
nobu 2addc8cd5c internal.h: fix typo
* internal.h (rb_syserr_fail_path): fix typo on platforms where
  function name string predefined identifier is not supported.

git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@43381 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2013-10-22 02:03:49 +00:00
nobu 22a961383a dir.c: warn Dir.exists?
* dir.c (rb_dir_exists_p): warn deprecated name.  [Bug #9041]

git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@43380 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2013-10-21 17:06:31 +00:00
nobu 1ca90beaac * file.c (rb_file_exists_p): maybe FileTest.
git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@43379 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2013-10-21 15:34:55 +00:00
svn 68b85e9d92 * 2013-10-22
git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@43378 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2013-10-21 15:07:03 +00:00
nobu 058d55ad2c file.c: warn File.exists?
* file.c (rb_file_exists_p): warn deprecated name.  [Bug #9041]

git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@43377 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2013-10-21 15:06:59 +00:00
nobu 274e50c189 encoding.c: preserve outer errinfo
* encoding.c (load_encoding): should preserve outer errinfo, so that
  expected exception may not be lost.  [ruby-core:57949] [Bug #9038]

git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@43376 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2013-10-21 14:57:55 +00:00