diff options
author | ko1 <ko1@b2dd03c8-39d4-4d8f-98ff-823fe69b080e> | 2013-12-06 07:22:25 +0000 |
---|---|---|
committer | ko1 <ko1@b2dd03c8-39d4-4d8f-98ff-823fe69b080e> | 2013-12-06 07:22:25 +0000 |
commit | 0e20c2afa818cbe47cad65da93db8b6bb9fe2a5f (patch) | |
tree | b8a0e5dd4776bd591bef67daaf78f9a76463bfa8 | |
parent | b10a8c52e38ae9630d018e6d3aa118ade7347bec (diff) | |
download | ruby-0e20c2afa818cbe47cad65da93db8b6bb9fe2a5f.tar.gz |
* gc.c (gc_start_internal): do not use rb_gc_start() and rb_gc().
git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@44031 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
-rw-r--r-- | ChangeLog | 4 | ||||
-rw-r--r-- | gc.c | 27 |
2 files changed, 17 insertions, 14 deletions
@@ -1,3 +1,7 @@ +Fri Dec 6 16:16:30 2013 Koichi Sasada <ko1@atdot.net> + + * gc.c (gc_start_internal): do not use rb_gc_start() and rb_gc(). + Fri Dec 6 15:24:30 2013 Koichi Sasada <ko1@atdot.net> * gc.c (gc_start_internal, rb_gc): do not need @@ -5019,23 +5019,22 @@ gc_start_internal(int argc, VALUE *argv, VALUE self) static VALUE keyword_syms[2]; rb_scan_args(argc, argv, "0:", &opt); - if (NIL_P(opt)) { - return rb_gc_start(); - } - if (!keyword_ids[0]) { - keyword_ids[0] = rb_intern("full_mark"); - keyword_ids[1] = rb_intern("immediate_sweep"); - keyword_syms[0] = ID2SYM(keyword_ids[0]); - keyword_syms[1] = ID2SYM(keyword_ids[1]); - } + if (!NIL_P(opt)) { + if (!keyword_ids[0]) { + keyword_ids[0] = rb_intern("full_mark"); + keyword_ids[1] = rb_intern("immediate_sweep"); + keyword_syms[0] = ID2SYM(keyword_ids[0]); + keyword_syms[1] = ID2SYM(keyword_ids[1]); + } - rb_check_keyword_opthash(opt, keyword_ids, 0, 2); + rb_check_keyword_opthash(opt, keyword_ids, 0, 2); - if ((kwval = rb_hash_lookup2(opt, keyword_syms[0], Qundef)) != Qundef) - full_mark = RTEST(kwval); - if ((kwval = rb_hash_lookup2(opt, keyword_syms[1], Qundef)) != Qundef) - immediate_sweep = RTEST(kwval); + if ((kwval = rb_hash_lookup2(opt, keyword_syms[0], Qundef)) != Qundef) + full_mark = RTEST(kwval); + if ((kwval = rb_hash_lookup2(opt, keyword_syms[1], Qundef)) != Qundef) + immediate_sweep = RTEST(kwval); + } garbage_collect(objspace, full_mark, immediate_sweep, GPR_FLAG_METHOD); if (!finalizing) finalize_deferred(objspace); |