From c653db51b0b32bea9a8469dbc236538b011cc0b1 Mon Sep 17 00:00:00 2001 From: ko1 Date: Thu, 11 Sep 2014 10:34:09 +0000 Subject: * gc.c (rb_gc_mark_values): added. This function is similar to rb_gc_mark_locations(), but not conservertive. * internal.h: ditto. * vm.c (env_mark): use rb_gc_mark_values() because env values should be Ruby VALUEs. git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@47533 b2dd03c8-39d4-4d8f-98ff-823fe69b080e --- ChangeLog | 11 +++++++++++ gc.c | 11 +++++++++++ internal.h | 1 + vm.c | 2 +- 4 files changed, 24 insertions(+), 1 deletion(-) diff --git a/ChangeLog b/ChangeLog index 7e0665ed55..7bbf3380b1 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,3 +1,14 @@ +Thu Sep 11 19:32:30 2014 Koichi Sasada + + * gc.c (rb_gc_mark_values): added. + This function is similar to rb_gc_mark_locations(), but not + conservertive. + + * internal.h: ditto. + + * vm.c (env_mark): use rb_gc_mark_values() because env values should + be Ruby VALUEs. + Thu Sep 11 19:16:39 2014 Koichi Sasada * gc.c (gc_mark_ptr): rename to gc_mark_set. diff --git a/gc.c b/gc.c index 3970c8334d..8d56e3af0a 100644 --- a/gc.c +++ b/gc.c @@ -3639,6 +3639,17 @@ rb_gc_mark_locations(const VALUE *start, const VALUE *end) gc_mark_locations(&rb_objspace, start, end); } +void +rb_gc_mark_values(long n, const VALUE *values) +{ + rb_objspace_t *objspace = &rb_objspace; + long i; + + for (i=0; ienv\n"); - rb_gc_mark_locations(env->env, env->env + env->env_size); + rb_gc_mark_values((long)env->env_size, env->env); RUBY_GC_INFO("env->prev_envval\n"); RUBY_MARK_UNLESS_NULL(env->prev_envval); -- cgit v1.2.3