diff options
author | normal <normal@b2dd03c8-39d4-4d8f-98ff-823fe69b080e> | 2015-06-25 23:06:48 +0000 |
---|---|---|
committer | normal <normal@b2dd03c8-39d4-4d8f-98ff-823fe69b080e> | 2015-06-25 23:06:48 +0000 |
commit | 9f1c009497431a5fd161eb530f8f1ccfbe0acac3 (patch) | |
tree | 585cbb72c39af6cf202074b53a9c43b04531a19d /hash.c | |
parent | cc5547a4ade99311a9fe37754083f996a6c83a2d (diff) | |
download | ruby-9f1c009497431a5fd161eb530f8f1ccfbe0acac3.tar.gz |
enum.c (enum_minmax): simplify return value creation
No need to call three functions on success when one will do.
This results in less LoC and smaller object code, too:
text data bss dec hex filename
33860 0 296 34156 856c gcc/enum.o-before
33852 0 296 34148 8564 gcc/enum.o
* enum.c (enum_minmax): simplify return value creation
* test/ruby/test_enum.rb: test behavior on empty
git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@51036 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
Diffstat (limited to 'hash.c')
-rw-r--r-- | hash.c | 15 |
1 files changed, 10 insertions, 5 deletions
@@ -821,7 +821,7 @@ rb_hash_fetch_m(int argc, VALUE *argv, VALUE hash) if (!RHASH(hash)->ntbl || !st_lookup(RHASH(hash)->ntbl, key, &val)) { if (block_given) return rb_yield(key); if (argc == 1) { - volatile VALUE desc = rb_protect(rb_inspect, key, 0); + VALUE desc = rb_protect(rb_inspect, key, 0); if (NIL_P(desc)) { desc = rb_any_to_s(key); } @@ -3284,7 +3284,7 @@ env_each_pair(VALUE ehash) static VALUE env_reject_bang(VALUE ehash) { - volatile VALUE keys; + VALUE keys; long i; int del = 0; @@ -3301,6 +3301,7 @@ env_reject_bang(VALUE ehash) } } } + RB_GC_GUARD(keys); if (del == 0) return Qnil; return envtbl; } @@ -3370,6 +3371,7 @@ env_select(VALUE ehash) } } } + RB_GC_GUARD(keys); return result; } @@ -3384,7 +3386,7 @@ env_select(VALUE ehash) static VALUE env_select_bang(VALUE ehash) { - volatile VALUE keys; + VALUE keys; long i; int del = 0; @@ -3401,6 +3403,7 @@ env_select_bang(VALUE ehash) } } } + RB_GC_GUARD(keys); if (del == 0) return Qnil; return envtbl; } @@ -3431,7 +3434,7 @@ env_keep_if(VALUE ehash) VALUE rb_env_clear(void) { - volatile VALUE keys; + VALUE keys; long i; keys = env_keys(); @@ -3441,6 +3444,7 @@ rb_env_clear(void) env_delete(Qnil, RARRAY_AREF(keys, i)); } } + RB_GC_GUARD(keys); return envtbl; } @@ -3820,7 +3824,7 @@ env_replace_i(VALUE key, VALUE val, VALUE keys) static VALUE env_replace(VALUE env, VALUE hash) { - volatile VALUE keys; + VALUE keys; long i; keys = env_keys(); @@ -3831,6 +3835,7 @@ env_replace(VALUE env, VALUE hash) for (i=0; i<RARRAY_LEN(keys); i++) { env_delete(env, RARRAY_AREF(keys, i)); } + RB_GC_GUARD(keys); return env; } |