diff options
author | nobu <nobu@b2dd03c8-39d4-4d8f-98ff-823fe69b080e> | 2015-03-28 05:22:12 +0000 |
---|---|---|
committer | nobu <nobu@b2dd03c8-39d4-4d8f-98ff-823fe69b080e> | 2015-03-28 05:22:12 +0000 |
commit | 2303483dde5db14a3d8f9dce2f41508e0de62a47 (patch) | |
tree | 2c030131777cbf674724946b3051705fa3f9aae8 /vm_eval.c | |
parent | dd6ab6b8116ea485ea7de5144b256e18e7d21872 (diff) | |
download | ruby-2303483dde5db14a3d8f9dce2f41508e0de62a47.tar.gz |
vm_eval.c: suppress warnings
* vm_eval.c (iterate_method): split to suppress false warnings by
gcc 4.4.
git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@50107 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
Diffstat (limited to 'vm_eval.c')
-rw-r--r-- | vm_eval.c | 29 |
1 files changed, 17 insertions, 12 deletions
@@ -1099,32 +1099,28 @@ static const char * vm_frametype_name(const rb_control_frame_t *cfp); #endif -VALUE -rb_iterate(VALUE (* it_proc) (VALUE), VALUE data1, - VALUE (* bl_proc) (ANYARGS), VALUE data2) +static VALUE +rb_iterate0(VALUE (* it_proc) (VALUE), VALUE data1, + const struct vm_ifunc *const ifunc, + rb_thread_t *const th) { int state; volatile VALUE retval = Qnil; - struct vm_ifunc *ifunc = bl_proc ? - IFUNC_NEW(bl_proc, data2, rb_frame_this_func()) : 0; - rb_thread_t *th = GET_THREAD(); - rb_control_frame_t *volatile cfp = th->cfp; + rb_control_frame_t *const cfp = th->cfp; TH_PUSH_TAG(th); state = TH_EXEC_TAG(); if (state == 0) { - VAR_INITIALIZED(th); - VAR_INITIALIZED(ifunc); iter_retry: { rb_block_t *blockptr; - if (bl_proc) { - blockptr = RUBY_VM_GET_BLOCK_PTR_IN_CFP(th->cfp); + if (ifunc) { + blockptr = RUBY_VM_GET_BLOCK_PTR_IN_CFP(cfp); blockptr->iseq = (void *)ifunc; blockptr->proc = 0; } else { - blockptr = VM_CF_BLOCK_PTR(th->cfp); + blockptr = VM_CF_BLOCK_PTR(cfp); } th->passed_block = blockptr; } @@ -1156,6 +1152,15 @@ rb_iterate(VALUE (* it_proc) (VALUE), VALUE data1, return retval; } +VALUE +rb_iterate(VALUE (* it_proc)(VALUE), VALUE data1, + VALUE (* bl_proc)(ANYARGS), VALUE data2) +{ + return rb_iterate0(it_proc, data1, + bl_proc ? IFUNC_NEW(bl_proc, data2, rb_frame_this_func()) : 0, + GET_THREAD()); +} + struct iter_method_arg { VALUE obj; ID mid; |