ruby-changes:10707
From: nobu <ko1@a...>
Date: Fri, 13 Feb 2009 01:29:31 +0900 (JST)
Subject: [ruby-changes:10707] Ruby:r22270 (trunk): * compile.c (iseq_set_sequence, compile_dstr_fragments),
nobu 2009-02-13 01:29:17 +0900 (Fri, 13 Feb 2009) New Revision: 22270 http://svn.ruby-lang.org/cgi-bin/viewvc.cgi?view=rev&revision=22270 Log: * compile.c (iseq_set_sequence, compile_dstr_fragments), (iseq_compile_each): hides other internal objects. Modified files: trunk/ChangeLog trunk/compile.c Index: ChangeLog =================================================================== --- ChangeLog (revision 22269) +++ ChangeLog (revision 22270) @@ -1,3 +1,8 @@ +Fri Feb 13 01:29:16 2009 Nobuyoshi Nakada <nobu@r...> + + * compile.c (iseq_set_sequence, compile_dstr_fragments), + (iseq_compile_each): hides other internal objects. + Fri Feb 13 00:48:42 2009 Nobuyoshi Nakada <nobu@r...> * insns.def (defineclass): try to autoload const to be overridden. Index: compile.c =================================================================== --- compile.c (revision 22269) +++ compile.c (revision 22270) @@ -1361,6 +1361,7 @@ "duplicated when clause is ignored"); } } + hide_obj(map); generated_iseq[pos + 1 + j] = map; iseq_add_mark_object(iseq, map); break; @@ -2121,7 +2122,8 @@ int cnt = 1; debugp_param("nd_lit", lit); - ADD_INSN1(ret, nd_line(node), putobject, node->nd_lit); + hide_obj(lit); + ADD_INSN1(ret, nd_line(node), putobject, lit); while (list) { COMPILE(ret, "each string", list->nd_head); @@ -2237,7 +2239,7 @@ rb_ary_push(ary, node->nd_head->nd_lit); node = node->nd_next; } - + OBJ_FREEZE(ary); iseq_add_mark_object_compile_time(iseq, ary); ADD_INSN1(ret, nd_line(node_root), duparray, ary); } @@ -4369,6 +4371,7 @@ break; } case NODE_XSTR:{ + hide_obj(node->nd_lit); ADD_CALL_RECEIVER(ret, nd_line(node)); ADD_INSN1(ret, nd_line(node), putobject, node->nd_lit); ADD_CALL(ret, nd_line(node), ID2SYM(idBackquote), INT2FIX(1)); @@ -4660,6 +4663,7 @@ RSTRING_PTR(iseq->name), (void *)iseq, iseq->compile_data->flip_cnt++); + hide_obj(key); iseq_add_mark_object_compile_time(iseq, key); ADD_INSN2(ret, nd_line(node), getspecial, key, INT2FIX(0)); ADD_INSNL(ret, nd_line(node), branchif, lend); -- ML: ruby-changes@q... Info: http://www.atdot.net/~ko1/quickml/