[#20392] [BigDecimal] proposal to change specification — "Tadashi Saito" <shiba@...2.accsnet.ne.jp>

斎藤と申します。

25 messages 2003/06/20
[#20407] Re: [BigDecimal] proposal to change specification — "Shigeo Kobayashi" <shigeo@...> 2003/06/22

小林です。

[#20447] [BigDecimal] renaming proposal — "Tadashi Saito" <shiba@...2.accsnet.ne.jp>

斎藤です。

47 messages 2003/06/24
[#20621] Re: [BigDecimal] renaming proposal — "Shigeo Kobayashi" <shigeo@...> 2003/07/11

小林@MAILチェック中です。

[#20628] Re: [BigDecimal] renaming proposal — "Shigeo Kobayashi" <shigeo@...> 2003/07/11

小林です。

[ruby-dev:20454] Re: *.soのautoload(PR#504)

From: nobu.nakada@...
Date: 2003-06-25 06:42:17 UTC
List: ruby-dev #20454
なかだです。

At Wed, 25 Jun 2003 12:31:57 +0900,
Minero Aoki wrote:
> > 難しい方は、どうしようかな、なんでrb_class_tblを分離したんだっ
> > け。あんまり昔のことで覚えていないなあ。
> 
> 以前「GC 対策」と聞きました。たぶん、クラスオブジェクトを
> rb_gc_register_address せずにグローバル変数に入れておける
> ようになる、ということだと思うんですけど。

rb_class_tblを残すか、rb_cObjectを直接マークすればいいのでは。
結局大本になるテーブルはどこかに必須なので、そこをマークするの
に違いはないのではないかと。

昨日作ってみたやつです。


Index: object.c
===================================================================
RCS file: //sharui/cvs/ruby/src/ruby/object.c,v
retrieving revision 1.121
diff -u -2 -p -r1.121 object.c
--- object.c	21 Jun 2003 14:51:21 -0000	1.121
+++ object.c	24 Jun 2003 10:38:59 -0000
@@ -1350,7 +1350,9 @@ void
 Init_Object()
 {
+    extern st_table *rb_class_tbl;
     VALUE metaclass;
 
     rb_cObject = boot_defclass("Object", 0);
+    RCLASS(rb_cObject)->iv_tbl = rb_class_tbl;
     rb_cModule = boot_defclass("Module", rb_cObject);
     rb_cClass =  boot_defclass("Class",  rb_cModule);
Index: variable.c
===================================================================
RCS file: //sharui/cvs/ruby/src/ruby/variable.c,v
retrieving revision 1.90
diff -u -2 -p -r1.90 variable.c
--- variable.c	20 Jun 2003 07:11:41 -0000	1.90
+++ variable.c	24 Jun 2003 10:40:02 -0000
@@ -1254,14 +1254,4 @@ rb_autoload_p(mod, id)
 }
 
-static int
-top_const_get(id, klassp)
-    ID id;
-    VALUE *klassp;
-{
-    /* pre-defined class */
-    if (st_lookup(rb_class_tbl, id, klassp)) return Qtrue;
-    return Qfalse;
-}
-
 VALUE
 rb_const_get_at(klass, id)
@@ -1278,7 +1268,4 @@ rb_const_get_at(klass, id)
 	return value;
     }
-    if (klass == rb_cObject && top_const_get(id, &value)) {
-	return value;
-    }
     uninitialized_constant(klass, id);
     return Qnil;		/* not reached */
@@ -1308,5 +1295,4 @@ rb_const_get_0(klass, id, exclude)
 	    return value;
 	}
-	if (tmp == rb_cObject && top_const_get(id, &value)) return value;
 	tmp = RCLASS(tmp)->super;
     }
@@ -1393,7 +1379,4 @@ rb_mod_const_at(mod, data)
 	st_foreach(RCLASS(mod)->iv_tbl, sv_i, (st_data_t)tbl);
     }
-    if ((VALUE)mod == rb_cObject) {
-	st_foreach(rb_class_tbl, sv_i, (st_data_t)tbl);
-    }
     return tbl;
 }
@@ -1500,6 +1483,4 @@ rb_const_defined(klass, id)
 	return rb_const_defined(rb_cObject, id);
     }
-    if (st_lookup(rb_class_tbl, id, 0))
-	return Qtrue;
     return Qfalse;
 }
@@ -1523,6 +1504,5 @@ mod_av_set(klass, id, val, isconst)
 	VALUE value = Qfalse;
 
-	if (st_lookup(RCLASS(klass)->iv_tbl, id, &value) ||
-	    (klass == rb_cObject && st_lookup(rb_class_tbl, id, 0))) {
+	if (st_lookup(RCLASS(klass)->iv_tbl, id, &value)) {
 	    if (value == Qundef)
 		autoload_delete(klass, id);
@@ -1558,10 +1538,4 @@ rb_const_assign(klass, id, val)
 	}
 	tmp = RCLASS(tmp)->super;
-    }
-    /* pre-defined class */
-    if (st_lookup(rb_class_tbl, id, 0)) {
-	st_delete(rb_class_tbl, &id, 0);
-	st_insert(RCLASS(rb_cObject)->iv_tbl, id, val);
-	return;
     }
 


-- 
--- 僕の前にBugはない。
--- 僕の後ろにBugはできる。
    中田 伸悦

In This Thread