summaryrefslogtreecommitdiff
path: root/parse.y
diff options
context:
space:
mode:
authortmm1 <tmm1@b2dd03c8-39d4-4d8f-98ff-823fe69b080e>2013-12-08 01:52:28 +0000
committertmm1 <tmm1@b2dd03c8-39d4-4d8f-98ff-823fe69b080e>2013-12-08 01:52:28 +0000
commit779ae78995977305aa5aec9cb5b562dcf54c22e7 (patch)
tree03cb95144e04846d686d4fc01a6a8a000b9d807d /parse.y
parent98a74d4dd5fa9cd45121e8ebfc2f787d316e924f (diff)
hash.c: revert r43870 and add alternative parser patch for literal keys
* hash.c (hash_aset_str): revert r43870 due to performance issue [Bug #9188] [ruby-core:58730] * parse.y (assoc): convert literal string hash keys to fstrings * test/ruby/test_hash.rb (class TestHash): expand test git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@44058 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
Diffstat (limited to 'parse.y')
-rw-r--r--parse.y4
1 files changed, 4 insertions, 0 deletions
diff --git a/parse.y b/parse.y
index 2a0c5c64f7..d04cf45612 100644
--- a/parse.y
+++ b/parse.y
@@ -4912,6 +4912,10 @@ assocs : assoc
assoc : arg_value tASSOC arg_value
{
/*%%%*/
+ if (nd_type($1) == NODE_STR) {
+ nd_set_type($1, NODE_LIT);
+ $1->nd_lit = rb_fstring($1->nd_lit);
+ }
$$ = list_append(NEW_LIST($1), $3);
/*%
$$ = dispatch2(assoc_new, $1, $3);