[#15067] rb_eval_string — OJ <oj@...7.com>

OJです。

39 messages 2001/11/08
[#15068] Re: rb_eval_string — nobu.nakada@... 2001/11/08

なかだです。

[#15069] Re: rb_eval_string — OJ <oj@...7.com> 2001/11/08

OJです。

[#15071] Re: rb_eval_string — nobu.nakada@... 2001/11/09

なかだです。

[#15077] Re: rb_eval_string — OJ <oj@...7.com> 2001/11/09

OJです。

[#15078] Re: rb_eval_string — WATANABE Hirofumi <eban@...> 2001/11/09

わたなべです。

[#15083] Re: rb_eval_string — "U.Nakamura" <usa@...> 2001/11/09

こんにちは、なかむら(う)です。

[#15088] Re: rb_eval_string — nobu.nakada@... 2001/11/09

なかだです。

[#15089] Re: rb_eval_string — "U.Nakamura" <usa@...> 2001/11/09

こんにちは、なかむら(う)です。

[#15092] Re: rb_eval_string — nobu.nakada@... 2001/11/09

なかだです。

[#15096] Re: rb_eval_string — "U.Nakamura" <usa@...> 2001/11/09

こんにちは、なかむら(う)です。

[#15109] Re: rb_eval_string — WATANABE Hirofumi <eban@...> 2001/11/12

わたなべです。

[#15112] Re: rb_eval_string — "U.Nakamura" <usa@...> 2001/11/12

こんにちは、なかむら(う)です。

[#15114] Re: rb_eval_string — WATANABE Hirofumi <eban@...> 2001/11/12

わたなべです。

[#15115] Re: rb_eval_string — "U.Nakamura" <usa@...> 2001/11/12

こんにちは、なかむら(う)です。

[#15119] Re: rb_eval_string — WATANABE Hirofumi <eban@...> 2001/11/12

わたなべです。

[#15121] Re: rb_eval_string — "U.Nakamura" <usa@...> 2001/11/12

こんにちは、なかむら(う)です。

[#15124] Re: rb_eval_string — WATANABE Hirofumi <eban@...> 2001/11/12

わたなべです。

[#15126] Re: rb_eval_string — "U.Nakamura" <usa@...> 2001/11/12

こんにちは、なかむら(う)です。

[#15174] strange behavior about PTY.spawn — akira yamada / やまだあきら <akira@...>

18 messages 2001/11/15
[#15176] Re: strange behavior about PTY.spawn — matz@... (Yukihiro Matsumoto) 2001/11/15

まつもと ゆきひろです

[#15251] Re: [ruby-ext:01999] Re: syslog module is becoming ready — "Akinori MUSHA" <knu@...>

 というわけで 1.7 に syslog モジュールを入れました。

43 messages 2001/11/26

[#15270] ruby on NetBSD — "U.Nakamura" <usa@...>

こんにちは、なかむら(う)です。

25 messages 2001/11/28
[#15271] Re: ruby on NetBSD — Takahiro Kambe <taca@...> 2001/11/28

In message <20011128181510.3D11.USA@osb.att.ne.jp>

[#15272] Re: ruby on NetBSD — "U.Nakamura" <usa@...> 2001/11/28

こんにちは、なかむら(う)です。

[#15278] Re: ruby on NetBSD — Takahiro Kambe <taca@...> 2001/11/28

In message <20011128182726.3D14.USA@osb.att.ne.jp>

[#15296] Re: ruby on NetBSD — "U.Nakamura" <usa@...> 2001/11/29

こんにちは、なかむら(う)です。

[#15298] time.rb — Tanaka Akira <akr@...17n.org>

というわけで、timex.rb 改め time.rb が rough に入ったのでご意見募集です。

27 messages 2001/11/29

[ruby-dev:15160] Re: Using static mark stack, GC is slow.

From: "K.Kosako" <kosako@...>
Date: 2001-11-14 07:10:11 UTC
List: ruby-dev #15160
sheepmanさんの<20011111012752.65c0e153.sheepman@tcn.zaq.ne.jp>から
> これを回避するため、rb_gc_markするたびに実際にCのスタックの長さを
> 計って、溢れそうな時だけ、staticな領域に退避するコードを
> 書いてみました。速度的には結構改善されます。すくなくとも僕の環境では。

CVSに更新されたものを読んで、幾つか気付いた点があります。

init_mark_stack()
  memsetでの初期化は不要
gc_mark_all()
  ヒープ中なのでspecial constのチェックは不要、
  その代わり、finalizerの実行が遅延されたオブジェクトのチェックが必要
gc_mark_rest()
  memcpy() -> MEMCPY()
rb_gc_mark()
  special const等のチェックを先に行ったほうが、
  不要なものがmark_stackに入らない
  

--- gc.c.orig	Tue Nov 13 17:19:51 2001
+++ gc.c	Wed Nov 14 15:16:23 2001
@@ -356,7 +356,6 @@
 {
     mark_stack_overflow = 0;
     mark_stack_ptr = mark_stack;
-    memset(mark_stack, 0, MARK_STACK_MAX);
 }
 
 #define MARK_STACK_EMPTY (mark_stack_ptr == mark_stack)
@@ -375,8 +374,8 @@
 	for (i = 0; i < heaps_used; i++) {
 	    p = heaps[i]; pend = p + heaps_limits[i];
 	    while (p < pend) {
-		if (!(rb_special_const_p((VALUE)p))
-		    && p->as.basic.flags&FL_MARK) {
+		if ((p->as.basic.flags & FL_MARK) &&
+		    (p->as.basic.flags != FL_MARK)) {
 		    rb_gc_mark_children((VALUE)p);
 		}
 		p++;
@@ -392,8 +391,8 @@
     VALUE *p;
 
     p = (mark_stack_ptr - mark_stack) + tmp_arry;
-    memcpy(tmp_arry, mark_stack, MARK_STACK_MAX);
-	
+    MEMCPY(tmp_arry, mark_stack, VALUE, MARK_STACK_MAX);
+
     init_mark_stack();
     
     while(p != tmp_arry){
@@ -534,6 +533,10 @@
 {
     register RVALUE *obj = RANY(ptr);
 
+    if (rb_special_const_p(ptr)) return; /* special const not marked */
+    if (obj->as.basic.flags == 0) return;       /* free cell */
+    if (obj->as.basic.flags & FL_MARK) return;  /* already marked */ 
+
     if (!mark_stack_overflow){
 	int ret;
 	CHECK_STACK(ret);
@@ -544,15 +547,10 @@
 		return;
 	    }else{
 		mark_stack_overflow = 1;
-		printf("mark_stack_overflow\n");
 	    }
 	}
     }
 
-    if (rb_special_const_p((VALUE)obj)) return; /* special const not marked */
-    if (obj->as.basic.flags == 0) return;       /* free cell */
-    if (obj->as.basic.flags & FL_MARK) return;  /* already marked */ 
-    
     obj->as.basic.flags |= FL_MARK;
 
     if (mark_stack_overflow){
--
小迫@ソフネック   渋谷区恵比寿1-15-1

In This Thread