summaryrefslogtreecommitdiff
path: root/gc.c
diff options
context:
space:
mode:
authornobu <nobu@b2dd03c8-39d4-4d8f-98ff-823fe69b080e>2013-12-06 08:10:47 +0000
committernobu <nobu@b2dd03c8-39d4-4d8f-98ff-823fe69b080e>2013-12-06 08:10:47 +0000
commitb9cafaf5246fb240f52ebfce67ae2b72dd4eb363 (patch)
tree842609f74c880929bf3644ca9101e632341df086 /gc.c
parentc7572f2fe777c96880905ee37ab313cd52b5aa51 (diff)
vm_insnhelper.c: rb_get_kwargs
* vm_insnhelper.c (rb_get_kwargs): get keyword argument values from an option hash, not only checking keys. * dir.c (dir_initialize): use rb_get_kwargs. * gc.c (gc_start_internal): ditto. git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@44035 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
Diffstat (limited to 'gc.c')
-rw-r--r--gc.c16
1 files changed, 7 insertions, 9 deletions
diff --git a/gc.c b/gc.c
index e10109b707..d5a708a71a 100644
--- a/gc.c
+++ b/gc.c
@@ -5014,26 +5014,24 @@ gc_start_internal(int argc, VALUE *argv, VALUE self)
rb_objspace_t *objspace = &rb_objspace;
int full_mark = TRUE, immediate_sweep = TRUE;
VALUE opt = Qnil;
- VALUE kwval;
static ID keyword_ids[2];
- static VALUE keyword_syms[2];
rb_scan_args(argc, argv, "0:", &opt);
if (!NIL_P(opt)) {
+ VALUE kwvals[2];
+
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_get_kwargs(opt, keyword_ids, 0, 2, kwvals);
- 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 (kwvals[0] != Qundef)
+ full_mark = RTEST(kwvals[0]);
+ if (kwvals[1] != Qundef)
+ immediate_sweep = RTEST(kwvals[1]);
}
garbage_collect(objspace, full_mark, immediate_sweep, GPR_FLAG_METHOD);