summaryrefslogtreecommitdiffstats
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
commitd8f7f55170225d8a28989e9714f449a54c04a3ee (patch)
tree1b7c05efbb1ece601f161683e1adcfe8863e7673 /parse.y
parent2555892c81779d46414ad916d9a3a6d6d7341c72 (diff)
downloadruby-d8f7f55170225d8a28989e9714f449a54c04a3ee.tar.gz
ruby-d8f7f55170225d8a28989e9714f449a54c04a3ee.tar.xz
ruby-d8f7f55170225d8a28989e9714f449a54c04a3ee.zip
* 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: http://svn.ruby-lang.org/repos/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 f6e887242..5d9242cb8 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