summaryrefslogtreecommitdiff
path: root/parse.y
diff options
context:
space:
mode:
authornobu <nobu@b2dd03c8-39d4-4d8f-98ff-823fe69b080e>2007-05-11 06:26:06 +0000
committernobu <nobu@b2dd03c8-39d4-4d8f-98ff-823fe69b080e>2007-05-11 06:26:06 +0000
commita1295b0f79d65d04a07962acf8b2af1a930a6035 (patch)
tree1b7c05efbb1ece601f161683e1adcfe8863e7673 /parse.y
parentcb272b7c2dafe30b5823f6e6fc59bbc79c8f0cab (diff)
* iseq.c (iseq_data_to_ary): internal IDs must not be exposed.
[ruby-core:11073] * parse.y (internal_id_gen): now returns scope local ID instead of global one. git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@12273 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
Diffstat (limited to 'parse.y')
-rw-r--r--parse.y8
1 files changed, 5 insertions, 3 deletions
diff --git a/parse.y b/parse.y
index f6e8872426..5d9242cb8d 100644
--- a/parse.y
+++ b/parse.y
@@ -387,7 +387,8 @@ static int local_id_gen(struct parser_params*, ID);
#define local_id(id) local_id_gen(parser, id)
static ID *local_tbl_gen(struct parser_params*);
#define local_tbl() local_tbl_gen(parser)
-static ID internal_id(void);
+static ID internal_id_gen(struct parser_params*);
+#define internal_id() internal_id_gen(parser)
static void dyna_push_gen(struct parser_params*);
#define dyna_push() dyna_push_gen(parser)
@@ -8270,9 +8271,10 @@ rb_gc_mark_symbols(void)
}
static ID
-internal_id(void)
+internal_id_gen(struct parser_params *parser)
{
- return ID_INTERNAL | (++global_symbols.last_id << ID_SCOPE_SHIFT);
+ ID id = (ID)vtable_size(lvtbl->args) + (ID)vtable_size(lvtbl->vars);
+ return ID_INTERNAL | (id << ID_SCOPE_SHIFT);
}
static int