summaryrefslogtreecommitdiff
path: root/gc.c
diff options
context:
space:
mode:
authorko1 <ko1@b2dd03c8-39d4-4d8f-98ff-823fe69b080e>2013-12-06 07:22:25 +0000
committerko1 <ko1@b2dd03c8-39d4-4d8f-98ff-823fe69b080e>2013-12-06 07:22:25 +0000
commit0e20c2afa818cbe47cad65da93db8b6bb9fe2a5f (patch)
treeb8a0e5dd4776bd591bef67daaf78f9a76463bfa8 /gc.c
parentb10a8c52e38ae9630d018e6d3aa118ade7347bec (diff)
* 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
Diffstat (limited to 'gc.c')
-rw-r--r--gc.c27
1 files changed, 13 insertions, 14 deletions
diff --git a/gc.c b/gc.c
index 11abde8b2f..07e970e3ba 100644
--- a/gc.c
+++ b/gc.c
@@ -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);