mirror of
https://github.com/ruby/ruby.git
synced 2022-11-09 12:17:21 -05:00
* parse.y (struct parser_params): fields common to ripper must be
placed at each same offset. * parse.y (NEWHEAP, ADD2HEAP): set count after pointer was set. fixed: [ruby-dev:27896] git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@9636 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
This commit is contained in:
parent
1717014d72
commit
2267384c1b
2 changed files with 371 additions and 355 deletions
|
@ -1,3 +1,11 @@
|
||||||
|
Wed Nov 30 23:52:17 2005 Nobuyoshi Nakada <nobu@ruby-lang.org>
|
||||||
|
|
||||||
|
* parse.y (struct parser_params): fields common to ripper must be
|
||||||
|
placed at each same offset.
|
||||||
|
|
||||||
|
* parse.y (NEWHEAP, ADD2HEAP): set count after pointer was set.
|
||||||
|
fixed: [ruby-dev:27896]
|
||||||
|
|
||||||
Wed Nov 30 13:43:07 2005 Yukihiro Matsumoto <matz@ruby-lang.org>
|
Wed Nov 30 13:43:07 2005 Yukihiro Matsumoto <matz@ruby-lang.org>
|
||||||
|
|
||||||
* misc/ruby-mode.el (ruby-expr-beg): support $! at the end of
|
* misc/ruby-mode.el (ruby-expr-beg): support $! at the end of
|
||||||
|
|
30
parse.y
30
parse.y
|
@ -160,6 +160,9 @@ struct parser_params {
|
||||||
VALUE (*parser_lex_gets)(struct parser_params*,VALUE);
|
VALUE (*parser_lex_gets)(struct parser_params*,VALUE);
|
||||||
struct local_vars *parser_lvtbl;
|
struct local_vars *parser_lvtbl;
|
||||||
int parser_ruby__end__seen;
|
int parser_ruby__end__seen;
|
||||||
|
int line_count;
|
||||||
|
int has_shebang;
|
||||||
|
|
||||||
#ifndef RIPPER
|
#ifndef RIPPER
|
||||||
/* Ruby core only */
|
/* Ruby core only */
|
||||||
NODE *parser_eval_tree_begin;
|
NODE *parser_eval_tree_begin;
|
||||||
|
@ -179,8 +182,6 @@ struct parser_params {
|
||||||
VALUE parsing_thread;
|
VALUE parsing_thread;
|
||||||
int toplevel_p;
|
int toplevel_p;
|
||||||
#endif
|
#endif
|
||||||
int line_count;
|
|
||||||
int has_shebang;
|
|
||||||
};
|
};
|
||||||
|
|
||||||
#ifdef YYMALLOC
|
#ifdef YYMALLOC
|
||||||
|
@ -4549,9 +4550,10 @@ yycompile(VALUE vparser, const char *f, int line)
|
||||||
int n;
|
int n;
|
||||||
struct RVarmap *vp, *vars = ruby_dyna_vars;
|
struct RVarmap *vp, *vars = ruby_dyna_vars;
|
||||||
const char *kcode_save;
|
const char *kcode_save;
|
||||||
volatile VALUE parser_save = vparser;
|
volatile VALUE parser_save;
|
||||||
struct parser_params *parser;
|
struct parser_params *parser;
|
||||||
|
|
||||||
|
*(&parser_save) = vparser;
|
||||||
Data_Get_Struct(vparser, struct parser_params, parser);
|
Data_Get_Struct(vparser, struct parser_params, parser);
|
||||||
if (!compile_for_eval && rb_safe_level() == 0 &&
|
if (!compile_for_eval && rb_safe_level() == 0 &&
|
||||||
rb_const_defined(rb_cObject, rb_intern("SCRIPT_LINES__"))) {
|
rb_const_defined(rb_cObject, rb_intern("SCRIPT_LINES__"))) {
|
||||||
|
@ -8764,23 +8766,28 @@ rb_parser_end_seen_p(VALUE vparser)
|
||||||
|
|
||||||
#ifdef YYMALLOC
|
#ifdef YYMALLOC
|
||||||
#define HEAPCNT(n, size) ((n) * (size) / sizeof(YYSTYPE))
|
#define HEAPCNT(n, size) ((n) * (size) / sizeof(YYSTYPE))
|
||||||
#define NEWHEAP(cnt) rb_node_newnode(NODE_ALLOCA, 0, (VALUE)parserp->heap, cnt)
|
#define NEWHEAP() rb_node_newnode(NODE_ALLOCA, 0, (VALUE)parserp->heap, 0)
|
||||||
#define ADD2HEAP(n, ptr) ((parserp->heap = (n))->u1.node = (ptr))
|
#define ADD2HEAP(n, c, p) ((parserp->heap = (n))->u1.node = (p), \
|
||||||
|
(n)->u3.cnt = (c), (p))
|
||||||
|
|
||||||
void *
|
void *
|
||||||
rb_parser_malloc(struct parser_params *parserp, size_t size)
|
rb_parser_malloc(struct parser_params *parserp, size_t size)
|
||||||
{
|
{
|
||||||
NODE *n = NEWHEAP(HEAPCNT(1, size));
|
size_t cnt = HEAPCNT(1, size);
|
||||||
|
NODE *n = NEWHEAP();
|
||||||
|
void *ptr = xmalloc(size);
|
||||||
|
|
||||||
return ADD2HEAP(n, xmalloc(size));
|
return ADD2HEAP(n, cnt, ptr);
|
||||||
}
|
}
|
||||||
|
|
||||||
void *
|
void *
|
||||||
rb_parser_calloc(struct parser_params *parserp, size_t nelem, size_t size)
|
rb_parser_calloc(struct parser_params *parserp, size_t nelem, size_t size)
|
||||||
{
|
{
|
||||||
NODE *n = NEWHEAP(HEAPCNT(nelem, size));
|
size_t cnt = HEAPCNT(nelem, size);
|
||||||
|
NODE *n = NEWHEAP();
|
||||||
|
void *ptr = xcalloc(nelem, size);
|
||||||
|
|
||||||
return ADD2HEAP(n, xcalloc(nelem, size));
|
return ADD2HEAP(n, cnt, ptr);
|
||||||
}
|
}
|
||||||
|
|
||||||
void *
|
void *
|
||||||
|
@ -8798,8 +8805,9 @@ rb_parser_realloc(struct parser_params *parserp, void *ptr, size_t size)
|
||||||
}
|
}
|
||||||
} while ((n = n->u2.node) != NULL);
|
} while ((n = n->u2.node) != NULL);
|
||||||
}
|
}
|
||||||
n = NEWHEAP(cnt);
|
n = NEWHEAP();
|
||||||
return ADD2HEAP(n, xrealloc(ptr, size));
|
ptr = xrealloc(ptr, size);
|
||||||
|
return ADD2HEAP(n, cnt, ptr);
|
||||||
}
|
}
|
||||||
|
|
||||||
void
|
void
|
||||||
|
|
Loading…
Add table
Reference in a new issue