Project

General

Profile

« Previous | Next » 

Revision ee7f8d48

Added by ko1 (Koichi Sasada) over 13 years ago

  • 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.

git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@35306 b2dd03c8-39d4-4d8f-98ff-823fe69b080e