compile.c (compile_array, compile_array_): Divide big array (or hash) literals into several blocks and concatetene them. There was a problem that a big array (hash) literal causes SystemStackError exception (stack overflow) because VM push all contents of the literal onto VM stack to make an array (or hash). To solve this issue, we make several arrays (hashes) and concatenate them to make a big array (hash) object. ??
compile.c (iseq_compile_each, setup_args): use modified compile_array.
vm.c (m_core_hash_from_ary, m_core_hash_merge_ary, m_core_hash_merge_ptr): added for above change.
id.c (Init_id), parse.y: add core method ids.
bootstraptest/test_literal.rb: add simple tests.
bootstraptest/test_eval.rb: remove rescue clause to catch SystemStackError exception.
test/ruby/test_literal.rb: add tests to check no stack overflow.
Divide big array (or hash) literals into several blocks and
concatetene them. There was a problem that a big array (hash)
literal causes SystemStackError exception (stack overflow)
because VM push all contents of the literal onto VM stack to
make an array (or hash). To solve this issue, we make several
arrays (hashes) and concatenate them to make a big array (hash)
object.
??
compile_array.
m_core_hash_merge_ptr): added for above change.
SystemStackError exception.
git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@35306 b2dd03c8-39d4-4d8f-98ff-823fe69b080e