[前][次][番号順一覧][スレッド一覧][生データ]

yarv-diff:337

From: ko1 atdot.net
Date: 31 May 2006 12:28:24 -0000
Subject: [yarv-diff:337] r504 - trunk

Author: ko1
Date: 2006-05-31 21:28:23 +0900 (Wed, 31 May 2006)
New Revision: 504

Modified:
   trunk/ChangeLog
   trunk/parse.y
Log:
        * parse.y : prohibit tail call optimization to mark vparsr
	object



Modified: trunk/ChangeLog
===================================================================
--- trunk/ChangeLog	2006-05-25 07:11:13 UTC (rev 503)
+++ trunk/ChangeLog	2006-05-31 12:28:23 UTC (rev 504)
@@ -4,7 +4,12 @@
 #  from Mon, 03 May 2004 01:24:19 +0900
 #
 
+2006-05-31(Wed) 21:26:38 +0900  Koichi Sasada  <ko1 atdot.net>
 
+        * parse.y : prohibit tail call optimization to mark vparsr
+	object
+
+
 2006-05-25(Thu) 15:37:11 +0900  Koichi Sasada  <ko1 atdot.net>
 
 	* blockinlining.c : support NEW_ATTRASGN attributes

Modified: trunk/parse.y
===================================================================
--- trunk/parse.y	2006-05-25 07:11:13 UTC (rev 503)
+++ trunk/parse.y	2006-05-31 12:28:23 UTC (rev 504)
@@ -4699,7 +4699,9 @@
 rb_parser_compile_string(volatile VALUE vparser, const char *f, VALUE s, int line)
 {
     struct parser_params *parser;
-
+    NODE *node;
+    volatile VALUE tmp;
+    
     Data_Get_Struct(vparser, struct parser_params, parser);
     lex_gets = lex_get_str;
     lex_gets_ptr = 0;
@@ -4707,7 +4709,10 @@
     lex_pbeg = lex_p = lex_pend = 0;
     compile_for_eval = rb_parse_in_eval();
 
-    return yycompile(parser, f, line);
+    node = yycompile(parser, f, line);
+    tmp = vparser; /* prohibit tail call optimization */
+
+    return node;
 }
 
 NODE*
@@ -4740,13 +4745,18 @@
 rb_parser_compile_file(volatile VALUE vparser, const char *f, VALUE file, int start)
 {
     struct parser_params *parser;
+    volatile VALUE tmp;
+    NODE *node;
     
     Data_Get_Struct(vparser, struct parser_params, parser);
     lex_gets = lex_io_gets;
     lex_input = file;
     lex_pbeg = lex_p = lex_pend = 0;
 
-    return yycompile(parser, f, start);
+    node = yycompile(parser, f, start);
+    tmp = vparser; /* prohibit tail call optimization */
+
+    return node;
 }
 #endif  /* !RIPPER */
 


-- 
ML: yarv-diff quickml.atdot.net
Info: http://www.atdot.net/~ko1/quickml

[前][次][番号順一覧][スレッド一覧][生データ]