1
0
Fork 0
mirror of https://github.com/ruby/ruby.git synced 2022-11-09 12:17:21 -05:00

* parse.y (struct parser_params): heap must be placed at same offset

also in ripper.y.  fixed: [ruby-dev:27846]

* parse.y (yycompile): prevent vparser from tail call optimization.
  fixed: [ruby-dev:27851]

* parse.y (parser_mark): value needs to be marked.
  fixed: [ruby-dev:27845]


git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@9631 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
This commit is contained in:
nobu 2005-11-29 14:57:18 +00:00
parent 684b527b58
commit 96aa0c2a8f
3 changed files with 29 additions and 16 deletions

View file

@ -1,3 +1,14 @@
Tue Nov 29 23:57:05 2005 Nobuyoshi Nakada <nobu@ruby-lang.org>
* parse.y (struct parser_params): heap must be placed at same offset
also in ripper.y. fixed: [ruby-dev:27846]
* parse.y (yycompile): prevent vparser from tail call optimization.
fixed: [ruby-dev:27851]
* parse.y (parser_mark): value needs to be marked.
fixed: [ruby-dev:27845]
Tue Nov 29 22:45:30 2005 Masatoshi SEKI <m_seki@mva.biglobe.ne.jp>
* lib/drb/observer.rb (notify_observers): follow change of observer.rb.
@ -130,7 +141,7 @@ Wed Nov 23 20:59:01 2005 Hidetoshi NAGAI <nagai@ai.kyutech.ac.jp>
[Tk8.5 feature].
* ext/tk/lib/tk/text.rb: supports new indices modifires on a Text
widget [Tk8.5 feature].
widget [Tk8.5 feature].
* ext/tk/lib/tk/virtevent.rb: add TkNamedVirtualEvent.
@ -162,13 +173,13 @@ Wed Nov 23 18:26:00 2005 Kouhei Sutou <kou@cozmixng.org>
* lib/rss/taxonomy.rb: changed class or module prefix to
Taxonomy from Taxo.
* lib/rss/maker/taxonomy.rb: ditto.
Wed Nov 23 18:21:11 2005 Kouhei Sutou <kou@cozmixng.org>
* lib/rss/maker/taxonomy.rb: implemented taxonomy module for RSS
Maker.
* lib/rss/taxonomy.rb: supported RSS Maker.
* lib/rss/maker.rb: added taxonomy module support.
* lib/rss/maker.rb: added taxonomy module support.
* lib/rss/rss.rb: adjusted to other element API.
* lib/rss/1.0.rb: adjusted to other element API but backward

6
node.h
View file

@ -353,9 +353,9 @@ typedef struct RNode {
VALUE rb_parser_new(void);
VALUE rb_parser_end_seen_p(VALUE);
NODE *rb_parser_compile_cstr(volatile VALUE, const char*, const char*, int, int);
NODE *rb_parser_compile_string(volatile VALUE, const char*, VALUE, int);
NODE *rb_parser_compile_file(volatile VALUE, const char*, VALUE, int);
NODE *rb_parser_compile_cstr(VALUE, const char*, const char*, int, int);
NODE *rb_parser_compile_string(VALUE, const char*, VALUE, int);
NODE *rb_parser_compile_file(VALUE, const char*, VALUE, int);
NODE *rb_compile_cstr(const char*, const char*, int, int);
NODE *rb_compile_string(const char*, VALUE, int);

22
parse.y
View file

@ -129,6 +129,8 @@ struct local_vars {
token
*/
struct parser_params {
NODE *heap;
union tmpyystype *parser_yylval; /* YYSTYPE not defined yet */
VALUE eofp;
@ -179,10 +181,6 @@ struct parser_params {
#endif
int line_count;
int has_shebang;
#ifdef YYMALLOC
NODE *heap;
#endif
};
#ifdef YYMALLOC
@ -4546,12 +4544,15 @@ static void parser_prepare(struct parser_params *parser);
#ifndef RIPPER
static NODE*
yycompile(struct parser_params *parser, const char *f, int line)
yycompile(VALUE vparser, const char *f, int line)
{
int n;
struct RVarmap *vp, *vars = ruby_dyna_vars;
const char *kcode_save;
volatile VALUE parser_save = vparser;
struct parser_params *parser;
Data_Get_Struct(vparser, struct parser_params, parser);
if (!compile_for_eval && rb_safe_level() == 0 &&
rb_const_defined(rb_cObject, rb_intern("SCRIPT_LINES__"))) {
VALUE hash, fname;
@ -4642,7 +4643,7 @@ rb_compile_string(const char *f, VALUE s, int line)
}
NODE*
rb_parser_compile_string(volatile VALUE vparser, const char *f, VALUE s, int line)
rb_parser_compile_string(VALUE vparser, const char *f, VALUE s, int line)
{
struct parser_params *parser;
@ -4653,7 +4654,7 @@ rb_parser_compile_string(volatile VALUE vparser, const char *f, VALUE s, int lin
lex_pbeg = lex_p = lex_pend = 0;
compile_for_eval = ruby_in_eval;
return yycompile(parser, f, line);
return yycompile(vparser, f, line);
}
NODE*
@ -4663,7 +4664,7 @@ rb_compile_cstr(const char *f, const char *s, int len, int line)
}
NODE*
rb_parser_compile_cstr(volatile VALUE vparser, const char *f, const char *s, int len, int line)
rb_parser_compile_cstr(VALUE vparser, const char *f, const char *s, int len, int line)
{
return rb_parser_compile_string(vparser, f, rb_str_new(s, len), line);
}
@ -4683,7 +4684,7 @@ rb_compile_file(const char *f, VALUE file, int start)
}
NODE*
rb_parser_compile_file(volatile VALUE vparser, const char *f, VALUE file, int start)
rb_parser_compile_file(VALUE vparser, const char *f, VALUE file, int start)
{
struct parser_params *parser;
@ -4692,7 +4693,7 @@ rb_parser_compile_file(volatile VALUE vparser, const char *f, VALUE file, int st
lex_input = file;
lex_pbeg = lex_p = lex_pend = 0;
return yycompile(parser, f, start);
return yycompile(vparser, f, start);
}
#endif /* !RIPPER */
@ -8698,6 +8699,7 @@ parser_mark(void *ptr)
#else
rb_gc_mark(p->parser_ruby_sourcefile);
rb_gc_mark(p->delayed);
rb_gc_mark(p->value);
rb_gc_mark(p->result);
rb_gc_mark(p->parsing_thread);
#endif