vm_insnhelper.c: use enum and fix typo
* vm_insnhelper.c (VM_PROFILE_UP): use enum. * vm_insnhelper.c (vm_profile_show_result): fix typo, "r->c" at the last should be "c->c". git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@52343 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
This commit is contained in:
parent
fd69901b26
commit
438f36dd2d
@ -81,7 +81,7 @@ vm_call0_cfunc(rb_thread_t* th, struct rb_calling_info *calling, const struct rb
|
|||||||
|
|
||||||
th->passed_ci = ci;
|
th->passed_ci = ci;
|
||||||
cc->aux.inc_sp = 0;
|
cc->aux.inc_sp = 0;
|
||||||
VM_PROFILE_UP(2);
|
VM_PROFILE_UP(C2C_CALL);
|
||||||
val = (*cfunc->invoker)(cfunc->func, recv, argc, argv);
|
val = (*cfunc->invoker)(cfunc->func, recv, argc, argv);
|
||||||
|
|
||||||
if (reg_cfp == th->cfp) {
|
if (reg_cfp == th->cfp) {
|
||||||
@ -94,7 +94,7 @@ vm_call0_cfunc(rb_thread_t* th, struct rb_calling_info *calling, const struct rb
|
|||||||
if (reg_cfp != th->cfp + 1) {
|
if (reg_cfp != th->cfp + 1) {
|
||||||
rb_bug("vm_call0_cfunc: cfp consistency error");
|
rb_bug("vm_call0_cfunc: cfp consistency error");
|
||||||
}
|
}
|
||||||
VM_PROFILE_UP(3);
|
VM_PROFILE_UP(C2C_POPF);
|
||||||
vm_pop_frame(th);
|
vm_pop_frame(th);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@ -127,13 +127,13 @@ vm_call0_cfunc_with_frame(rb_thread_t* th, struct rb_calling_info *calling, cons
|
|||||||
|
|
||||||
if (len >= 0) rb_check_arity(argc, len, len);
|
if (len >= 0) rb_check_arity(argc, len, len);
|
||||||
|
|
||||||
VM_PROFILE_UP(2);
|
VM_PROFILE_UP(C2C_CALL);
|
||||||
val = (*cfunc->invoker)(cfunc->func, recv, argc, argv);
|
val = (*cfunc->invoker)(cfunc->func, recv, argc, argv);
|
||||||
|
|
||||||
if (UNLIKELY(reg_cfp != th->cfp + 1)) {
|
if (UNLIKELY(reg_cfp != th->cfp + 1)) {
|
||||||
rb_bug("vm_call0_cfunc_with_frame: cfp consistency error");
|
rb_bug("vm_call0_cfunc_with_frame: cfp consistency error");
|
||||||
}
|
}
|
||||||
VM_PROFILE_UP(3);
|
VM_PROFILE_UP(C2C_POPF);
|
||||||
vm_pop_frame(th);
|
vm_pop_frame(th);
|
||||||
}
|
}
|
||||||
EXEC_EVENT_HOOK(th, RUBY_EVENT_C_RETURN, recv, mid, me->owner, val);
|
EXEC_EVENT_HOOK(th, RUBY_EVENT_C_RETURN, recv, mid, me->owner, val);
|
||||||
|
@ -1568,17 +1568,24 @@ call_cfunc_15(VALUE (*func)(ANYARGS), VALUE recv, int argc, const VALUE *argv)
|
|||||||
#endif
|
#endif
|
||||||
|
|
||||||
#if VM_PROFILE
|
#if VM_PROFILE
|
||||||
static int vm_profile_counter[4];
|
enum {
|
||||||
#define VM_PROFILE_UP(x) (vm_profile_counter[x]++)
|
VM_PROFILE_R2C_CALL,
|
||||||
|
VM_PROFILE_R2C_POPF,
|
||||||
|
VM_PROFILE_C2C_CALL,
|
||||||
|
VM_PROFILE_C2C_POPF,
|
||||||
|
VM_PROFILE_COUNT
|
||||||
|
};
|
||||||
|
static int vm_profile_counter[VM_PROFILE_COUNT];
|
||||||
|
#define VM_PROFILE_UP(x) (vm_profile_counter[VM_PROFILE_##x]++)
|
||||||
#define VM_PROFILE_ATEXIT() atexit(vm_profile_show_result)
|
#define VM_PROFILE_ATEXIT() atexit(vm_profile_show_result)
|
||||||
static void
|
static void
|
||||||
vm_profile_show_result(void)
|
vm_profile_show_result(void)
|
||||||
{
|
{
|
||||||
fprintf(stderr, "VM Profile results: \n");
|
fprintf(stderr, "VM Profile results: \n");
|
||||||
fprintf(stderr, "r->c call: %d\n", vm_profile_counter[0]);
|
fprintf(stderr, "r->c call: %d\n", vm_profile_counter[VM_PROFILE_R2C_CALL]);
|
||||||
fprintf(stderr, "r->c popf: %d\n", vm_profile_counter[1]);
|
fprintf(stderr, "r->c popf: %d\n", vm_profile_counter[VM_PROFILE_R2C_POPF]);
|
||||||
fprintf(stderr, "c->c call: %d\n", vm_profile_counter[2]);
|
fprintf(stderr, "c->c call: %d\n", vm_profile_counter[VM_PROFILE_C2C_CALL]);
|
||||||
fprintf(stderr, "r->c popf: %d\n", vm_profile_counter[3]);
|
fprintf(stderr, "c->c popf: %d\n", vm_profile_counter[VM_PROFILE_C2C_POPF]);
|
||||||
}
|
}
|
||||||
#else
|
#else
|
||||||
#define VM_PROFILE_UP(x)
|
#define VM_PROFILE_UP(x)
|
||||||
@ -1635,7 +1642,7 @@ vm_call_cfunc_with_frame(rb_thread_t *th, rb_control_frame_t *reg_cfp, struct rb
|
|||||||
if (len >= 0) rb_check_arity(argc, len, len);
|
if (len >= 0) rb_check_arity(argc, len, len);
|
||||||
|
|
||||||
reg_cfp->sp -= argc + 1;
|
reg_cfp->sp -= argc + 1;
|
||||||
VM_PROFILE_UP(0);
|
VM_PROFILE_UP(R2C_CALL);
|
||||||
val = (*cfunc->invoker)(cfunc->func, recv, argc, reg_cfp->sp + 1);
|
val = (*cfunc->invoker)(cfunc->func, recv, argc, reg_cfp->sp + 1);
|
||||||
|
|
||||||
if (reg_cfp != th->cfp + 1) {
|
if (reg_cfp != th->cfp + 1) {
|
||||||
@ -1663,7 +1670,7 @@ vm_call_cfunc_latter(rb_thread_t *th, rb_control_frame_t *reg_cfp, struct rb_cal
|
|||||||
th->passed_calling = calling;
|
th->passed_calling = calling;
|
||||||
reg_cfp->sp -= argc + 1;
|
reg_cfp->sp -= argc + 1;
|
||||||
ci->aux.inc_sp = argc + 1;
|
ci->aux.inc_sp = argc + 1;
|
||||||
VM_PROFILE_UP(0);
|
VM_PROFILE_UP(R2C_CALL);
|
||||||
val = (*cfunc->invoker)(cfunc->func, recv, argc, argv);
|
val = (*cfunc->invoker)(cfunc->func, recv, argc, argv);
|
||||||
|
|
||||||
/* check */
|
/* check */
|
||||||
@ -1678,7 +1685,7 @@ vm_call_cfunc_latter(rb_thread_t *th, rb_control_frame_t *reg_cfp, struct rb_cal
|
|||||||
rb_bug("vm_call_cfunc_latter: cfp consistency error (%p, %p)", reg_cfp, th->cfp+1);
|
rb_bug("vm_call_cfunc_latter: cfp consistency error (%p, %p)", reg_cfp, th->cfp+1);
|
||||||
}
|
}
|
||||||
vm_pop_frame(th);
|
vm_pop_frame(th);
|
||||||
VM_PROFILE_UP(1);
|
VM_PROFILE_UP(R2C_POPF);
|
||||||
}
|
}
|
||||||
|
|
||||||
return val;
|
return val;
|
||||||
|
Loading…
x
Reference in New Issue
Block a user