summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authornagachika <nagachika@b2dd03c8-39d4-4d8f-98ff-823fe69b080e>2011-10-01 01:00:40 +0000
committernagachika <nagachika@b2dd03c8-39d4-4d8f-98ff-823fe69b080e>2011-10-01 01:00:40 +0000
commit3d2451d99651a0f0a3c1ecd2c12b5a1264b4b6b9 (patch)
treebc05eda230b0735385d863e30e56dce03567dfab
parent0003d051dd161d26e4df67313de912e89479c2d5 (diff)
* gc.c (add_heap_slots, init_heap): reset heaps_inc zero when
heap slots are expanded by environment variable RUBY_HEAP_MIN_SLOTS. [ruby-core:39777] [Bug #5380] * test/ruby/test_gc.rb (test_gc_parameter): add test for it. * test/ruby/envutil.rb (assert_normal_exit): add :child_env option to enable pass environemnt variables to child process. git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@33368 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
-rw-r--r--ChangeLog11
-rw-r--r--gc.c2
-rw-r--r--test/ruby/envutil.rb8
-rw-r--r--test/ruby/test_gc.rb10
4 files changed, 29 insertions, 2 deletions
diff --git a/ChangeLog b/ChangeLog
index 41a2db78f0..7b8b737e91 100644
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,3 +1,14 @@
+Sat Oct 1 09:48:53 2011 CHIKANAGA Tomoyuki <nagachika00@gmail.com>
+
+ * gc.c (add_heap_slots, init_heap): reset heaps_inc zero when
+ heap slots are expanded by environment variable RUBY_HEAP_MIN_SLOTS.
+ [ruby-core:39777] [Bug #5380]
+
+ * test/ruby/test_gc.rb (test_gc_parameter): add test for it.
+
+ * test/ruby/envutil.rb (assert_normal_exit): add :child_env option to
+ enable pass environemnt variables to child process.
+
Thu Sep 29 13:17:51 2011 Nobuyoshi Nakada <nobu@ruby-lang.org>
* array.c (ary_join_1): should not copy the encoding of non-string
diff --git a/gc.c b/gc.c
index fad49e01c1..1fce29ae6e 100644
--- a/gc.c
+++ b/gc.c
@@ -1090,6 +1090,7 @@ add_heap_slots(rb_objspace_t *objspace, size_t add)
for (i = 0; i < add; i++) {
assign_heap_slot(objspace);
}
+ heaps_inc = 0;
}
static void
@@ -1106,7 +1107,6 @@ init_heap(rb_objspace_t *objspace)
}
#endif
- heaps_inc = 0;
objspace->profile.invoke_time = getrusage_time();
finalizer_table = st_init_numtable();
}
diff --git a/test/ruby/envutil.rb b/test/ruby/envutil.rb
index de9055f9df..4a8451a9de 100644
--- a/test/ruby/envutil.rb
+++ b/test/ruby/envutil.rb
@@ -122,7 +122,13 @@ module Test
module Assertions
public
def assert_normal_exit(testsrc, message = '', opt = {})
- out, _, status = EnvUtil.invoke_ruby(%W'-W0', testsrc, true, :merge_to_stdout, opt)
+ if opt.include?(:child_env)
+ opt = opt.dup
+ child_env = [opt.delete(:child_env)] || []
+ else
+ child_env = []
+ end
+ out, _, status = EnvUtil.invoke_ruby(child_env + %W'-W0', testsrc, true, :merge_to_stdout, opt)
pid = status.pid
faildesc = proc do
signo = status.termsig
diff --git a/test/ruby/test_gc.rb b/test/ruby/test_gc.rb
index 32b6e9f481..b294c5445e 100644
--- a/test/ruby/test_gc.rb
+++ b/test/ruby/test_gc.rb
@@ -1,5 +1,7 @@
require 'test/unit'
+require_relative "envutil"
+
class TestGc < Test::Unit::TestCase
class S
def initialize(a)
@@ -78,4 +80,12 @@ class TestGc < Test::Unit::TestCase
ensure
GC.stress = prev_stress
end
+
+ def test_gc_parameter
+ env = {
+ "RUBY_GC_MALLOC_LIMIT" => "60000000",
+ "RUBY_HEAP_MIN_SLOTS" => "100000"
+ }
+ assert_normal_exit("1", "[ruby-core:39777]", :child_env => env)
+ end
end