* vm.c (vm_get_ruby_level_cfp): moved from eval_intern.h.

git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@16530 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
This commit is contained in:
nobu 2008-05-22 09:55:36 +00:00
parent 5fa02c5951
commit 571883a217
3 changed files with 23 additions and 14 deletions

View File

@ -1,3 +1,7 @@
Thu May 22 18:55:33 2008 Nobuyoshi Nakada <nobu@ruby-lang.org>
* vm.c (vm_get_ruby_level_cfp): moved from eval_intern.h.
Thu May 22 17:18:35 2008 Tanaka Akira <akr@fsij.org> Thu May 22 17:18:35 2008 Tanaka Akira <akr@fsij.org>
* array.c (rb_ary_compact_bang): fix reallocation size. * array.c (rb_ary_compact_bang): fix reallocation size.

View File

@ -228,21 +228,8 @@ NORETURN(void vm_jump_tag_but_local_jump(const int, const VALUE));
NODE *vm_cref_push(rb_thread_t * const th, const VALUE, const int); NODE *vm_cref_push(rb_thread_t * const th, const VALUE, const int);
NODE *vm_set_special_cref(rb_thread_t *th, VALUE *lfp, NODE * cref_stack); NODE *vm_set_special_cref(rb_thread_t *th, VALUE *lfp, NODE * cref_stack);
VALUE vm_make_jump_tag_but_local_jump(const int state, VALUE val); VALUE vm_make_jump_tag_but_local_jump(const int state, VALUE val);
NODE *ruby_cref(void); NODE *ruby_cref(void);
rb_control_frame_t *vm_get_ruby_level_cfp(rb_thread_t *th, rb_control_frame_t *cfp);
static rb_control_frame_t *
vm_get_ruby_level_cfp(rb_thread_t *th, rb_control_frame_t *cfp)
{
while (!RUBY_VM_CONTROL_FRAME_STACK_OVERFLOW_P(th, cfp)) {
if (RUBY_VM_NORMAL_ISEQ_P(cfp->iseq)) {
return cfp;
}
cfp = RUBY_VM_PREVIOUS_CONTROL_FRAME(cfp);
}
return 0;
}
VALUE rb_obj_is_proc(VALUE); VALUE rb_obj_is_proc(VALUE);
void rb_vm_check_redefinition_opt_method(NODE * const node); void rb_vm_check_redefinition_opt_method(NODE * const node);
VALUE rb_vm_call_cfunc(const VALUE recv, VALUE (* const func)(VALUE), VALUE rb_vm_call_cfunc(const VALUE recv, VALUE (* const func)(VALUE),

18
vm.c
View File

@ -94,6 +94,18 @@ rb_vm_set_eval_stack(rb_thread_t * const th, const VALUE iseqval, NODE * const c
} }
} }
rb_control_frame_t *
vm_get_ruby_level_cfp(rb_thread_t *th, rb_control_frame_t *cfp)
{
while (!RUBY_VM_CONTROL_FRAME_STACK_OVERFLOW_P(th, cfp)) {
if (RUBY_VM_NORMAL_ISEQ_P(cfp->iseq)) {
return cfp;
}
cfp = RUBY_VM_PREVIOUS_CONTROL_FRAME(cfp);
}
return 0;
}
/* Env */ /* Env */
static void static void
@ -787,6 +799,7 @@ vm_backtrace(rb_thread_t * const th, int lev)
return ary; return ary;
} }
#if 0
static void static void
check_svar(void) check_svar(void)
{ {
@ -802,6 +815,7 @@ check_svar(void)
cfp++; cfp++;
} }
} }
#endif
NODE * NODE *
ruby_cref(void) ruby_cref(void)
@ -1545,6 +1559,7 @@ rb_thread_recycle_stack_release(VALUE * const stack)
#endif #endif
} }
#ifdef USE_THREAD_RECYCLE
static rb_thread_t * static rb_thread_t *
thread_recycle_struct(void) thread_recycle_struct(void)
{ {
@ -1552,6 +1567,7 @@ thread_recycle_struct(void)
memset(p, 0, sizeof(rb_thread_t)); memset(p, 0, sizeof(rb_thread_t));
return p; return p;
} }
#endif
static void static void
thread_free(void * const ptr) thread_free(void * const ptr)
@ -1721,6 +1737,7 @@ extern VALUE *rb_gc_register_stack_start;
#endif #endif
/* debug functions */ /* debug functions */
#if VMDEBUG
static VALUE static VALUE
sdr(void) sdr(void)
@ -1752,6 +1769,7 @@ nsdr(void)
#endif #endif
return ary; return ary;
} }
#endif
void void
Init_VM(void) Init_VM(void)