[#14850] str[re, -1] raises NoMemoryError — nobu.nakada@...
なかだです。
6 messages
2001/10/03
[#14888] perl6 apocalypse 3 — nobu.nakada@...
なかだです。
7 messages
2001/10/04
[#14903] Re: [rubyist:0825] Re: Thread — nobu.nakada@...
なかだです。
8 messages
2001/10/09
[#14909] ext/socket h_addr_list — WATANABE Tetsuya <tetsu@...>
渡辺哲也です。
9 messages
2001/10/11
[#14922] alias $gvar — Koji Arai <JCA02266@...>
新井です。
19 messages
2001/10/14
[#14941] Re: alias $gvar
— matz@... (Yukihiro Matsumoto)
2001/10/16
まつもと ゆきひろです
[#14924] Re: alias $gvar
— nobu.nakada@...
2001/10/14
なかだです。
[#14932] Re: alias $gvar
— nobu.nakada@...
2001/10/15
なかだです。
[#14934] Re: alias $gvar
— Koji Arai <JCA02266@...>
2001/10/15
新井です。
[#14942] [BUG] SEGV: module_eval — Satoru Takabayashi <satoru@...>
こんなことする方が悪いという気がしますが、次のコードを実行す
5 messages
2001/10/16
[#14961] [PATCH] Marshal.load/dump — nobu.nakada@...
なかだです。
9 messages
2001/10/18
[#14962] alias var and trace_var — "K.Kosako" <kosako@...>
新井さんの指摘から、中田さんのパッチで
12 messages
2001/10/19
[#14963] Re: alias var and trace_var
— nobu.nakada@...
2001/10/19
なかだです。
[#14965] Re: alias var and trace_var
— "K.Kosako" <kosako@...>
2001/10/19
nobu.nakada@nifty.ne.jpさんの
[#14967] Re: alias var and trace_var
— nobu.nakada@...
2001/10/19
なかだです。
[#14971] Re: alias var and trace_var
— "K.Kosako" <kosako@...>
2001/10/22
nobu.nakada@nifty.ne.jpさんの
[#14984] [PATCH] stack overflow while GC marking. — nobu.nakada@...
なかだです。
7 messages
2001/10/23
[#14987] tracer.rb — keiju@... (Keiju ISHITSUKA)
けいじゅ@日本ラショナルソフトウェアです.
5 messages
2001/10/23
[#14998] TCPSocket.gethostbyname で Segmentation fault — tomohiko machida <machida@...>
はじめまして。
4 messages
2001/10/25
[#15001] finalizer problem — keiju@... (Keiju ISHITSUKA)
けいじゅ@日本ラショナルソフトウェアです.
3 messages
2001/10/25
[#15006] Re: eval.c (rb_stack_check): prohibit recursive raising error — WATANABE Hirofumi <eban@...>
わたなべです。
13 messages
2001/10/26
[#15008] Re: eval.c (rb_stack_check): prohibit recursive raising error
— Shugo Maeda <shugo@...>
2001/10/26
前田です。
[#15207] Re: eval.c (rb_stack_check): prohibit recursive raising error
— nobu.nakada@...
2001/11/19
なかだです。
[#15209] Re: eval.c (rb_stack_check): prohibit recursive raising error
— matz@... (Yukihiro Matsumoto)
2001/11/19
まつもと ゆきひろです
[#15210] Re: eval.c (rb_stack_check): prohibit recursive raising error
— nobu.nakada@...
2001/11/19
なかだです。
[#15211] Re: eval.c (rb_stack_check): prohibit recursive raising error
— matz@... (Yukihiro Matsumoto)
2001/11/19
まつもと ゆきひろです
[#15212] Re: eval.c (rb_stack_check): prohibit recursive raising error
— nobu.nakada@...
2001/11/19
なかだです。
[#15214] Re: eval.c (rb_stack_check): prohibit recursive raising error
— matz@... (Yukihiro Matsumoto)
2001/11/19
まつもと ゆきひろです
[ruby-dev:14995] Re: [PATCH] stack overflow while GC marking.
From:
nobu.nakada@...
Date:
2001-10-24 14:20:03 UTC
List:
ruby-dev #14995
なかだです。
At Wed, 24 Oct 2001 22:50:03 +0900,
Nobuyoshi-Nakada wrote:
> 単純にrb_gc_mark()の回数を数えるだけじゃあんまり意味がないの
> で、ネストレベルを数えるようにしてみました。マークの最中にエラー
> が起きたときに実行を継続できるものかどうか、いささか疑問ですが。
すいません、これはコンパイルが通りません。[ruby-dev:14986]か
らのパッチです。
--- gc.c- Wed Oct 24 22:39:25 2001
+++ gc.c Wed Oct 24 23:10:16 2001
@@ -445,14 +445,19 @@ rb_gc_mark(ptr)
register RVALUE *obj = RANY(ptr);
- Top:
- 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 */
-
- if ((during_gc++ & 0xff) == 0 && rb_stack_overflow_p()) {
+ if ((during_gc & 0xff) == 0 && rb_stack_overflow_p()) {
if (!gc_deffered) gc_deffered = rb_ary_new2(256);
rb_ary_push(gc_deffered, (VALUE)obj);
return;
}
+ during_gc++;
+
+ Top:
+ if (rb_special_const_p((VALUE)obj) || /* special const not marked */
+ (obj->as.basic.flags == 0) || /* free cell */
+ (obj->as.basic.flags & FL_MARK)) /* already marked */
+ {
+ --during_gc;
+ return;
+ }
obj->as.basic.flags |= FL_MARK;
@@ -465,4 +470,5 @@ rb_gc_mark(ptr)
case T_NIL:
case T_FIXNUM:
+ --during_gc;
rb_bug("rb_gc_mark() called for broken object");
break;
@@ -600,4 +606,5 @@ rb_gc_mark(ptr)
}
}
+ --during_gc;
return; /* no need to mark class. */
}
@@ -686,8 +693,10 @@ rb_gc_mark(ptr)
default:
+ --during_gc;
rb_bug("rb_gc_mark(): unknown data type 0x%x(0x%x) %s",
obj->as.basic.flags & T_MASK, obj,
is_pointer_to_heap(obj)?"corrupted object":"non object");
}
+ --during_gc;
}
@@ -966,6 +975,6 @@ rb_gc_mark_deferred()
}
-void
-rb_gc()
+static VALUE
+rb_gc_internal()
{
struct gc_list *list;
@@ -1059,4 +1068,16 @@ rb_gc()
}
+ return Qnil;
+}
+
+void
+rb_gc()
+{
+ int state = 0;
+ rb_protect(rb_gc_internal, Qnil, &state);
+ if (state) {
+ during_gc = 0;
+ rb_jump_tag(state);
+ }
gc_sweep();
}
--
--- 僕の前にBugはない。
--- 僕の後ろにBugはできる。
中田 伸悦