diff options
author | matz <matz@b2dd03c8-39d4-4d8f-98ff-823fe69b080e> | 2008-06-13 04:02:36 +0000 |
---|---|---|
committer | matz <matz@b2dd03c8-39d4-4d8f-98ff-823fe69b080e> | 2008-06-13 04:02:36 +0000 |
commit | 97c8c1fa0e2770973c5911ef24708d13fb8a34b4 (patch) | |
tree | 3742d7f4d4a8e3e1662bfa14f56f1b4d6866b970 /enum.c | |
parent | 283826f751e9447485bd322ea108daf8b9b824d4 (diff) | |
download | ruby-97c8c1fa0e2770973c5911ef24708d13fb8a34b4.tar.gz |
* enum.c (sort_by_i): use NODE_DOT2 instead of NODE_MEMO to avoid
extra calls to is_pointer_to_heap() in GC.
* enum.c (enum_zip): ditto.
git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@17137 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
Diffstat (limited to 'enum.c')
-rw-r--r-- | enum.c | 6 |
1 files changed, 4 insertions, 2 deletions
@@ -691,7 +691,8 @@ sort_by_i(VALUE i, VALUE ary, int argc, VALUE *argv) if (RBASIC(ary)->klass) { rb_raise(rb_eRuntimeError, "sort_by reentered"); } - memo = rb_node_newnode(NODE_MEMO, rb_yield(i), i, 0); + /* use NODE_DOT2 as memo(v, v, -) */ + memo = rb_node_newnode(NODE_DOT2, rb_yield(i), i, 0); rb_ary_push(ary, (VALUE)memo); return Qnil; } @@ -1574,7 +1575,8 @@ enum_zip(int argc, VALUE *argv, VALUE obj) if (!rb_block_given_p()) { result = rb_ary_new(); } - memo = rb_node_newnode(NODE_MEMO, result, rb_ary_new4(argc, argv), 0); + /* use NODE_DOT2 as memo(v, v, -) */ + memo = rb_node_newnode(NODE_DOT2, result, rb_ary_new4(argc, argv), 0); rb_block_call(obj, id_each, 0, 0, allary ? zip_ary : zip_i, (VALUE)memo); return result; |