* 2014-09-07

git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@47440 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
process.c: disable vfork on OS X

* process.c (retry_fork_async_signal_safe): revert r47439 but
  disable use of vfork on OS X instead, as it cause hang-up at
  test_process.rb:test_deadlock_by_signal_at_forking with parallel
  test.

git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@47441 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
configure.in: use ac_cv_func_vfork

* configure.in (ac_cv_func_vfork): ac_cv_func_vfork_works is
  overridden always.

git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@47442 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
* process.c: PTHREAD_CANCEL_DISABLE is not defined on Android.


git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@47443 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
* gc.c: add incremental GC algorithm. [Feature #10137]
  Please refer this ticket for details.
  This change also introduces the following changes.
  * Remove RGENGC_AGE2_PROMOTION and introduce object age (0 to 3).
    Age can be count with FL_PROMOTE0 and FL_PROMOTE1 flags in
    RBasic::flags (2 bit). Age == 3 objects become old objects.
  * WB_PROTECTED flag in RBasic to WB_UNPROTECTED bitmap.
  * LONG_LIVED bitmap to represent living objects while minor GCs
    It specifies (1) Old objects and (2) remembered shady objects.
  * Introduce rb_objspace_t::marked_objects which counts marked
    objects in current marking phase. marking count is needed to
    introduce incremental marking.
  * rename mark related function and sweep related function to
    gc_(marks|sweep)_(start|finish|step|rest|continue).
  * rename rgengc_report() to gc_report().
  * Add obj_info() function to get cstr of object details.
  * Add MEASURE_LINE() macro to measure execution time of specific line.
  * and many small fixes.
* include/ruby/ruby.h: add flag USE_RINCGC.
  Now USE_RINCGC can be set only with USE_RGENGC.
* include/ruby/ruby.h: introduce FL_PROMOTED0 and add FL_PROMOTED1
  to count object age.
* include/ruby/ruby.h: rewrite write barriers for incremental marking.
* debug.c: catch up flag name changes.
* internal.h: add rb_gc_writebarrier_remember() instead of
  rb_gc_writebarrier_remember_promoted().
* array.c (ary_memcpy0): use rb_gc_writebarrier_remember().
* array.c (rb_ary_modify): ditto.
* hash.c (rb_hash_keys): ditto.
* hash.c (rb_hash_values): ditto.
* object.c (init_copy): use rb_copy_wb_protected_attribute() because
  FL_WB_PROTECTED is moved from RBasic::flags.
* test/objspace/test_objspace.rb: catch up ObjectSpace.dump() changes.



git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@47444 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
* 2014-09-08

git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@47445 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
* remove trailing spaces.

git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@47446 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
* benchmark/bm_app_lc_fizzbuzz.rb: added.
  This program is described closely in "Understanding Computation"
  chapter 6 by Tom Stuart. <http://computationbook.com/>
  Japanese translation will be published soon.
  <http://www.oreilly.co.jp/books/9784873116976/>



git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@47447 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
* properties.

git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@47448 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
* benchmark/bm_app_lc_fizzbuzz.rb: `answer.to_a' does not return
  a string, but an array.



git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@47449 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
* benchmark/bm_app_lc_fizzbuzz.rb: should skip output on benchmark.



git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@47450 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
test_time_tz.rb: right timezone

* test/ruby/test_time_tz.rb (has_right_tz): check if right
  timezones are installed.

git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@47451 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
test_time_tz.rb: have_tz_offset?

* test/ruby/test_time_tz.rb (TestTimeTZ::Util#have_tz_offset?): append
  ?-suffix as a predicate method.

git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@47452 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
vm_core.h (rb_env_t): use flexible array

* vm_core.h (rb_env_t): use flexible array
  This reduces allocations and speeds up the lambda calculus
  fizzbuzz (bm_app_lc_fizzbuzz.rb) benchmark [ruby-core:64858]
* proc.c (get_local_variable_ptr): deconst to adjust for flex array
* vm.c (env_mark, env_free, env_memsize): remove check for env->env
* vm.c (env_alloc): single allocation for flex array
* vm.c (vm_make_env_each): adjust env_alloc call

git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@47453 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
* 2014-09-09

git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@47454 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
symbol.c (rb_intern_cstr_without_pindown): check dsymbol on return

This is not a complete fix for bug 10206, but seems to reduce
that crash and also looks correct.

git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@47455 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
compile.c: remove needless SYM2ID <-> ID2SYM conversions

Needless conversions made the code harder to follow.
[misc #10207]

git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@47456 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
mkmf.rb: --cflags to $CXXFLAGS

* lib/mkmf.rb (MakeMakefile#pkg_config): append --cflags to also
  $CXXFLAGS, as they are often used by C++ compiler.
  [ruby-core:54532] [Bug #8315]

git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@47457 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
mkmf.rb: -I flags to $INCFLAGS

* lib/mkmf.rb (MakeMakefile#pkg_config): separate -I flags to
  $INCFLAGS, which is used by CPP.

git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@47458 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
fake.rb.in: use absolute path

* template/fake.rb.in (top_srcdir): use absolute path to resolve
  symbolic links in srcdir.

git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@47459 b2dd03c8-39d4-4d8f-98ff-823fe69b080e