Commit graph

38928 commits

Author SHA1 Message Date
ko1
1ab760bb51 revert r50031 because it includes unexpected patch
git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@50032 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2015-03-20 04:27:45 +00:00
ko1
a38a1fbcc2 * gc.c (obj_info): obj_info() can receive internal objects.
* gc.c (check_rvalue_consistency): obj_info() returns const char *.



git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@50031 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2015-03-20 03:41:10 +00:00
svn
828453ab36 * 2015-03-20
git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@50030 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2015-03-20 03:17:17 +00:00
ko1
77205540e0 * gc.c (obj_info): show class name and T_DATA type_name.
git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@50029 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2015-03-20 03:17:06 +00:00
ko1
8ed4c1a420 * gc.c (rb_copy_wb_protected_attribute): `dest' can be WB unprotected.
git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@50028 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2015-03-19 13:13:46 +00:00
ko1
531f775fd4 * gc.c (rb_copy_wb_protected_attribute): demote `dest' object.
git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@50027 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2015-03-19 12:26:49 +00:00
ko1
1643234fe3 * gc.c, internal.h: export rb_gc_verify_internal_consistency().
git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@50026 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2015-03-19 07:19:52 +00:00
ko1
9546ba4605 * gc.c (obj_info): show allocation site if GC_DEBUG is not 0.
git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@50025 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2015-03-19 07:16:27 +00:00
ko1
f537854ff3 * gc.c (newobj_of): fix RGENGC_OLD_NEWOBJ_CHECK logics.
* skip on incremental marking because not sure what happen :p
  * rb_gc_writebarrier_remember() is enough to mark children.



git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@50024 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2015-03-19 07:14:12 +00:00
ko1
38cfec906d * gc.c (rb_copy_wb_protected_attribute): need demote for old objects.
git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@50023 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2015-03-19 07:10:58 +00:00
nobu
5155a402ab win32.c: S_IFLNK
* win32/win32.c (fileattr_to_unixmode): set symlink for reparse
  points.

git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@50022 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2015-03-19 02:38:02 +00:00
nobu
e2853f5d81 win32.c: no S_IWGRP and S_IWOTH
* win32/win32.c (fileattr_to_unixmode): do not set S_IWGRP and
  S_IWOTH reset in wstati64.

git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@50021 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2015-03-19 02:37:59 +00:00
nobu
663eefcb6f Makefile.in: CONFIGURE
* Makefile.in (CONFIGURE): make configure script name selectable.

git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@50020 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2015-03-19 02:04:31 +00:00
nobu
5e132260c4 random.c: fix handle to release
* random.c (fill_random_bytes): release the handle in the static
  variable, not a local variable.

git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@50019 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2015-03-19 01:31:03 +00:00
nobu
56081d8a60 common.mk: verconf.h by BOOTSTRAPRUBY
* common.mk (verconf.h): use BOOTSTRAPRUBY as generic_erb.rb and
  the template are not dependent on built-in constants.

git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@50018 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2015-03-19 00:09:13 +00:00
ko1
6964df9a21 * object.c (rb_obj_clone): do not touch age (FL_PROMOTED[01]) because
rb_obj_alloc() can return old object in debug.



git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@50017 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2015-03-18 21:31:55 +00:00
ko1
5f879f76d7 * test/objspace/test_objspace.rb: flag name was changed
(long_lived -> uncollectible).



git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@50016 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2015-03-18 21:30:23 +00:00
ko1
4690e62284 * iseq.c (iseq_mark): skip some marking if iseq->orig is available.
* iseq.c (rb_iseq_clone): need WB for iseq1->klass = iseq0->klass
  (done in MEMCPY).



git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@50015 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2015-03-18 20:31:50 +00:00
ko1
05704f51fb * internal.h (IMEMO_DEBUG): added.
* internal.h: remove unused FL_IMEMO_MARK_V[0-3].
* gc.c (rb_imemo_new_debug): added.
* gc.c (obj_info): show imemo type name.



git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@50014 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2015-03-18 19:57:53 +00:00
ko1
33aaa89a79 * gc.c (RGENGC_OLD_NEWOBJ_CHECK): add check mechanism.
If RGENGC_OLD_NEWOBJ_CHECK > 0, then create old objects
  (not new objects) periodically.
  Create one old objects per RGENGC_OLD_NEWOBJ_CHECK objects are
  created.



git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@50013 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2015-03-18 19:54:14 +00:00
ko1
9c64155f30 * enum.c (enum_sort_by): add WBs.
git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@50012 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2015-03-18 19:47:36 +00:00
ko1
92fa998ce7 * gc.c (check_rvalue_consistency): refactoring.
* not inline on RGENGC_CHECK_MODE > 0.
  * check SPECIAL_CONST_P(obj) first.
  * add a check that remembered_bit is only TRUE when old (age == 3).
* gc.c (RVALUE_DEMOTE): should clear RVALUE_REMEMBERED bit.
  remembered_bit should be TRUE only for old (age == 3) objects.
  Actually there are no effect because demoted objects will be
  uncollectible WB unprotected objects (marked at the begginig of
  every minor GC).



git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@50011 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2015-03-18 18:46:10 +00:00
svn
27356db714 * 2015-03-19
git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@50010 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2015-03-18 18:02:29 +00:00
ko1
975c417957 * gc.c: rename terminologies.
* long_lived -> uncollectible:
    because this bitmap does not mean "long lived objects in past",
    but means "prohibit collection thse objects until next major GC".
    Uncollectible objects consist of two types objects, one is old
    objects (WB protected objects which age == 3) and another is
    uncollectible WB unprotected objects which are referred from old
    objects
  * remembered_wb_unprotected_objects ->
    uncollectible_wb_unprotected_objects:
    because uncollectible objects does not mean remembered objects.



git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@50009 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2015-03-18 18:02:13 +00:00
kazu
6a505da959 fix typos [ci skip]
git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@50008 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2015-03-18 10:04:34 +00:00
svn
d2bfccd22d * remove trailing spaces.
git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@50007 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2015-03-18 09:02:46 +00:00
ko1
ec4624b0f4 * gc.c (gc_writebarrier_generational): add an alternative write
barrier (WB) implementation.
  When finding reference from [Old obj] to [New obj] by WB, current
  implementation marks [Old obj] as remembered old objects and marks
  chilldren of [Old obj] at the beggining of marking.
  Added (but disabled) code changes current behaviour. This fix promote
  [New obj] to old and marks as a remembered old object. We can assume
  "new objects referred from old objects are maybe long-lived old
  objects".
  Disadvantage of added algorithm is we may promote unwilling
  short-lived objects. For example, consider many new objects push and
  pop to an old stack object. All of new objects (short-lived objects)
  promote to old objects unexpectedly.
  To compare these behaviour, I add this new code (but disabled it).



git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@50006 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2015-03-18 09:02:10 +00:00
ko1
3b1e28036e * gc.c (RVALUE_PROMOTE_RAW): rename to RVALUE_OLD_LONG_LIVED_SET()
to make clear.



git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@50005 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2015-03-18 08:15:23 +00:00
ko1
3857777781 * gc.c (check_rvalue_consistency): do not need to check is_sweeping().
git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@50004 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2015-03-18 08:12:44 +00:00
nobu
5b91f08aaa gmake.mk: showflags
* defs/gmake.mk (showflags): more targets to show flags.

git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@50003 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2015-03-18 08:08:31 +00:00
ko1
683e823669 * benchmark/bm_vm1_gc_wb_ary.rb: run GC to finish "marking" phase.
* benchmark/bm_vm1_gc_wb_obj.rb: ditto.
* benchmark/bm_vm1_gc_wb_ary_promoted.rb: add parameter
  full_mark: false to invoke only minor GC.
* benchmark/bm_vm1_gc_wb_obj_promoted.rb: ditto.



git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@50002 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2015-03-18 05:15:08 +00:00
ko1
89a603d2e6 * string.c: add a comment about RSTRING_FSTR.
git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@50001 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2015-03-18 03:08:09 +00:00
svn
f5a5503702 * remove trailing spaces.
git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@50000 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2015-03-18 03:02:33 +00:00
nobu
3bcf9fb53e hash.c: same hash values with Float#hash
* hash.c (rb_any_hash): use same hash values with Float#hash so
  that -0.0 and +0.0 will be identical.
  [ruby-core:68541] [Bug #10979]

git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@49999 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2015-03-18 03:01:58 +00:00
ko1
1e98a25e9f * string.c: introduce STR_FAKESTR to show string is FAKESTR or not.
* string.c (STR_SET_SHARED): ignore FAKESTR because only Ruby objects
  can use write barrier.



git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@49998 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2015-03-17 20:38:02 +00:00
kazu
ce8eeb84c3 fix a typo [ci skip]
git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@49990 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2015-03-17 15:30:33 +00:00
svn
11d7f181c8 * 2015-03-18
git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@49989 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2015-03-17 15:22:05 +00:00
nagachika
5e400ee48f ChangeLog: fix a typo at r49987.
git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@49988 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2015-03-17 15:21:47 +00:00
ko1
0db407836b * include/ruby/ruby.h: use rb_gc_writebrrier() simply.
For incremental GC, we need to get a pointer to the objspace.
  We can share this pointer for the following WB process.
  And considering icache hit ratio, prcess in the GC.
* gc.c (rb_gc_writebarrier): added.
* gc.c (gc_writebarrier_generational, gc_writebarrier_incremental):
  make them NOINLINE because inlining them into rb_gc_writebarrier()
  makes a prologue code of rb_gc_writebarrier() longer (storing callee
  save registers).
  This patch improve the performance of WB on micro-benchmarks.
  name                   ruby 2.1   trunk   modified
  vm1_gc_wb_ary*            0.511   0.632      0.532
  vm1_gc_wb_ary_promoted*   0.578   0.701      0.674
  vm1_gc_wb_obj*            0.419   0.575      0.492
  vm1_gc_wb_obj_promoted*   0.537   0.664      0.618
                                                 (sec)



git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@49987 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2015-03-17 10:26:39 +00:00
svn
40c9281107 * properties.
git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@49986 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2015-03-17 09:58:08 +00:00
ko1
f6e9452b23 * benchmark/bm_vm1_gc_wb_ary(_promoted).rb: separate fastpath and
slowpath for WB.
  Before this change bm_vm1_gc_wb_ary.rb tried to check the performance
  for WB slowpath (making a reference from oldobj to newobj). However,
  from Ruby 2.2, 3 GCs are needed to promote new objects because
  only 3 age objects are promted objects.
  To compare fastpath and slowpath, introduce new "promoted" version
  benchmark.
  bm_vm1_gc_wb_ary.rb is for fastpath and
  bm_vm1_gc_wb_ary_promoted.rb is for slowpath.
* benchmark/bm_vm1_gc_wb_obj(_promtoed).rb: ditto.



git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@49985 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2015-03-17 09:57:47 +00:00
svn
110d8d4f2c * 2015-03-17
git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@49984 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2015-03-17 08:23:26 +00:00
nobu
41872a8df6 dir.c: fix DT_UNKNOWN recursion
* dir.c (glob_helper): distinguish not-yet-stated and DT_UNKNOWN
  by readdir, and traverse recursively for the former.  Linux
  readdir returns DT_UNKNOWN on some filesystems, e.g., smbfs,
  iso9660.

git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@49983 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2015-03-17 08:23:14 +00:00
nobu
8e1f6b0750 dir.c: DT_UNKNOWN
* dir.c (glob_helper): deal with DT_UNKNOWN.

git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@49982 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2015-03-16 10:20:25 +00:00
svn
23c352d05c * properties.
git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@49981 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2015-03-16 08:43:42 +00:00
hsbt
7d75a78604 * lib/webrick/server.rb: Fix regression bug in WEBrick's
:DoNotReverseLookup config option implementation.
  [fix GH-731] Patch by @vais
* test/webrick/test_do_not_reverse_lookup.rb: ditto.

git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@49980 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2015-03-16 08:43:28 +00:00
gogotanaka
dc37d6daba * math.c (math_log1, math_log2, math_log10): refactoring
and tests for this.

git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@49979 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2015-03-16 08:39:29 +00:00
nobu
c7988fd29d ruby.h: suppress false warnings
* include/ruby/ruby.h (rb_data_object_alloc_warning): enable only
  if __builtin_choose_expr works with __builtin_constant_p so that
  warnings will be suppressed if klass is 0.

git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@49978 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2015-03-16 07:49:27 +00:00
nobu
5d09df3273 ruby.h: suppress false warnings
* include/ruby/ruby.h (rb_data_object_alloc_warning): enable only
  if __builtin_choose_expr works with __builtin_constant_p so that
  warnings will be suppressed if klass is 0.

git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@49977 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2015-03-16 07:47:48 +00:00
gogotanaka
1bbdb76e16 * test/ruby/test_lambda.rb: Fix typo yeild -> yield
[fix GH-851][ci skip] Patch by @hanachin

git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@49976 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2015-03-15 17:53:01 +00:00