* parse.y (remove_duplicate_keys): should keep nodes linking not
to be collected. [Bug #10315]
git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@47898 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
* parse.y (remove_duplicate_keys): should not simply eliminate all
value nodes, which may have side effects.
[ruby-core:65625] [Bug #10315]
git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@47894 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
* parse.y (assocs): concatenate splatted literal hashes. the
former key has precedence even if duplicated literal keys
follow. [ruby-core:65368] [Bug #10315]
git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@47877 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
* parse.y (list_concat): remove unused argument parser, since
never allocates new node.
git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@47789 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
* parse.y (parser_data_type): separate ripper data type for from
parser.
git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@47747 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
* parse.y (parse_ident): just after a label, new expression should
start, cannot be a modifier. [ruby-core:65211] [Bug #10279]
git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@47696 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
* parse.y (assoc): allow quoted ID as a key of a hash literal.
[ruby-core:34453] [Feature #4276]
git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@47649 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
* parse.y (intern_cstr): remove `_without_pindown` suffix and use
rb_intern3() as well as RIPPER, for the time being.
[ruby-core:65009] [Bug #10206]
git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@47569 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
* parse.y (arg_ambiguous_gen): fix warning message, "even" does
not mean the number of spaces here. state the place to put a
space and the operator. [ruby-core:64790] [Bug #10204]
git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@47431 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
* parse.y (ripper_warnV, ripper_warningV): add versions using
VALUE for ripper.
git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@47184 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
* parse.y (parser_yylex): fix invalid char in eval, should raise
an syntax error too, as well as directly coded.
[ruby-core:64243] [Bug #10117]
git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@47098 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
* parse.y (struct parse_params): shrink to 320 to 304 bytes on 64-bit
Some elements may be removed/resized as well, but not as important
as reducing more-frequently allocated structures.
git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@46954 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
* parse.y (mlhs_node): dynamic constant assignment in massign
should cause assign_error, like as single assign and backref
assignment in massign.
git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@46931 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
* parse.y (negate_lit): alter only literal object itself, not NODE.
git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@46841 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
* parse.y (rb_init_parse): rename to get rid of name clash with
json/parser at statically linking.
git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@46787 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
* symbol.c, symbol.h: Symbol class implementation and internals,
split from parse.y.
git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@46768 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
exposing IDs from collectable symbols.
[Bug #10014]
Now, rb_check_id() returns 0 if corresponding symbol is
pinned dynamic symbol.
There is remaining intern_cstr_without_pindown(), it can return
IDs from collectable symbols. We must be careful to use it
(only used in parse.y). I think it should be removed if
it does not have impact for performance.
* parse.y:
add:
* STATIC_SYM2ID()
* STATIC_ID2SYM()
rename:
* rb_pin_dynamic_symbol() -> dsymbol_pindown()
* internal.h:
remove:
* rb_check_id_without_pindown()
* rb_sym2id_without_pindown()
add:
* rb_check_symbol()
* rb_check_symbol_cstr()
* load.c: use rb_check_id() or rb_check_id_cstr().
* object.c: ditto.
* struct.c: ditto.
* thread.c: ditto.
* vm_method.c: ditto.
* string.c (sym_find): use only rb_check_symbol().
* sprintf.c (rb_str_format): use rb_check_symbol_cstr().
git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@46764 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
* parse.y (new_op_assign_gen): expand is_asgn_or_id(), which call
id_type() function multiple times now.
git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@46754 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
* parse.y (dsymbol_check): set RSYMBOL(sym)->fstr to 0
because we should not touch fstr after that.
* parse.y (rb_gc_free_dsymbol): skip deleting str and sym
from tables if fstr == 0.
git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@46752 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
(and ::pinned_dsym_minor_marked).
Mark pinned dsymbols by rb_gc_register_mark_object() because
they are immortal.
* prase.y (rb_gc_free_dsymbol): rename parameter name `ptr' to `sym'.
git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@46749 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
symbol for garbage dynamic symbol.
* common.mk: use gc.h by parse.y.
git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@46729 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
This table is not {Symbol => ID} table, but
{String => ID} table.
* parse.y (lookup_sym_id): also rename lookup_sym_id() to
lookup_str_id() because key is not Symbol, but String.
git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@46696 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
* add `inline'.
* use UNLIKELY().
* check only DYNAMIC_SYM_P(), otherwise it is a bug.
* lookup_id_str() is not needed in second condition.
git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@46693 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
* parse.y (rb_id2str): use rb_fstring_new() instead of rb_fstring()
with a new string instance.
git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@46690 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
* parse.y (op_tbl): pack limited size strings. gcc/clang warn
if initializer-string for char array is too long, but no option
to err it now.
git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@46688 b2dd03c8-39d4-4d8f-98ff-823fe69b080e