mirror of
https://github.com/ruby/ruby.git
synced 2022-11-09 12:17:21 -05:00
* gc.c (gc_stat_internal): rename:
* remembered_shady_object -> remembered_wb_unprotected_objects * remembered_shady_object_limit -> remembered_wb_unprotected_objects_limit * old_object -> old_objects * old_object_limit -> old_objects_limit ref: [Feature #9924] git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@47491 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
This commit is contained in:
parent
2d581d6c2a
commit
6b398398b9
2 changed files with 44 additions and 35 deletions
|
@ -1,3 +1,12 @@
|
||||||
|
Wed Sep 10 11:31:16 2014 Koichi Sasada <ko1@atdot.net>
|
||||||
|
|
||||||
|
* gc.c (gc_stat_internal): rename:
|
||||||
|
* remembered_shady_object -> remembered_wb_unprotected_objects
|
||||||
|
* remembered_shady_object_limit -> remembered_wb_unprotected_objects_limit
|
||||||
|
* old_object -> old_objects
|
||||||
|
* old_object_limit -> old_objects_limit
|
||||||
|
ref: [Feature #9924]
|
||||||
|
|
||||||
Wed Sep 10 11:12:25 2014 Koichi Sasada <ko1@atdot.net>
|
Wed Sep 10 11:12:25 2014 Koichi Sasada <ko1@atdot.net>
|
||||||
|
|
||||||
* gc.c (gc_stat_internal): support:
|
* gc.c (gc_stat_internal): support:
|
||||||
|
|
70
gc.c
70
gc.c
|
@ -569,11 +569,11 @@ typedef struct rb_objspace {
|
||||||
VALUE parent_object;
|
VALUE parent_object;
|
||||||
int need_major_gc;
|
int need_major_gc;
|
||||||
size_t last_major_gc;
|
size_t last_major_gc;
|
||||||
size_t remembered_shady_object_count;
|
size_t remembered_wb_unprotected_objects;
|
||||||
size_t remembered_shady_object_limit;
|
size_t remembered_wb_unprotected_objects_limit;
|
||||||
size_t old_object_count;
|
size_t old_objects;
|
||||||
size_t old_object_limit;
|
size_t old_objects_limit;
|
||||||
size_t old_object_count_at_gc_start;
|
size_t old_objects_at_gc_start;
|
||||||
|
|
||||||
#if RGENGC_ESTIMATE_OLDMALLOC
|
#if RGENGC_ESTIMATE_OLDMALLOC
|
||||||
size_t oldmalloc_increase;
|
size_t oldmalloc_increase;
|
||||||
|
@ -1052,7 +1052,7 @@ static inline void
|
||||||
RVALUE_PROMOTE_RAW(rb_objspace_t *objspace, VALUE obj)
|
RVALUE_PROMOTE_RAW(rb_objspace_t *objspace, VALUE obj)
|
||||||
{
|
{
|
||||||
MARK_IN_BITMAP(GET_HEAP_LONG_LIVED_BITS(obj), obj);
|
MARK_IN_BITMAP(GET_HEAP_LONG_LIVED_BITS(obj), obj);
|
||||||
objspace->rgengc.old_object_count++;
|
objspace->rgengc.old_objects++;
|
||||||
|
|
||||||
#if RGENGC_PROFILE >= 2
|
#if RGENGC_PROFILE >= 2
|
||||||
objspace->profile.total_promoted_count++;
|
objspace->profile.total_promoted_count++;
|
||||||
|
@ -1129,7 +1129,7 @@ RVALUE_DEMOTE(rb_objspace_t *objspace, VALUE obj)
|
||||||
RVALUE_DEMOTE_RAW(objspace, obj);
|
RVALUE_DEMOTE_RAW(objspace, obj);
|
||||||
|
|
||||||
if (RVALUE_MARKED(obj)) {
|
if (RVALUE_MARKED(obj)) {
|
||||||
objspace->rgengc.old_object_count--;
|
objspace->rgengc.old_objects--;
|
||||||
}
|
}
|
||||||
|
|
||||||
check_rvalue_consistency(obj);
|
check_rvalue_consistency(obj);
|
||||||
|
@ -3884,7 +3884,7 @@ gc_remember_unprotected(rb_objspace_t *objspace, VALUE obj)
|
||||||
if (!MARKED_IN_BITMAP(bits, obj)) {
|
if (!MARKED_IN_BITMAP(bits, obj)) {
|
||||||
page->flags.has_long_lived_shady_objects = TRUE;
|
page->flags.has_long_lived_shady_objects = TRUE;
|
||||||
MARK_IN_BITMAP(bits, obj);
|
MARK_IN_BITMAP(bits, obj);
|
||||||
objspace->rgengc.remembered_shady_object_count++;
|
objspace->rgengc.remembered_wb_unprotected_objects++;
|
||||||
|
|
||||||
#if RGENGC_PROFILE > 0
|
#if RGENGC_PROFILE > 0
|
||||||
objspace->profile.total_remembered_shady_object_count++;
|
objspace->profile.total_remembered_shady_object_count++;
|
||||||
|
@ -3976,7 +3976,7 @@ gc_aging(rb_objspace_t *objspace, VALUE obj)
|
||||||
else if (is_full_marking(objspace)) {
|
else if (is_full_marking(objspace)) {
|
||||||
if (RGENGC_CHECK_MODE) assert(RVALUE_PAGE_LONG_LIVED(page, obj) == FALSE);
|
if (RGENGC_CHECK_MODE) assert(RVALUE_PAGE_LONG_LIVED(page, obj) == FALSE);
|
||||||
MARK_IN_BITMAP(page->long_lived_bits, obj);
|
MARK_IN_BITMAP(page->long_lived_bits, obj);
|
||||||
objspace->rgengc.old_object_count++;
|
objspace->rgengc.old_objects++;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
check_rvalue_consistency(obj);
|
check_rvalue_consistency(obj);
|
||||||
|
@ -4785,11 +4785,11 @@ gc_verify_internal_consistency(VALUE self)
|
||||||
|
|
||||||
#if USE_RGENGC
|
#if USE_RGENGC
|
||||||
if (!is_marking(objspace)) {
|
if (!is_marking(objspace)) {
|
||||||
if (objspace->rgengc.old_object_count != data.old_object_count) {
|
if (objspace->rgengc.old_objects != data.old_object_count) {
|
||||||
rb_bug("inconsistent old slot nubmer: expect %"PRIuSIZE", but %"PRIuSIZE".", objspace->rgengc.old_object_count, data.old_object_count);
|
rb_bug("inconsistent old slot nubmer: expect %"PRIuSIZE", but %"PRIuSIZE".", objspace->rgengc.old_objects, data.old_object_count);
|
||||||
}
|
}
|
||||||
if (objspace->rgengc.remembered_shady_object_count != data.remembered_shady_count) {
|
if (objspace->rgengc.remembered_wb_unprotected_objects != data.remembered_shady_count) {
|
||||||
rb_bug("inconsistent old slot nubmer: expect %"PRIuSIZE", but %"PRIuSIZE".", objspace->rgengc.remembered_shady_object_count, data.remembered_shady_count);
|
rb_bug("inconsistent old slot nubmer: expect %"PRIuSIZE", but %"PRIuSIZE".", objspace->rgengc.remembered_wb_unprotected_objects, data.remembered_shady_count);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
#endif
|
#endif
|
||||||
|
@ -4835,21 +4835,21 @@ gc_marks_start(rb_objspace_t *objspace, int full_mark)
|
||||||
objspace->marked_slots = 0;
|
objspace->marked_slots = 0;
|
||||||
|
|
||||||
#if USE_RGENGC
|
#if USE_RGENGC
|
||||||
objspace->rgengc.old_object_count_at_gc_start = objspace->rgengc.old_object_count;
|
objspace->rgengc.old_objects_at_gc_start = objspace->rgengc.old_objects;
|
||||||
|
|
||||||
if (full_mark) {
|
if (full_mark) {
|
||||||
objspace->flags.during_minor_gc = FALSE;
|
objspace->flags.during_minor_gc = FALSE;
|
||||||
objspace->profile.major_gc_count++;
|
objspace->profile.major_gc_count++;
|
||||||
objspace->rgengc.remembered_shady_object_count = 0;
|
objspace->rgengc.remembered_wb_unprotected_objects = 0;
|
||||||
objspace->rgengc.old_object_count = 0;
|
objspace->rgengc.old_objects = 0;
|
||||||
objspace->rgengc.last_major_gc = objspace->profile.count;
|
objspace->rgengc.last_major_gc = objspace->profile.count;
|
||||||
rgengc_mark_and_rememberset_clear(objspace, heap_eden);
|
rgengc_mark_and_rememberset_clear(objspace, heap_eden);
|
||||||
}
|
}
|
||||||
else {
|
else {
|
||||||
objspace->flags.during_minor_gc = TRUE;
|
objspace->flags.during_minor_gc = TRUE;
|
||||||
objspace->marked_slots =
|
objspace->marked_slots =
|
||||||
objspace->rgengc.old_object_count +
|
objspace->rgengc.old_objects +
|
||||||
objspace->rgengc.remembered_shady_object_count; /* long lived objects are marked already */
|
objspace->rgengc.remembered_wb_unprotected_objects; /* long lived objects are marked already */
|
||||||
objspace->profile.minor_gc_count++;
|
objspace->profile.minor_gc_count++;
|
||||||
rgengc_rememberset_mark(objspace, heap_eden);
|
rgengc_rememberset_mark(objspace, heap_eden);
|
||||||
}
|
}
|
||||||
|
@ -4957,8 +4957,8 @@ gc_marks_finish(rb_objspace_t *objspace)
|
||||||
if (is_full_marking(objspace)) {
|
if (is_full_marking(objspace)) {
|
||||||
/* See the comment about RUBY_GC_HEAP_OLDOBJECT_LIMIT_FACTOR */
|
/* See the comment about RUBY_GC_HEAP_OLDOBJECT_LIMIT_FACTOR */
|
||||||
const double r = gc_params.oldobject_limit_factor;
|
const double r = gc_params.oldobject_limit_factor;
|
||||||
objspace->rgengc.remembered_shady_object_limit = (size_t)(objspace->rgengc.remembered_shady_object_count * r);
|
objspace->rgengc.remembered_wb_unprotected_objects_limit = (size_t)(objspace->rgengc.remembered_wb_unprotected_objects * r);
|
||||||
objspace->rgengc.old_object_limit = (size_t)(objspace->rgengc.old_object_count * r);
|
objspace->rgengc.old_objects_limit = (size_t)(objspace->rgengc.old_objects * r);
|
||||||
}
|
}
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
|
@ -4995,15 +4995,15 @@ gc_marks_finish(rb_objspace_t *objspace)
|
||||||
}
|
}
|
||||||
|
|
||||||
#if USE_RGENGC
|
#if USE_RGENGC
|
||||||
if (objspace->rgengc.remembered_shady_object_count > objspace->rgengc.remembered_shady_object_limit) {
|
if (objspace->rgengc.remembered_wb_unprotected_objects > objspace->rgengc.remembered_wb_unprotected_objects_limit) {
|
||||||
objspace->rgengc.need_major_gc |= GPR_FLAG_MAJOR_BY_SHADY;
|
objspace->rgengc.need_major_gc |= GPR_FLAG_MAJOR_BY_SHADY;
|
||||||
}
|
}
|
||||||
if (objspace->rgengc.old_object_count > objspace->rgengc.old_object_limit) {
|
if (objspace->rgengc.old_objects > objspace->rgengc.old_objects_limit) {
|
||||||
objspace->rgengc.need_major_gc |= GPR_FLAG_MAJOR_BY_OLDGEN;
|
objspace->rgengc.need_major_gc |= GPR_FLAG_MAJOR_BY_OLDGEN;
|
||||||
}
|
}
|
||||||
|
|
||||||
gc_report(1, objspace, "gc_marks_finish (marks %d objects, old %d objects, total %d slots, sweep %d slots, increment: %d, next GC: %s)\n",
|
gc_report(1, objspace, "gc_marks_finish (marks %d objects, old %d objects, total %d slots, sweep %d slots, increment: %d, next GC: %s)\n",
|
||||||
(int)objspace->marked_slots, (int)objspace->rgengc.old_object_count, (int)heap->total_slots, (int)sweep_slots, (int)heap_allocatable_pages,
|
(int)objspace->marked_slots, (int)objspace->rgengc.old_objects, (int)heap->total_slots, (int)sweep_slots, (int)heap_allocatable_pages,
|
||||||
objspace->rgengc.need_major_gc ? "major" : "minor");
|
objspace->rgengc.need_major_gc ? "major" : "minor");
|
||||||
#endif
|
#endif
|
||||||
}
|
}
|
||||||
|
@ -5103,7 +5103,7 @@ gc_marks(rb_objspace_t *objspace, int full_mark)
|
||||||
#if RGENGC_PROFILE > 0
|
#if RGENGC_PROFILE > 0
|
||||||
if (gc_prof_record(objspace)) {
|
if (gc_prof_record(objspace)) {
|
||||||
gc_profile_record *record = gc_prof_record(objspace);
|
gc_profile_record *record = gc_prof_record(objspace);
|
||||||
record->old_objects = objspace->rgengc.old_object_count;
|
record->old_objects = objspace->rgengc.old_objects;
|
||||||
}
|
}
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
|
@ -5551,7 +5551,7 @@ rb_gc_force_recycle(VALUE obj)
|
||||||
|
|
||||||
if (is_old) {
|
if (is_old) {
|
||||||
if (RVALUE_MARKED(obj)) {
|
if (RVALUE_MARKED(obj)) {
|
||||||
objspace->rgengc.old_object_count--;
|
objspace->rgengc.old_objects--;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
CLEAR_IN_BITMAP(GET_HEAP_LONG_LIVED_BITS(obj), obj);
|
CLEAR_IN_BITMAP(GET_HEAP_LONG_LIVED_BITS(obj), obj);
|
||||||
|
@ -6263,8 +6263,8 @@ gc_stat_internal(VALUE hash_or_sym)
|
||||||
static VALUE sym_malloc_increase, sym_malloc_limit;
|
static VALUE sym_malloc_increase, sym_malloc_limit;
|
||||||
#if USE_RGENGC
|
#if USE_RGENGC
|
||||||
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_wb_unprotected_objects, sym_remembered_wb_unprotected_objects_limit;
|
||||||
static VALUE sym_old_object, sym_old_object_limit;
|
static VALUE sym_old_objects, sym_old_objects_limit;
|
||||||
#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
|
||||||
|
@ -6311,10 +6311,10 @@ gc_stat_internal(VALUE hash_or_sym)
|
||||||
#if USE_RGENGC
|
#if USE_RGENGC
|
||||||
S(minor_gc_count);
|
S(minor_gc_count);
|
||||||
S(major_gc_count);
|
S(major_gc_count);
|
||||||
S(remembered_shady_object);
|
S(remembered_wb_unprotected_objects);
|
||||||
S(remembered_shady_object_limit);
|
S(remembered_wb_unprotected_objects_limit);
|
||||||
S(old_object);
|
S(old_objects);
|
||||||
S(old_object_limit);
|
S(old_objects_limit);
|
||||||
#if RGENGC_ESTIMATE_OLDMALLOC
|
#if RGENGC_ESTIMATE_OLDMALLOC
|
||||||
S(oldmalloc_increase);
|
S(oldmalloc_increase);
|
||||||
S(oldmalloc_limit);
|
S(oldmalloc_limit);
|
||||||
|
@ -6360,10 +6360,10 @@ gc_stat_internal(VALUE hash_or_sym)
|
||||||
#if USE_RGENGC
|
#if USE_RGENGC
|
||||||
SET(minor_gc_count, objspace->profile.minor_gc_count);
|
SET(minor_gc_count, objspace->profile.minor_gc_count);
|
||||||
SET(major_gc_count, objspace->profile.major_gc_count);
|
SET(major_gc_count, objspace->profile.major_gc_count);
|
||||||
SET(remembered_shady_object, objspace->rgengc.remembered_shady_object_count);
|
SET(remembered_wb_unprotected_objects, objspace->rgengc.remembered_wb_unprotected_objects);
|
||||||
SET(remembered_shady_object_limit, objspace->rgengc.remembered_shady_object_limit);
|
SET(remembered_wb_unprotected_objects_limit, objspace->rgengc.remembered_wb_unprotected_objects_limit);
|
||||||
SET(old_object, objspace->rgengc.old_object_count);
|
SET(old_objects, objspace->rgengc.old_objects);
|
||||||
SET(old_object_limit, objspace->rgengc.old_object_limit);
|
SET(old_objects_limit, objspace->rgengc.old_objects_limit);
|
||||||
#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…
Add table
Reference in a new issue