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

ruby-changes:4726

From: ko1@a...
Date: Sun, 27 Apr 2008 15:28:24 +0900 (JST)
Subject: [ruby-changes:4726] ko1 - Ruby:r16220 (trunk): * gc.c (gc_count): add a GC.count method. This method returns

ko1	2008-04-27 15:28:08 +0900 (Sun, 27 Apr 2008)

  New Revision: 16220

  Modified files:
    trunk/ChangeLog
    trunk/doc/NEWS
    trunk/gc.c

  Log:
    * gc.c (gc_count): add a GC.count method.  This method returns
      a GC invoking count.
    


  http://svn.ruby-lang.org/cgi-bin/viewvc.cgi/trunk/ChangeLog?r1=16220&r2=16219&diff_format=u
  http://svn.ruby-lang.org/cgi-bin/viewvc.cgi/trunk/gc.c?r1=16220&r2=16219&diff_format=u
  http://svn.ruby-lang.org/cgi-bin/viewvc.cgi/trunk/doc/NEWS?r1=16220&r2=16219&diff_format=u

Index: doc/NEWS
===================================================================
--- doc/NEWS	(revision 16219)
+++ doc/NEWS	(revision 16220)
@@ -195,7 +195,8 @@
           o Process.exec
     * Misc. new methods
           o public_send
-          o GC.stress, GC.stress=
+          o GC.stress, GC.stress=, GC.count
+          o ObjectSpace.count_objects
           o Method#hash, Proc#hash
           o __method__ and __callee__
           o Symbol#to_proc
Index: ChangeLog
===================================================================
--- ChangeLog	(revision 16219)
+++ ChangeLog	(revision 16220)
@@ -1,3 +1,8 @@
+Sun Apr 27 15:23:40 2008  Koichi Sasada  <ko1@a...>
+
+	* gc.c (gc_count): add a GC.count method.  This method returns
+	  a GC invoking count.
+
 Sun Apr 27 12:20:33 2008  Nobuyoshi Nakada  <nobu@r...>
 
 	* vm_core.h (rb_vm_t), gc.c (rb_objspace, rb_newobj), vm.c
Index: gc.c
===================================================================
--- gc.c	(revision 16219)
+++ gc.c	(revision 16220)
@@ -173,6 +173,7 @@
 	int overflow;
     } markstack;
     struct gc_list *global_list;
+    unsigned int count;
 } rb_objspace_t;
 
 #if defined(ENABLE_VM_OBJSPACE) && ENABLE_VM_OBJSPACE
@@ -1673,6 +1674,7 @@
 	return Qtrue;
     }
     during_gc++;
+    objspace->count++;
 
     SET_STACK_END;
 
@@ -2352,6 +2354,22 @@
 }
 
 /*
+ *  call-seq:
+ *     GC.count -> Integer
+ *
+ *  Counts objects for each type.
+ *
+ *  It returns a number of GC invoke counts.
+ *
+ */
+
+static VALUE
+gc_count(VALUE self)
+{
+    return UINT2NUM((&rb_objspace)->count);
+}
+
+/*
  *  The <code>GC</code> module provides an interface to Ruby's mark and
  *  sweep garbage collection mechanism. Some of the underlying methods
  *  are also available via the <code>ObjectSpace</code> module.
@@ -2368,6 +2386,7 @@
     rb_define_singleton_method(rb_mGC, "disable", rb_gc_disable, 0);
     rb_define_singleton_method(rb_mGC, "stress", gc_stress_get, 0);
     rb_define_singleton_method(rb_mGC, "stress=", gc_stress_set, 1);
+    rb_define_singleton_method(rb_mGC, "count", gc_count, 0);
     rb_define_method(rb_mGC, "garbage_collect", rb_gc_start, 0);
 
     rb_mObSpace = rb_define_module("ObjectSpace");

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

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