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

ruby-changes:30545

From: ko1 <ko1@a...>
Date: Mon, 19 Aug 2013 21:01:08 +0900 (JST)
Subject: [ruby-changes:30545] ko1:r42624 (trunk): * gc.c: fix around GC_DEBUG.

ko1	2013-08-19 21:00:51 +0900 (Mon, 19 Aug 2013)

  New Revision: 42624

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

  Log:
    * gc.c: fix around GC_DEBUG.
    * gc.c (RVALUE::line): should be VALUE. On some environment
      (such as mswin64), `int' introduces alignment mismatch.
    * gc.c (newobj_of): add an assertion to check VALUE alignment.
    * gc.c (aligned_malloc): `&' is low priority than `=='.
    * gc.c: define GC_DEBUG everytime and use it as value 0 or 1.

  Modified files:
    trunk/ChangeLog
    trunk/gc.c
Index: ChangeLog
===================================================================
--- ChangeLog	(revision 42623)
+++ ChangeLog	(revision 42624)
@@ -1,3 +1,16 @@ https://github.com/ruby/ruby/blob/trunk/ChangeLog#L1
+Mon Aug 19 20:55:12 2013  Koichi Sasada  <ko1@a...>
+
+	* gc.c: fix around GC_DEBUG.
+
+	* gc.c (RVALUE::line): should be VALUE. On some environment
+	  (such as mswin64), `int' introduces alignment mismatch.
+
+	* gc.c (newobj_of): add an assertion to check VALUE alignment.
+
+	* gc.c (aligned_malloc): `&' is low priority than `=='.
+
+	* gc.c: define GC_DEBUG everytime and use it as value 0 or 1.
+
 Mon Aug 19 17:43:44 2013  Koichi Sasada  <ko1@a...>
 
 	* test/ruby/test_fiber.rb: collect garbage fibers immediately.
Index: gc.c
===================================================================
--- gc.c	(revision 42623)
+++ gc.c	(revision 42624)
@@ -90,6 +90,13 @@ static ruby_gc_params_t initial_params = https://github.com/ruby/ruby/blob/trunk/gc.c#L90
 #endif
 };
 
+/* GC_DEBUG:
+ *  enable to embed GC debugging information.
+ */
+#ifndef GC_DEBUG
+#define GC_DEBUG 0
+#endif
+
 #if USE_RGENGC
 /* RGENGC_DEBUG:
  * 1: basic information
@@ -230,9 +237,9 @@ typedef struct RVALUE { https://github.com/ruby/ruby/blob/trunk/gc.c#L237
 	    VALUE v3;
 	} values;
     } as;
-#ifdef GC_DEBUG
+#if GC_DEBUG
     const char *file;
-    int   line;
+    VALUE line;
 #endif
 } RVALUE;
 
@@ -979,9 +986,10 @@ newobj_of(VALUE klass, VALUE flags, VALU https://github.com/ruby/ruby/blob/trunk/gc.c#L986
     RANY(obj)->as.values.v2 = v2;
     RANY(obj)->as.values.v3 = v3;
 
-#ifdef GC_DEBUG
+#if GC_DEBUG
     RANY(obj)->file = rb_sourcefile();
     RANY(obj)->line = rb_sourceline();
+    assert(!SPECIAL_CONST_P(obj)); /* check alignment */
 #endif
 
 #if RGENGC_PROFILE
@@ -3339,7 +3347,7 @@ gc_mark_children(rb_objspace_t *objspace https://github.com/ruby/ruby/blob/trunk/gc.c#L3347
 	break;
 
       default:
-#ifdef GC_DEBUG
+#if GC_DEBUG
 	rb_gcdebug_print_obj_condition((VALUE)obj);
 #endif
 	if (BUILTIN_TYPE(obj) == T_NONE)   rb_bug("rb_gc_mark(): %p is T_NONE", (void *)obj);
@@ -4619,9 +4627,9 @@ aligned_malloc(size_t alignment, size_t https://github.com/ruby/ruby/blob/trunk/gc.c#L4627
     res = (void*)aligned;
 #endif
 
-#if defined(_DEBUG) || defined(GC_DEBUG)
+#if defined(_DEBUG) || GC_DEBUG
     /* alignment must be a power of 2 */
-    assert((alignment - 1) & alignment == 0);
+    assert(((alignment - 1) & alignment) == 0);
     assert(alignment % sizeof(void*) == 0);
 #endif
     return res;
@@ -5640,7 +5648,7 @@ obj_type_name(VALUE obj) https://github.com/ruby/ruby/blob/trunk/gc.c#L5648
     return type_name(TYPE(obj), obj);
 }
 
-#ifdef GC_DEBUG
+#if GC_DEBUG
 
 void
 rb_gcdebug_print_obj_condition(VALUE obj)

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

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