[前][次][番号順一覧][スレッド一覧]

ruby-changes:29469

From: ko1 <ko1@a...>
Date: Fri, 21 Jun 2013 14:55:15 +0900 (JST)
Subject: [ruby-changes:29469] ko1:r41521 (trunk): * gc.c: fix to use total_allocated_object_num and heaps_used

ko1	2013-06-21 14:55:05 +0900 (Fri, 21 Jun 2013)

  New Revision: 41521

  http://svn.ruby-lang.org/cgi-bin/viewvc.cgi?view=rev&revision=41521

  Log:
    * gc.c: fix to use total_allocated_object_num and heaps_used
      at the GC time for profiler.

  Modified files:
    trunk/gc.c

Index: gc.c
===================================================================
--- gc.c	(revision 41520)
+++ gc.c	(revision 41521)
@@ -126,7 +126,7 @@ void rb_gcdebug_print_obj_condition(VALU https://github.com/ruby/ruby/blob/trunk/gc.c#L126
  * 3: show all references
  */
 #ifndef RGENGC_CHECK_MODE
-#define RGENGC_CHECK_MODE  0
+#define RGENGC_CHECK_MODE  2
 #endif
 
 /* RGENGC_PROFILE
@@ -135,7 +135,7 @@ void rb_gcdebug_print_obj_condition(VALU https://github.com/ruby/ruby/blob/trunk/gc.c#L135
  * 2: enable profiling for each types
  */
 #ifndef RGENGC_PROFILE
-#define RGENGC_PROFILE     0
+#define RGENGC_PROFILE     1
 #endif
 
 #else /* USE_RGENGC */
@@ -145,10 +145,10 @@ void rb_gcdebug_print_obj_condition(VALU https://github.com/ruby/ruby/blob/trunk/gc.c#L145
 #endif
 
 #ifndef GC_PROFILE_MORE_DETAIL
-#define GC_PROFILE_MORE_DETAIL 0
+#define GC_PROFILE_MORE_DETAIL 1
 #endif
 #ifndef GC_ENABLE_LAZY_SWEEP
-#define GC_ENABLE_LAZY_SWEEP 0
+#define GC_ENABLE_LAZY_SWEEP   1
 #endif
 #ifndef CALC_EXACT_MALLOC_SIZE
 #define CALC_EXACT_MALLOC_SIZE 0
@@ -3553,12 +3553,19 @@ gc_marks_test(rb_objspace_t *objspace, b https://github.com/ruby/ruby/blob/trunk/gc.c#L3553
 {
     bits_t *stored_bitmaps = gc_store_bitmaps(objspace);
     size_t i;
+    size_t stored_oldgen, stored_shady;
 
     rgengc_report(1, objspace, "gc_marks_test: test-full-gc\n");
 
     /* run major (full) gc with temporary mark/rememberset */
-    gc_marks_body(objspace, FALSE);
+    stored_oldgen = objspace->rgengc.oldgen_object_count;
+    stored_shady = objspace->rgengc.remembered_shady_object_count;
+    {
+	gc_marks_body(objspace, FALSE);
+    }
     objspace->rgengc.during_minor_gc = TRUE;
+    objspace->rgengc.oldgen_object_count = stored_oldgen;
+    objspace->rgengc.remembered_shady_object_count = stored_shady;
 
     /* check */
     for (i=0; i<heaps_used; i++) {
@@ -5061,12 +5068,14 @@ gc_prof_sweep_timer_start(rb_objspace_t https://github.com/ruby/ruby/blob/trunk/gc.c#L5068
 static inline void
 gc_prof_sweep_timer_stop(rb_objspace_t *objspace)
 {
+    fprintf(stderr, "gc_prof_sweep_timer_stop!!\n");
+
     if (RUBY_DTRACE_GC_SWEEP_END_ENABLED()) {
 	RUBY_DTRACE_GC_SWEEP_END();
     }
+
     if (objspace->profile.run) {
 	double sweep_time;
-
 	gc_profile_record *record = gc_prof_record(objspace);
 
 	if (record->gc_time > 0) {
@@ -5078,6 +5087,8 @@ gc_prof_sweep_timer_stop(rb_objspace_t * https://github.com/ruby/ruby/blob/trunk/gc.c#L5087
 	    sweep_time = elapsed_time_from(objspace->profile.gc_sweep_start_time);
 	}
 
+	fprintf(stderr, "sweep_time: %g\n", sweep_time);
+
 #if GC_PROFILE_MORE_DETAIL
 	record->gc_sweep_time += sweep_time;
 	if (deferred_final_list) record->flags |= GPR_FLAG_HAVE_FINALIZE;

--
ML: ruby-changes@q...
Info: http://www.atdot.net/~ko1/quickml/

[前][次][番号順一覧][スレッド一覧]