* gc.c: count young object correctly and show it in GC.stat
on RGENGC_AGE2_PROMOTION. * gc.c (RVALUE_PROMOTE_YOUNG): decrement young object count on YOUNG->OLD. * gc.c (obj_free): decrement young object count when young object freed. * gc.c (gc_marks): should not clear young object count. * gc.c (gc_stat_internal): GC.stat :young_object information. git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@45925 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
This commit is contained in:
parent
4f8c0b90bb
commit
8be5c76f06
15
ChangeLog
15
ChangeLog
@ -1,3 +1,18 @@
|
|||||||
|
Mon May 12 19:52:11 2014 Koichi Sasada <ko1@atdot.net>
|
||||||
|
|
||||||
|
* gc.c: count young object correctly and show it in GC.stat
|
||||||
|
on RGENGC_AGE2_PROMOTION.
|
||||||
|
|
||||||
|
* gc.c (RVALUE_PROMOTE_YOUNG): decrement young object count on
|
||||||
|
YOUNG->OLD.
|
||||||
|
|
||||||
|
* gc.c (obj_free): decrement young object count when young object
|
||||||
|
freed.
|
||||||
|
|
||||||
|
* gc.c (gc_marks): should not clear young object count.
|
||||||
|
|
||||||
|
* gc.c (gc_stat_internal): GC.stat :young_object information.
|
||||||
|
|
||||||
Mon May 12 01:30:59 2014 Tanaka Akira <akr@fsij.org>
|
Mon May 12 01:30:59 2014 Tanaka Akira <akr@fsij.org>
|
||||||
|
|
||||||
* ext/socket/ifaddr.c (IS_IFADDRS): Unused macro removed.
|
* ext/socket/ifaddr.c (IS_IFADDRS): Unused macro removed.
|
||||||
|
22
gc.c
22
gc.c
@ -844,6 +844,8 @@ RVALUE_PROMOTE_YOUNG(rb_objspace_t *objspace, VALUE obj)
|
|||||||
|
|
||||||
if (RGENGC_CHECK_MODE && !RVALUE_YOUNG_P(obj)) rb_bug("RVALUE_PROMOTE_YOUNG: %p (%s) is not young object.", (void *)obj, obj_type_name(obj));
|
if (RGENGC_CHECK_MODE && !RVALUE_YOUNG_P(obj)) rb_bug("RVALUE_PROMOTE_YOUNG: %p (%s) is not young object.", (void *)obj, obj_type_name(obj));
|
||||||
MARK_IN_BITMAP(GET_HEAP_OLDGEN_BITS(obj), obj);
|
MARK_IN_BITMAP(GET_HEAP_OLDGEN_BITS(obj), obj);
|
||||||
|
|
||||||
|
objspace->rgengc.young_object_count--;
|
||||||
objspace->rgengc.old_object_count++;
|
objspace->rgengc.old_object_count++;
|
||||||
|
|
||||||
check_gen_consistency(obj);
|
check_gen_consistency(obj);
|
||||||
@ -1531,8 +1533,14 @@ obj_free(rb_objspace_t *objspace, VALUE obj)
|
|||||||
}
|
}
|
||||||
|
|
||||||
#if USE_RGENGC
|
#if USE_RGENGC
|
||||||
if (MARKED_IN_BITMAP(GET_HEAP_OLDGEN_BITS(obj),obj))
|
#if RGENGC_AGE2_PROMOTION
|
||||||
|
if (RVALUE_YOUNG_P(obj)) {
|
||||||
|
objspace->rgengc.young_object_count--;
|
||||||
|
}
|
||||||
|
#endif
|
||||||
|
if (MARKED_IN_BITMAP(GET_HEAP_OLDGEN_BITS(obj),obj)) {
|
||||||
CLEAR_IN_BITMAP(GET_HEAP_OLDGEN_BITS(obj),obj);
|
CLEAR_IN_BITMAP(GET_HEAP_OLDGEN_BITS(obj),obj);
|
||||||
|
}
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
switch (BUILTIN_TYPE(obj)) {
|
switch (BUILTIN_TYPE(obj)) {
|
||||||
@ -4554,9 +4562,6 @@ gc_marks(rb_objspace_t *objspace, int full_mark)
|
|||||||
if (full_mark == TRUE) { /* major/full GC */
|
if (full_mark == TRUE) { /* major/full GC */
|
||||||
objspace->rgengc.remembered_shady_object_count = 0;
|
objspace->rgengc.remembered_shady_object_count = 0;
|
||||||
objspace->rgengc.old_object_count = 0;
|
objspace->rgengc.old_object_count = 0;
|
||||||
#if RGENGC_AGE2_PROMOTION
|
|
||||||
objspace->rgengc.young_object_count = 0;
|
|
||||||
#endif
|
|
||||||
|
|
||||||
gc_marks_body(objspace, TRUE);
|
gc_marks_body(objspace, TRUE);
|
||||||
{
|
{
|
||||||
@ -5426,6 +5431,9 @@ gc_stat_internal(VALUE hash_or_sym, size_t *out)
|
|||||||
static VALUE sym_minor_gc_count, sym_major_gc_count;
|
static VALUE sym_minor_gc_count, sym_major_gc_count;
|
||||||
static VALUE sym_remembered_shady_object, sym_remembered_shady_object_limit;
|
static VALUE sym_remembered_shady_object, sym_remembered_shady_object_limit;
|
||||||
static VALUE sym_old_object, sym_old_object_limit;
|
static VALUE sym_old_object, sym_old_object_limit;
|
||||||
|
#if RGENGC_AGE2_PROMOTION
|
||||||
|
static VALUE sym_young_object;
|
||||||
|
#endif
|
||||||
#if RGENGC_ESTIMATE_OLDMALLOC
|
#if RGENGC_ESTIMATE_OLDMALLOC
|
||||||
static VALUE sym_oldmalloc_increase, sym_oldmalloc_limit;
|
static VALUE sym_oldmalloc_increase, sym_oldmalloc_limit;
|
||||||
#endif
|
#endif
|
||||||
@ -5469,6 +5477,9 @@ gc_stat_internal(VALUE hash_or_sym, size_t *out)
|
|||||||
S(remembered_shady_object_limit);
|
S(remembered_shady_object_limit);
|
||||||
S(old_object);
|
S(old_object);
|
||||||
S(old_object_limit);
|
S(old_object_limit);
|
||||||
|
#if RGENGC_AGE2_PROMOTION
|
||||||
|
S(young_object);
|
||||||
|
#endif
|
||||||
#if RGENGC_ESTIMATE_OLDMALLOC
|
#if RGENGC_ESTIMATE_OLDMALLOC
|
||||||
S(oldmalloc_increase);
|
S(oldmalloc_increase);
|
||||||
S(oldmalloc_limit);
|
S(oldmalloc_limit);
|
||||||
@ -5515,6 +5526,9 @@ gc_stat_internal(VALUE hash_or_sym, size_t *out)
|
|||||||
SET(remembered_shady_object_limit, objspace->rgengc.remembered_shady_object_limit);
|
SET(remembered_shady_object_limit, objspace->rgengc.remembered_shady_object_limit);
|
||||||
SET(old_object, objspace->rgengc.old_object_count);
|
SET(old_object, objspace->rgengc.old_object_count);
|
||||||
SET(old_object_limit, objspace->rgengc.old_object_limit);
|
SET(old_object_limit, objspace->rgengc.old_object_limit);
|
||||||
|
#if RGENGC_AGE2_PROMOTION
|
||||||
|
SET(young_object, objspace->rgengc.young_object_count);
|
||||||
|
#endif
|
||||||
#if RGENGC_ESTIMATE_OLDMALLOC
|
#if RGENGC_ESTIMATE_OLDMALLOC
|
||||||
SET(oldmalloc_increase, objspace->rgengc.oldmalloc_increase);
|
SET(oldmalloc_increase, objspace->rgengc.oldmalloc_increase);
|
||||||
SET(oldmalloc_limit, objspace->rgengc.oldmalloc_increase_limit);
|
SET(oldmalloc_limit, objspace->rgengc.oldmalloc_increase_limit);
|
||||||
|
Loading…
x
Reference in New Issue
Block a user