diff options
-rw-r--r-- | ChangeLog | 8 | ||||
-rw-r--r-- | gc.c | 2 | ||||
-rw-r--r-- | intern.h | 1 | ||||
-rw-r--r-- | parse.y | 8 |
4 files changed, 19 insertions, 0 deletions
@@ -1,3 +1,11 @@ +Fri Sep 6 05:03:50 2002 Minero Aoki <aamine@loveruby.net> + + * gc.c (gc_sweep): should mark parser. + + * parse.y (rb_gc_mark_parser): new function. + + * intern.h (rb_gc_mark_parser): added. + Thu Sep 5 18:32:32 2002 Yukihiro Matsumoto <matz@ruby-lang.org> * variable.c (rb_path2class): should not use rb_eval_string(). @@ -1186,6 +1186,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){ @@ -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)); @@ -5358,6 +5358,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 = |