[前][次][番号順一覧][スレッド一覧]

ruby-changes:55168

From: k0kubun <ko1@a...>
Date: Fri, 29 Mar 2019 21:53:05 +0900 (JST)
Subject: [ruby-changes:55168] k0kubun:r67375 (trunk): Add debug counters for MJIT

k0kubun	2019-03-29 21:52:59 +0900 (Fri, 29 Mar 2019)

  New Revision: 67375

  https://svn.ruby-lang.org/cgi-bin/viewvc.cgi?view=revision&revision=67375

  Log:
    Add debug counters for MJIT

  Modified files:
    trunk/debug_counter.h
    trunk/mjit.h
Index: debug_counter.h
===================================================================
--- debug_counter.h	(revision 67374)
+++ debug_counter.h	(revision 67375)
@@ -255,6 +255,14 @@ RB_DEBUG_COUNTER(theap_alloc) https://github.com/ruby/ruby/blob/trunk/debug_counter.h#L255
 RB_DEBUG_COUNTER(theap_alloc_fail)
 RB_DEBUG_COUNTER(theap_evacuate)
 
+/* mjit_exec() counts */
+RB_DEBUG_COUNTER(mjit_exec)
+RB_DEBUG_COUNTER(mjit_exec_call_func)
+RB_DEBUG_COUNTER(mjit_exec_not_added)
+RB_DEBUG_COUNTER(mjit_exec_not_added_add_iseq)
+RB_DEBUG_COUNTER(mjit_exec_not_ready)
+RB_DEBUG_COUNTER(mjit_exec_not_compiled)
+
 /* load (not implemented yet) */
 /*
 RB_DEBUG_COUNTER(load_files)
Index: mjit.h
===================================================================
--- mjit.h	(revision 67374)
+++ mjit.h	(revision 67375)
@@ -10,6 +10,7 @@ https://github.com/ruby/ruby/blob/trunk/mjit.h#L10
 #define RUBY_MJIT_H 1
 
 #include "ruby.h"
+#include "debug_counter.h"
 
 #if USE_MJIT
 
@@ -101,6 +102,7 @@ mjit_exec(rb_execution_context_t *ec) https://github.com/ruby/ruby/blob/trunk/mjit.h#L102
 
     if (!mjit_call_p)
         return Qundef;
+    RB_DEBUG_COUNTER_INC(mjit_exec);
 
     iseq = ec->cfp->iseq;
     body = iseq->body;
@@ -110,7 +112,9 @@ mjit_exec(rb_execution_context_t *ec) https://github.com/ruby/ruby/blob/trunk/mjit.h#L112
     if (UNLIKELY((uintptr_t)func <= (uintptr_t)LAST_JIT_ISEQ_FUNC)) {
         switch ((enum rb_mjit_iseq_func)func) {
           case NOT_ADDED_JIT_ISEQ_FUNC:
+            RB_DEBUG_COUNTER_INC(mjit_exec_not_added);
             if (total_calls == mjit_opts.min_calls && mjit_target_iseq_p(body)) {
+                RB_DEBUG_COUNTER_INC(mjit_exec_not_added_add_iseq);
                 mjit_add_iseq_to_process(iseq);
                 if (UNLIKELY(mjit_opts.wait)) {
                     return mjit_wait_call(ec, body);
@@ -118,13 +122,17 @@ mjit_exec(rb_execution_context_t *ec) https://github.com/ruby/ruby/blob/trunk/mjit.h#L122
             }
             return Qundef;
           case NOT_READY_JIT_ISEQ_FUNC:
+            RB_DEBUG_COUNTER_INC(mjit_exec_not_ready);
+            return Qundef;
           case NOT_COMPILED_JIT_ISEQ_FUNC:
+            RB_DEBUG_COUNTER_INC(mjit_exec_not_compiled);
             return Qundef;
           default: /* to avoid warning with LAST_JIT_ISEQ_FUNC */
             break;
         }
     }
 
+    RB_DEBUG_COUNTER_INC(mjit_exec_call_func);
     return func(ec, ec->cfp);
 }
 

--
ML: ruby-changes@q...
Info: http://www.atdot.net/~ko1/quickml/

[前][次][番号順一覧][スレッド一覧]