зеркало из https://github.com/github/ruby.git
* gc.c (gc_stat_internal): rename `heap_used' to `heap_allocated_pages'.
ref: [Feature #9924] * test/ruby/test_gc.rb: add constraints test for gc stat information. git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@47493 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
This commit is contained in:
Родитель
6b398398b9
Коммит
ed729d3986
|
@ -1,3 +1,10 @@
|
|||
Wed Sep 10 11:45:40 2014 Koichi Sasada <ko1@atdot.net>
|
||||
|
||||
* gc.c (gc_stat_internal): rename `heap_used' to `heap_allocated_pages'.
|
||||
ref: [Feature #9924]
|
||||
|
||||
* test/ruby/test_gc.rb: add constraints test for gc stat information.
|
||||
|
||||
Wed Sep 10 11:31:16 2014 Koichi Sasada <ko1@atdot.net>
|
||||
|
||||
* gc.c (gc_stat_internal): rename:
|
||||
|
|
6
gc.c
6
gc.c
|
@ -6254,7 +6254,7 @@ size_t
|
|||
gc_stat_internal(VALUE hash_or_sym)
|
||||
{
|
||||
static VALUE sym_count;
|
||||
static VALUE sym_heap_used, sym_heap_sorted_length, sym_heap_allocatable_pages;
|
||||
static VALUE sym_heap_allocated_pages, sym_heap_sorted_length, sym_heap_allocatable_pages;
|
||||
static VALUE sym_heap_available_slots, sym_heap_live_slots, sym_heap_free_slots, sym_heap_final_slots;
|
||||
static VALUE sym_heap_marked_slots, sym_heap_swept_slots;
|
||||
static VALUE sym_heap_eden_pages, sym_heap_tomb_pages;
|
||||
|
@ -6291,7 +6291,7 @@ gc_stat_internal(VALUE hash_or_sym)
|
|||
if (sym_count == 0) {
|
||||
#define S(s) sym_##s = ID2SYM(rb_intern_const(#s))
|
||||
S(count);
|
||||
S(heap_used);
|
||||
S(heap_allocated_pages);
|
||||
S(heap_sorted_length);
|
||||
S(heap_allocatable_pages);
|
||||
S(heap_available_slots);
|
||||
|
@ -6340,7 +6340,7 @@ gc_stat_internal(VALUE hash_or_sym)
|
|||
SET(count, objspace->profile.count);
|
||||
|
||||
/* implementation dependent counters */
|
||||
SET(heap_used, heap_allocated_pages);
|
||||
SET(heap_allocated_pages, heap_allocated_pages);
|
||||
SET(heap_sorted_length, heap_pages_sorted_length);
|
||||
SET(heap_allocatable_pages, heap_allocatable_pages);
|
||||
SET(heap_available_slots, objspace_available_slots(objspace));
|
||||
|
|
|
@ -111,6 +111,19 @@ class TestGc < Test::Unit::TestCase
|
|||
assert_raise(ArgumentError){ GC.stat(:invalid) }
|
||||
end
|
||||
|
||||
def test_stat_constraints
|
||||
stat = GC.stat
|
||||
assert_equal stat[:total_allocated_pages], stat[:heap_allocated_pages] + stat[:total_freed_pages]
|
||||
assert_operator stat[:heap_sorted_length], :>=, stat[:heap_allocated_pages] + stat[:heap_allocatable_pages]
|
||||
assert_equal stat[:heap_available_slots], stat[:heap_live_slots] + stat[:heap_free_slots] + stat[:heap_final_slots]
|
||||
assert_equal stat[:heap_live_slots], stat[:total_allocated_objects] - stat[:total_freed_objects] - stat[:heap_final_slots]
|
||||
|
||||
if use_rgengc?
|
||||
assert_equal stat[:count], stat[:major_gc_count] + stat[:minor_gc_count]
|
||||
assert_equal stat[:heap_allocated_pages], stat[:heap_eden_pages] + stat[:heap_tomb_pages]
|
||||
end
|
||||
end
|
||||
|
||||
def test_latest_gc_info
|
||||
GC.start
|
||||
count = GC.stat(:heap_free_slots) + GC.stat(:heap_allocatable_pages) * GC::INTERNAL_CONSTANTS[:HEAP_OBJ_LIMIT]
|
||||
|
|
Загрузка…
Ссылка в новой задаче