From: Minero Aoki Date: 2002-09-03T18:59:52+09:00 Subject: [ruby-dev:18163] Re: autoload patch for ruby-1.7 あおきです。 In mail "[ruby-dev:18156] Re: autoload patch for ruby-1.7" nobu.nakada@nifty.ne.jp wrote: > なかだです。 > たぶんparse中はrb_gc_mark_maybe(yylval.val)も必要です。 うわー、そう言われればその通りです。とりあえずパッチ添付。 ところで、yylval ってスタック上じゃないし String とかも入る はずだから、これまでもマークが必要だったはずですよね。 いやそれより、yacc スタックに String が入るのってまずくない ですか。このあたりとか。 | qword_list tSTRING_CONTENT ' ' 常に NODE にくるんで返すようにすればいいんでしょうか…… ------------------------------------------------------------------- 青木峰郎 Index: gc.c =================================================================== RCS file: /home/aamine/cvs/ruby/ruby/gc.c,v retrieving revision 1.100 diff -u -p -r1.100 gc.c --- gc.c 2 Sep 2002 12:19:30 -0000 1.100 +++ gc.c 3 Sep 2002 06:02:10 -0000 @@ -1184,6 +1184,8 @@ rb_gc() /* mark generic instance variables for special constants */ rb_mark_generic_ivar_tbl(); + + rb_gc_mark_parser(); /* gc_mark objects whose marking are not completed*/ while (!MARK_STACK_EMPTY){ Index: intern.h =================================================================== RCS file: /home/aamine/cvs/ruby/ruby/intern.h,v retrieving revision 1.93 diff -u -p -r1.93 intern.h --- intern.h 2 Sep 2002 12:19:30 -0000 1.93 +++ intern.h 3 Sep 2002 05:57:22 -0000 @@ -292,6 +292,7 @@ ID rb_id_attrset _((ID)); void rb_parser_append_print _((void)); void rb_parser_while_loop _((int, int)); int ruby_parser_stack_on_heap _((void)); +void rb_gc_mark_parser _((void)); int rb_is_const_id _((ID)); int rb_is_instance_id _((ID)); int rb_is_class_id _((ID)); Index: parse.y =================================================================== RCS file: /home/aamine/cvs/ruby/ruby/parse.y,v retrieving revision 1.207 diff -u -p -r1.207 parse.y --- parse.y 2 Sep 2002 12:19:30 -0000 1.207 +++ parse.y 3 Sep 2002 05:57:02 -0000 @@ -5352,6 +5352,14 @@ ruby_parser_stack_on_heap() } void +rb_gc_mark_parser() +{ + if (ruby_in_compile) { + rb_gc_mark_maybe(yylval.val); + } +} + +void rb_parser_append_print() { ruby_eval_tree =