diff options
author | ko1 <ko1@b2dd03c8-39d4-4d8f-98ff-823fe69b080e> | 2007-07-05 18:16:54 +0000 |
---|---|---|
committer | ko1 <ko1@b2dd03c8-39d4-4d8f-98ff-823fe69b080e> | 2007-07-05 18:16:54 +0000 |
commit | 976bfae03be67236543367aef7b8a22df02cd37b (patch) | |
tree | 8942ae65bee913d9329292fc0408b8635d0fc3fc /insns.def | |
parent | b9171a73c4f0d212b723e0160859ab69b89b3339 (diff) | |
download | ruby-976bfae03be67236543367aef7b8a22df02cd37b.tar.gz |
* insns.def: remove unused code.
* compile.c (compile_massign): fix to invoke to_splat on
splat rhs (example: *a = *nil). [ruby-dev:31136]
* bootstraptest/test_massign.rb: add tests for above.
* compile.c (iseq_compile_each): disable excess optimization.
[ruby-dev:31126]
git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@12708 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
Diffstat (limited to 'insns.def')
-rw-r--r-- | insns.def | 44 |
1 files changed, 14 insertions, 30 deletions
@@ -505,40 +505,24 @@ expandarray } } else { - if ((long)num >= 0) { - int len; - if (TYPE(ary) != T_ARRAY) { - ary = rb_ary_to_ary(ary); - } - len = RARRAY_LEN(ary); - for (i = 0; i < len && i < num; i++) { - PUSH(RARRAY_PTR(ary)[i]); - } - for (; i < num; i++) { - PUSH(Qnil); - } - if (flag) { - if (len > num) { - PUSH(rb_ary_new4(len - num, &RARRAY_PTR(ary)[num])); - } - else { - PUSH(rb_ary_new()); - } - } + int len; + if (TYPE(ary) != T_ARRAY) { + ary = rb_ary_to_ary(ary); } - else { - long holdnum = -num; - VALUE val; - - val = rb_ary_new4(holdnum, STACK_ADDR_FROM_TOP(holdnum)); - if (CLASS_OF(ary) == rb_cArray) { - val = rb_ary_concat(val, ary); + len = RARRAY_LEN(ary); + for (i = 0; i < len && i < num; i++) { + PUSH(RARRAY_PTR(ary)[i]); + } + for (; i < num; i++) { + PUSH(Qnil); + } + if (flag) { + if (len > num) { + PUSH(rb_ary_new4(len - num, &RARRAY_PTR(ary)[num])); } else { - rb_ary_push(val, ary); + PUSH(rb_ary_new()); } - POPN(holdnum); - PUSH(val); } } } |