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

33317 Коммитов

Автор SHA1 Сообщение Дата
svn 4b7c15faa7 * 2013-11-06
git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@43542 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2013-11-05 19:15:46 +00:00
tenderlove 9ae2651d19 * ext/psych/lib/psych/visitors/to_ruby.rb: process merge keys before
reviving objects. Fixes GH psych #168
* test/psych/test_merge_keys.rb: test for change
  https://github.com/tenderlove/psych/issues/168

git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@43541 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2013-11-05 19:15:40 +00:00
akr 7835e321ea * test/ruby/test_thread.rb (test_thread_join_in_trap):
Run the test in a different process.



git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@43540 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2013-11-05 12:25:15 +00:00
tarui 3ce802b79c * gc.c (is_live_object): A hidden object may be a live object.
[ruby-dev:47788] [Bug #9072]


git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@43539 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2013-11-05 11:15:21 +00:00
nobu 7f23534b1f pty.c: check error of seteuid
* ext/pty/pty.c (chfunc): check error of seteuid and return error
  message, to suppress unused-value warning.

git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@43538 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2013-11-05 08:10:34 +00:00
nobu b2f7e64caf test_command_processor.rb: clear tmpdir
* test/shell/test_command_processor.rb (TestShell#teardown): should
  not leave temporary directories.

git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@43537 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2013-11-05 08:10:32 +00:00
nobu 9d2c2c2b46 eval_intern.h: rename prefix
* eval_intern.h (rb_threadptr_tag_state, rb_threadptr_tag_jump):
  rename prefix ruby as rb, same as other rb_threadptr functions.

git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@43536 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2013-11-05 07:56:51 +00:00
nobu f08c697cd4 eval.c: suppress warning
* eval.c (rb_protect): get rid of false clobbered warning.

git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@43535 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2013-11-05 07:56:49 +00:00
nobu 8a9dff36c3 * remove trailing spaces.
git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@43534 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2013-11-05 07:48:31 +00:00
ko1 692aab9010 fix typos in ChangeLog.
git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@43533 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2013-11-05 04:52:10 +00:00
ko1 d1674ef67b * gc.c: add support to estimate increase of oldspace memory usage.
This is another approach to solve an issue discussed at r43530.
  This feature is diabled as default.
  This feature measures an increment of memory consuption by oldgen
  objects. It measures memory consumption for each objects when
  the object is promoted. However, measurement of memory consumption
  is not accurate now. So that this measurement is `estimation'.
  To implement this feature, move memsize_of() function from
  ext/objspace/objspace.c and expose rb_obj_memsize_of().
  Some memsize() functions for T_DATA (T_TYPEDDATA) have problem to
  measure memory size, so that we ignores T_DATA objects now.
  For example, some functions skip NULL check for pointer.
  The macro RGENGC_ESTIMATE_OLDSPACE enables/disables this feature,
  and turned off as default.
  We need to compare 3gen GC and this feature carefully.
  (it is possible to enable both feature)
  We need a help to compare them.
* internal.h: expose rb_obj_memsize_of().
* ext/objspace/objspace.c: use rb_obj_memsize_of() function.
* cont.c (fiber_memsize): fix to check NULL.
* variable.c (autoload_memsize): ditto.
* vm.c (vm_memsize): ditto.



git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@43532 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2013-11-05 04:51:01 +00:00
ko1 5ba523967e * gc.c (GC_MALLOC_LIMIT_MAX): fix default value 512MB -> 384MB.
512MB is huge.



git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@43531 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2013-11-04 19:04:06 +00:00
ko1 325d2cfcdf * gc.c: add 3gen GC patch, but disabled as default.
RGenGC is designed as 2 generational GC, young and old generation.
  Young objects will be promoted to old objects after one GC.
  Old objects are not collect until major (full) GC.
  The issue of this approach is some objects can promoted as old
  objects accidentally and not freed until major GC.
  Major GC is not frequently so short-lived but accidentally becoming
  old objects are not freed.
  For example, the program "loop{Array.new(1_000_000)}" consumes huge
  memories because short lived objects (an array which has 1M
  elements) are promoted while GC and they are not freed before major
  GC.
  To solve this problem, generational GC with more generations
  technique is known. This patch implements three generations gen GC.
  At first, newly created objects are "Infant" objects.
  After surviving one GC, "Infant" objects are promoted to "Young"
  objects.
  "Young" objects are promoted to "Old" objects after surviving
  next GC.
  "Infant" and "Young" objects are collected if it is not marked
  while minor GC. So that this technique solves this problem.
  Representation of generations:
  * Infant: !FL_PROMOTED and !oldgen_bitmap [00]
  * Young :  FL_PROMOTED and !oldgen_bitmap [10]
  * Old   :  FL_PROMOTED and  oldgen_bitmap [11]
  The macro "RGENGC_THREEGEN" enables/disables this feature, and
  turned off as default because there are several problems.
  (1) Failed sometimes (Heisenbugs).
  (2) Performance down.
      Especially on write barriers. We need to detect Young or Old
      object by oldgen_bitmap. It is slower than checking flags.
  To evaluate this feature on more applications, I commit this patch.
  Reports are very welcome.
  This patch includes some refactoring (renaming names, etc).
* include/ruby/ruby.h: catch up 3gen GC.
* .gdbinit: fix to show a prompt "[PROMOTED]" for promoted objects.



git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@43530 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2013-11-04 18:59:33 +00:00
ko1 30456e9607 * node.h: catch up comments for last commit.
git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@43529 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2013-11-04 15:06:14 +00:00
svn 8cb2cc5523 * 2013-11-05
git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@43528 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2013-11-04 15:04:20 +00:00
ko1 42bd731dc5 * include/ruby/ruby.h: rename FL_OLDGEN to FL_PROMOTED.
This flag represents that "this object is promoted at least once."
* gc.c, debug.c, object.c: catch up this change.



git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@43527 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2013-11-04 15:04:10 +00:00
akr 7a3f2845df * test/xmlrpc: Don't use fixed ports: 8070 and 8071.
git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@43526 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2013-11-04 13:21:53 +00:00
kazu c7ea716d27 fix a typo
git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@43525 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2013-11-04 07:17:47 +00:00
akr 445b04d18d * test/xmlrpc/webrick_testing.rb (start_server): Initialize the server
at main thread to fail early.



git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@43524 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2013-11-04 06:27:54 +00:00
svn f7a4b3de1b * 2013-11-04
git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@43523 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2013-11-04 01:08:26 +00:00
nobu 2c101190e8 eval_intern.h: avoid undefined behavior of setjmp
* eval_intern.h (TH_EXEC_TAG, TH_JUMP_TAG): get rid of undefined
  behavior of setjmp() in rhs of assignment expression.
  [ISO/IEC 9899:1999] 7.13.1.1

git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@43522 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2013-11-04 01:08:21 +00:00
akr 3566a762d2 * sample/test.rb: Make temporary file names unique.
git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@43521 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2013-11-03 14:09:35 +00:00
nobu b9ed44e7c7 gc.c: use boolean
* gc.c (obj_free): use free_immediately as boolean.

git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@43520 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2013-11-03 12:40:29 +00:00
nobu bcfb4569aa ifchange: no overwrite with an empty file
* tool/ifchange, win32/ifchange.bat: do not overwrite with an empty
  file by default, and add --empty option to force it.

git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@43519 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2013-11-03 12:40:24 +00:00
akr ddf1d3aaed * test/xmlrpc: Wrap definitions by TestXMLRPC module.
git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@43518 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2013-11-03 11:41:53 +00:00
akr 438a91c072 * test/xmlrpc/webrick_testing.rb (stop_server): Don't try to shutdown
the server if the server is not started.



git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@43517 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2013-11-03 11:26:58 +00:00
nobu 3b320b782f gc.c: suppress warning
* gc.c (obj_free): suppress a false shorten-64-to-32 warning,
  RUBY_TYPED_FREE_IMMEDIATELY never exceed the limit of int.

git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@43516 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2013-11-03 01:37:22 +00:00
svn 74015e537d * 2013-11-03
git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@43515 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2013-11-03 00:35:54 +00:00
nobu 86ffd21c39 load.c: defer initalization of static-linked-ext
* load.c (rb_feature_p): deal with default loadable suffixes.
* load.c (load_lock): initialize statically linked extensions.
* load.c (search_required, rb_require_safe): deal with statically
  linked extensions.
* load.c (ruby_init_ext): defer initalization of statically linked
  extensions until required actually.  [Bug #8883]

git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@43514 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2013-11-03 00:35:49 +00:00
nobu 3c8072937c logger.rb: fix r43511 for Windows
* lib/logger.rb (Logger::LogDevice::LogDeviceMutex#lock_shift_log):
  open file can't be removed or renamed on Windows.  [ruby-dev:47790]
  [Bug #9046]
* test/logger/test_logger.rb (TestLogDevice#run_children): don't use
  fork.

git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@43513 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2013-11-02 06:15:02 +00:00
svn 059c94d4f5 * 2013-11-02
git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@43512 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2013-11-01 22:15:01 +00:00
naruse 0749adc54c * lib/logger.rb: Inter-process locking for log rotation
Current implementation fails log rotation on multi process env.
  by sonots <sonots@gmail.com>
  https://github.com/ruby/ruby/pull/428 fix GH-428 [Bug #9046]

git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@43511 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2013-11-01 22:14:42 +00:00
tarui 052ef632a5 fix typo
git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@43510 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2013-11-01 14:27:24 +00:00
nobu 541dac0b9b gc.c: mark live objects only
* gc.c (wmap_mark_map): mark live objects only, but delete zombies.
  [ruby-dev:47787] [Bug #9069]

git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@43509 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2013-11-01 14:24:34 +00:00
tarui 21a58208f1 * gc.c (struct heap_page, gc_page_sweep, gc_sweep): Refactoring for
performance. Add before_sweep condition to heap_page structure.

	* gc.c (rb_gc_force_recycle): Use before_sweep member.

	* gc.c (heap_is_before_sweep, is_before_sweep): Remove. They has not
	  already been used.


git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@43508 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2013-11-01 13:47:39 +00:00
nobu 99981ece00 test_m17n.rb: fix encoding
* test/ruby/test_m17n.rb (test_scrub): fix expected encoding, for
  non-UTF-8 environment.

git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@43507 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2013-11-01 13:46:29 +00:00
tarui 3705b07014 * gc.c (make_deferred): Refactoring. Collect codes which should be
atomic.

	* gc.c (make_io_deferred, obj_free, rb_objspace_call_finalizer,
	  gc_page_sweep): Correspond to the above.


git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@43506 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2013-11-01 13:22:54 +00:00
tarui 1726b516d0 * gc.c (typedef struct rb_objspace): Refactoring. Move some members
into profile member.

	* gc.c (newobj_of): Correspond to the above.

	* gc.c (finalize_list): Ditto.

	* gc.c (objspace_live_num): Ditto.

	* gc.c (gc_page_sweep): Ditto.

	* gc.c (rb_gc_force_recycle): Ditto.

	* gc.c (garbage_collect_body): Ditto.

	* gc.c (rb_gc_count): Ditto.

	* gc.c (gc_stat): Ditto.

	* gc.c (gc_prof_set_heap_info): Ditto.

	* gc.c (gc_profile_dump_on): Ditto.


git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@43505 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2013-11-01 12:49:49 +00:00
nobu e8d2806cfc transcode.c: fix segv in String.encode!
* transcode.c (str_transcode0): fix segv in String.encode!.  now
  rb_str_scrub() can return nil.

git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@43504 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2013-11-01 12:12:44 +00:00
nobu e7fac351c2 string.c: fix typo
* string.c (rb_str_scrub): fix typo, should yield invalid byte
  sequence to be scrubbed.  reported by znz at IRC.

git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@43503 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2013-11-01 11:53:59 +00:00
nobu 21ea356a42 gc.c: zombie is not alive
* gc.c (is_live_object): finalizer may not run because of lazy-sweep.
  [ruby-dev:47786] [Bug #9069]

git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@43502 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2013-11-01 08:25:34 +00:00
nobu d7b729dcd0 test_m17n.rb: nil replacement
* test/ruby/test_m17n.rb (test_scrub, test_scrub_bang): now explicit
  nil is allowed as replacement.

git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@43501 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2013-11-01 08:00:43 +00:00
nobu adbdd97d28 string.c: export rb_str_scrub
* string.c (rb_str_scrub): export with fixed length arguments, and
  allow nil as replacement string instead of omitting.

git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@43500 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2013-11-01 07:55:56 +00:00
nobu 97b88a1773 load.c: suppress warning
* load.c (rb_load_internal): split to suppress false "clobbered"
  warning by gcc 4.4.5.

git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@43499 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2013-11-01 07:37:27 +00:00
nobu ea09a7b755 load.c: use local variable
* load.c (rb_load_internal): use local variable th instead of
  GET_THREAD() for each time.

git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@43498 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2013-11-01 07:37:24 +00:00
kosaki 02b501323e * thread.c (rb_mutex_struct): reduce rb_mutex_t size by 8 bytes
on 64bit platform. Patch by Eric Wong. [Feature #9068][ruby-core:58114]

git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@43497 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2013-10-31 21:27:40 +00:00
svn 2ff79611ea * 2013-11-01
git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@43496 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2013-10-31 16:09:15 +00:00
ko1 cecbcc420e * benchmark/gc/gcbench.rb: print HWM (high water mark) if possible.
git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@43495 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2013-10-31 16:09:10 +00:00
kou 128d3e7817 * lib/rexml/parsers/streamparser.rb: Add dependency file require.
[Bug #9062] [ruby-dev:47779]
  Reported by Ippei Obayashi. Thanks!!!


git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@43480 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2013-10-31 12:50:49 +00:00
ko1 667a519db3 * vm_method.c (rb_method_entry_make): fix to pass an ISeq value.
OBJ_WRITTEN() accepts only VALUE.



git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@43479 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2013-10-31 05:26:00 +00:00