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

ruby-changes:60758

From: Takashi <ko1@a...>
Date: Mon, 13 Apr 2020 15:11:00 +0900 (JST)
Subject: [ruby-changes:60758] a3f6f67967 (master): Add MJIT_COUNTER macro to dump total_calls

https://git.ruby-lang.org/ruby.git/commit/?id=a3f6f67967

From a3f6f67967644f34226b4424227d2eec52fedd45 Mon Sep 17 00:00:00 2001
From: Takashi Kokubun <takashikkbn@g...>
Date: Sun, 12 Apr 2020 23:10:22 -0700
Subject: Add MJIT_COUNTER macro to dump total_calls


diff --git a/mjit.c b/mjit.c
index 551f746..c394cd5 100644
--- a/mjit.c
+++ b/mjit.c
@@ -923,6 +923,22 @@ mjit_child_after_fork(void) https://github.com/ruby/ruby/blob/trunk/mjit.c#L923
     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
 // and free MJIT data.  It should be called last during MJIT
 // life.
@@ -958,6 +974,10 @@ mjit_finish(bool close_handle_p) https://github.com/ruby/ruby/blob/trunk/mjit.c#L974
     rb_native_cond_destroy(&mjit_worker_wakeup);
     rb_native_cond_destroy(&mjit_gc_wakeup);
 
+#if MJIT_COUNTER
+    mjit_dump_total_calls();
+#endif
+
 #ifndef _MSC_VER // mswin has prebuilt precompiled header
     if (!mjit_opts.save_temps && getpid() == pch_owner_pid)
         remove_file(pch_file);
-- 
cgit v0.10.2


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

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