* 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>
|
||||
|
||||
* 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));
|
||||
MARK_IN_BITMAP(GET_HEAP_OLDGEN_BITS(obj), obj);
|
||||
|
||||
objspace->rgengc.young_object_count--;
|
||||
objspace->rgengc.old_object_count++;
|
||||
|
||||
check_gen_consistency(obj);
|
||||
@ -1531,8 +1533,14 @@ obj_free(rb_objspace_t *objspace, VALUE obj)
|
||||
}
|
||||
|
||||
#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);
|
||||
}
|
||||
#endif
|
||||
|
||||
switch (BUILTIN_TYPE(obj)) {
|
||||
@ -4554,9 +4562,6 @@ gc_marks(rb_objspace_t *objspace, int full_mark)
|
||||
if (full_mark == TRUE) { /* major/full GC */
|
||||
objspace->rgengc.remembered_shady_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);
|
||||
{
|
||||
@ -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_remembered_shady_object, sym_remembered_shady_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
|
||||
static VALUE sym_oldmalloc_increase, sym_oldmalloc_limit;
|
||||
#endif
|
||||
@ -5469,6 +5477,9 @@ gc_stat_internal(VALUE hash_or_sym, size_t *out)
|
||||
S(remembered_shady_object_limit);
|
||||
S(old_object);
|
||||
S(old_object_limit);
|
||||
#if RGENGC_AGE2_PROMOTION
|
||||
S(young_object);
|
||||
#endif
|
||||
#if RGENGC_ESTIMATE_OLDMALLOC
|
||||
S(oldmalloc_increase);
|
||||
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(old_object, objspace->rgengc.old_object_count);
|
||||
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
|
||||
SET(oldmalloc_increase, objspace->rgengc.oldmalloc_increase);
|
||||
SET(oldmalloc_limit, objspace->rgengc.oldmalloc_increase_limit);
|
||||
|
Loading…
x
Reference in New Issue
Block a user