Add MJIT_COUNTER macro to dump total_calls

This commit is contained in:
Takashi Kokubun 2020-04-12 23:10:22 -07:00
Родитель 82fdffc5ec
Коммит a3f6f67967
Не найден ключ, соответствующий данной подписи
Идентификатор ключа GPG: 6FFC433B12EE23DD
1 изменённых файлов: 20 добавлений и 0 удалений

20
mjit.c
Просмотреть файл

@ -923,6 +923,22 @@ mjit_child_after_fork(void)
start_worker(); start_worker();
} }
// Edit 0 to 1 to enable this feature for investigating hot methods
#define MJIT_COUNTER 0
#if MJIT_COUNTER
static void
mjit_dump_total_calls(void)
{
struct rb_mjit_unit *unit;
fprintf(stderr, "[MJIT_COUNTER] total_calls of active_units:\n");
list_for_each(&active_units.head, unit, unode) {
const rb_iseq_t *iseq = unit->iseq;
fprintf(stderr, "%8ld: %s@%s:%d\n", iseq->body->total_calls, RSTRING_PTR(iseq->body->location.label),
RSTRING_PTR(rb_iseq_path(iseq)), FIX2INT(iseq->body->location.first_lineno));
}
}
#endif
// Finish the threads processing units and creating PCH, finalize // Finish the threads processing units and creating PCH, finalize
// and free MJIT data. It should be called last during MJIT // and free MJIT data. It should be called last during MJIT
// life. // life.
@ -958,6 +974,10 @@ mjit_finish(bool close_handle_p)
rb_native_cond_destroy(&mjit_worker_wakeup); rb_native_cond_destroy(&mjit_worker_wakeup);
rb_native_cond_destroy(&mjit_gc_wakeup); rb_native_cond_destroy(&mjit_gc_wakeup);
#if MJIT_COUNTER
mjit_dump_total_calls();
#endif
#ifndef _MSC_VER // mswin has prebuilt precompiled header #ifndef _MSC_VER // mswin has prebuilt precompiled header
if (!mjit_opts.save_temps && getpid() == pch_owner_pid) if (!mjit_opts.save_temps && getpid() == pch_owner_pid)
remove_file(pch_file); remove_file(pch_file);