diff options
| -rw-r--r-- | ChangeLog | 4 | ||||
| -rw-r--r-- | vm.c | 6 |
2 files changed, 6 insertions, 4 deletions
@@ -1,3 +1,7 @@ +Thu Sep 11 20:10:00 2014 Koichi Sasada <ko1@atdot.net> + + * vm.c (rb_thread_mark): use rb_gc_mark_values() to mark VM stack. + Thu Sep 11 19:50:57 2014 Koichi Sasada <ko1@atdot.net> * vm.c (rb_vm_register_special_exception): make new function to @@ -1981,10 +1981,8 @@ rb_thread_mark(void *ptr) rb_control_frame_t *cfp = th->cfp; rb_control_frame_t *limit_cfp = (void *)(th->stack + th->stack_size); - while (p < sp) { - rb_gc_mark(*p++); - } - rb_gc_mark_locations(p, p + th->mark_stack_len); + rb_gc_mark_values((long)(sp - p), p); + rb_gc_mark_locations(sp, sp + th->mark_stack_len); while (cfp != limit_cfp) { rb_iseq_t *iseq = cfp->iseq; |
