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

ruby-changes:19988

From: ko1 <ko1@a...>
Date: Mon, 13 Jun 2011 04:44:55 +0900 (JST)
Subject: [ruby-changes:19988] ko1:r32035 (trunk): * ext/objspace/objspace.c (total_i): fix to skip no ruby objects.

ko1	2011-06-13 04:44:48 +0900 (Mon, 13 Jun 2011)

  New Revision: 32035

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

  Log:
    * ext/objspace/objspace.c (total_i): fix to skip no ruby objects.

  Modified files:
    trunk/ChangeLog
    trunk/ext/objspace/objspace.c

Index: ChangeLog
===================================================================
--- ChangeLog	(revision 32034)
+++ ChangeLog	(revision 32035)
@@ -1,3 +1,7 @@
+Mon Jun 13 04:42:24 2011  Koichi Sasada  <ko1@a...>
+
+	* ext/objspace/objspace.c (total_i): fix to skip no ruby objects.
+
 Mon Jun 13 03:07:38 2011  NARUSE, Yui  <naruse@r...>
 
 	* test/benchmark/test_benchmark.rb (capture_output):
Index: ext/objspace/objspace.c
===================================================================
--- ext/objspace/objspace.c	(revision 32034)
+++ ext/objspace/objspace.c	(revision 32035)
@@ -185,8 +185,19 @@
 
     for (v = (VALUE)vstart; v != (VALUE)vend; v += stride) {
 	if (RBASIC(v)->flags) {
-	    if (data->klass == 0 || rb_obj_is_kind_of(v, data->klass)) {
-		data->total += memsize_of(v);
+	    switch (BUILTIN_TYPE(v)) {
+	      case T_NONE:
+	      case T_ICLASS:
+	      case T_NODE:
+	      case T_ZOMBIE:
+		continue;
+	      case T_CLASS:
+		if (FL_TEST(v, FL_SINGLETON))
+		  continue;
+	      default:
+		if (data->klass == 0 || rb_obj_is_kind_of(v, data->klass)) {
+		    data->total += memsize_of(v);
+		}
 	    }
 	}
     }

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

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