542542MonodroidRuntime::prof_assembly_loading ([[maybe_unused]] MonoProfiler *prof, MonoAssembly *assembly) noexcept
543543{
544544#if defined(PERFETTO_ENABLED)
545- auto track = PerfettoSupport::get_name_annotated_track<PerfettoTrackId::AssemblyLoad > ();
545+ auto track = PerfettoSupport::get_name_annotated_track<PerfettoTrackId::AssemblyLoadMonoVM > ();
546546 TRACE_EVENT_BEGIN (PerfettoConstants::MonoRuntimeCategory.data (), PerfettoConstants::AssemblyLoadAnnotation.data (), track);
547547#endif
548548}
551551MonodroidRuntime::prof_assembly_loaded ([[maybe_unused]] MonoProfiler *prof, MonoAssembly *assembly) noexcept
552552{
553553#if defined(PERFETTO_ENABLED)
554- auto track = PerfettoSupport::get_name_annotated_track<PerfettoTrackId::AssemblyLoad > ();
554+ auto track = PerfettoSupport::get_name_annotated_track<PerfettoTrackId::AssemblyLoadMonoVM > ();
555555 TRACE_EVENT_END (PerfettoConstants::MonoRuntimeCategory.data (), track, [&](perfetto::EventContext ctx) {
556556 PerfettoSupport::add_name_annotation (ctx, assembly);
557557 });
562562MonodroidRuntime::prof_image_loading ([[maybe_unused]] MonoProfiler *prof, MonoImage *image) noexcept
563563{
564564#if defined(PERFETTO_ENABLED)
565- auto track = PerfettoSupport::get_name_annotated_track<PerfettoTrackId::ImageLoad > ();
565+ auto track = PerfettoSupport::get_name_annotated_track<PerfettoTrackId::ImageLoadMonoVM > ();
566566 TRACE_EVENT_BEGIN (PerfettoConstants::MonoRuntimeCategory.data (), PerfettoConstants::ImageLoadAnnotation.data (), track);
567567#endif
568568}
571571MonodroidRuntime::prof_image_loaded ([[maybe_unused]] MonoProfiler *prof, MonoImage *image) noexcept
572572{
573573#if defined(PERFETTO_ENABLED)
574- auto track = PerfettoSupport::get_name_annotated_track<PerfettoTrackId::ImageLoad > ();
574+ auto track = PerfettoSupport::get_name_annotated_track<PerfettoTrackId::ImageLoadMonoVM > ();
575575 TRACE_EVENT_END (PerfettoConstants::MonoRuntimeCategory.data (), track, [&](perfetto::EventContext ctx) {
576576 PerfettoSupport::add_name_annotation (ctx, image);
577577 });
582582MonodroidRuntime::prof_class_loading ([[maybe_unused]] MonoProfiler *prof, MonoClass *klass) noexcept
583583{
584584#if defined(PERFETTO_ENABLED)
585- auto track = PerfettoSupport::get_name_annotated_track<PerfettoTrackId::ClassLoad > ();
585+ auto track = PerfettoSupport::get_name_annotated_track<PerfettoTrackId::ClassLoadMonoVM > ();
586586 TRACE_EVENT_BEGIN (PerfettoConstants::MonoRuntimeCategory.data (), PerfettoConstants::ClassLoadAnnotation.data (), track);
587587#endif
588588}
@@ -591,16 +591,18 @@ void
591591MonodroidRuntime::prof_class_loaded ([[maybe_unused]] MonoProfiler *prof, MonoClass *klass) noexcept
592592{
593593#if defined(PERFETTO_ENABLED)
594- auto track = PerfettoSupport::get_name_annotated_track<PerfettoTrackId::ClassLoad> ();
595- TRACE_EVENT_END (PerfettoConstants::MonoRuntimeCategory.data (), track);
594+ auto track = PerfettoSupport::get_name_annotated_track<PerfettoTrackId::ClassLoadMonoVM> ();
595+ TRACE_EVENT_END (PerfettoConstants::MonoRuntimeCategory.data (), track, [&](perfetto::EventContext ctx) {
596+ PerfettoSupport::add_name_annotation (ctx, klass);
597+ });
596598#endif
597599}
598600
599601void
600602MonodroidRuntime::prof_vtable_loading ([[maybe_unused]] MonoProfiler *prof, MonoVTable *vtable) noexcept
601603{
602604#if defined(PERFETTO_ENABLED)
603- auto track = PerfettoSupport::get_name_annotated_track<PerfettoTrackId::VTableLoad > ();
605+ auto track = PerfettoSupport::get_name_annotated_track<PerfettoTrackId::VTableLoadMonoVM > ();
604606 TRACE_EVENT_BEGIN (PerfettoConstants::MonoRuntimeCategory.data (), PerfettoConstants::VTableLoadAnnotation.data (), track);
605607#endif
606608}
@@ -609,16 +611,18 @@ void
609611MonodroidRuntime::prof_vtable_loaded ([[maybe_unused]] MonoProfiler *prof, MonoVTable *vtable) noexcept
610612{
611613#if defined(PERFETTO_ENABLED)
612- auto track = PerfettoSupport::get_name_annotated_track<PerfettoTrackId::VTableLoad> ();
613- TRACE_EVENT_END (PerfettoConstants::MonoRuntimeCategory.data (), track);
614+ auto track = PerfettoSupport::get_name_annotated_track<PerfettoTrackId::VTableLoadMonoVM> ();
615+ TRACE_EVENT_END (PerfettoConstants::MonoRuntimeCategory.data (), track, [&](perfetto::EventContext ctx) {
616+ PerfettoSupport::add_name_annotation (ctx, vtable);
617+ });
614618#endif
615619}
616620
617621void
618622MonodroidRuntime::prof_method_begin_invoke ([[maybe_unused]] MonoProfiler *prof, MonoMethod *method) noexcept
619623{
620624#if defined(PERFETTO_ENABLED)
621- auto track = PerfettoSupport::get_name_annotated_track<PerfettoTrackId::MethodInvoke > ();
625+ auto track = PerfettoSupport::get_name_annotated_track<PerfettoTrackId::MethodInvokeMonoVM > ();
622626 TRACE_EVENT_BEGIN (PerfettoConstants::MonoRuntimeCategory.data (), PerfettoConstants::MethodInvokeAnnotation.data (), track);
623627#endif
624628}
627631MonodroidRuntime::prof_method_end_invoke ([[maybe_unused]] MonoProfiler *prof, MonoMethod *method) noexcept
628632{
629633#if defined(PERFETTO_ENABLED)
630- auto track = PerfettoSupport::get_name_annotated_track<PerfettoTrackId::MethodInvoke > ();
634+ auto track = PerfettoSupport::get_name_annotated_track<PerfettoTrackId::MethodInvokeMonoVM > ();
631635 TRACE_EVENT_END (PerfettoConstants::MonoRuntimeCategory.data (), track, [&](perfetto::EventContext ctx) {
632636 PerfettoSupport::add_name_annotation (ctx, method);
633637 });
638642MonodroidRuntime::prof_method_enter ([[maybe_unused]] MonoProfiler *prof, MonoMethod *method, [[maybe_unused]] MonoProfilerCallContext *context) noexcept
639643{
640644#if defined(PERFETTO_ENABLED)
641- auto track = PerfettoSupport::get_name_annotated_track<PerfettoTrackId::MethodInner > ();
645+ auto track = PerfettoSupport::get_name_annotated_track<PerfettoTrackId::MethodInnerMonoVM > ();
642646 TRACE_EVENT_BEGIN (PerfettoConstants::MonoRuntimeCategory.data (), PerfettoConstants::MethodRunTimeAnnotation.data (), track);
643647#endif
644648}
647651MonodroidRuntime::prof_method_leave ([[maybe_unused]] MonoProfiler *prof, MonoMethod *method, [[maybe_unused]] MonoProfilerCallContext *context) noexcept
648652{
649653#if defined(PERFETTO_ENABLED)
650- auto track = PerfettoSupport::get_name_annotated_track<PerfettoTrackId::MethodInner > ();
654+ auto track = PerfettoSupport::get_name_annotated_track<PerfettoTrackId::MethodInnerMonoVM > ();
651655 TRACE_EVENT_END (PerfettoConstants::MonoRuntimeCategory.data (), track, [&](perfetto::EventContext ctx) {
652656 PerfettoSupport::add_name_annotation (ctx, method);
653657 });
658662MonodroidRuntime::prof_monitor_contention ([[maybe_unused]] MonoProfiler *prof, MonoObject *object) noexcept
659663{
660664#if defined(PERFETTO_ENABLED)
661- auto track = PerfettoSupport::get_name_annotated_track<PerfettoTrackId::MonitorContention > ();
665+ auto track = PerfettoSupport::get_name_annotated_track<PerfettoTrackId::MonitorContentionMonoVM > ();
662666 TRACE_EVENT_BEGIN (PerfettoConstants::MonoRuntimeCategory.data (), PerfettoConstants::MonitorContentionAnnotation.data (), track);
663667#endif
664668}
@@ -667,14 +671,23 @@ void
667671MonodroidRuntime::prof_monitor_acquired ([[maybe_unused]] MonoProfiler *prof, MonoObject *object) noexcept
668672{
669673#if defined(PERFETTO_ENABLED)
670- auto track = PerfettoSupport::get_name_annotated_track<PerfettoTrackId::MonitorContention> ();
671- TRACE_EVENT_END (PerfettoConstants::MonoRuntimeCategory.data (), track);
674+ auto track = PerfettoSupport::get_name_annotated_track<PerfettoTrackId::MonitorContentionMonoVM> ();
675+ TRACE_EVENT_END (PerfettoConstants::MonoRuntimeCategory.data (), track, [&](perfetto::EventContext ctx) {
676+ PerfettoSupport::add_name_annotation (ctx, object);
677+ });
672678#endif
673679}
674680
675681void
676682MonodroidRuntime::mono_runtime_init ([[maybe_unused]] JNIEnv *env, [[maybe_unused]] dynamic_local_string<PROPERTY_VALUE_BUFFER_LEN>& runtime_args)
677683{
684+ #if defined(PERFETTO_ENABLED)
685+ TRACE_EVENT (
686+ PerfettoConstants::MonoRuntimeCategory.data (),
687+ " mono_runtime_init" ,
688+ PerfettoSupport::get_name_annotated_track<PerfettoTrackId::MonodroidRuntime> ()
689+ );
690+ #endif
678691#if defined (DEBUG)
679692 RuntimeOptions options{};
680693 int64_t cur_time;
@@ -1749,9 +1762,11 @@ MonodroidRuntime::Java_mono_android_Runtime_initInternal (JNIEnv *env, jclass kl
17491762 jboolean haveSplitApks)
17501763{
17511764#if defined(PERFETTO_ENABLED)
1752- perfetto_init ();
1753-
1754- TRACE_EVENT (PerfettoConstants::MonodroidCategory.data (), PerfettoConstants::XAInitInternal.data ());
1765+ TRACE_EVENT (
1766+ PerfettoConstants::MonoRuntimeCategory.data (),
1767+ PerfettoConstants::XAInitInternal.data (),
1768+ PerfettoSupport::get_name_annotated_track<PerfettoTrackId::MonodroidRuntime> ()
1769+ );
17551770#endif
17561771 char *mono_log_mask_raw = nullptr ;
17571772 char *mono_log_level_raw = nullptr ;
@@ -1925,6 +1940,9 @@ JNIEXPORT jint JNICALL
19251940JNI_OnLoad (JavaVM *vm, void *reserved)
19261941{
19271942 Util::initialize ();
1943+ #if defined(PERFETTO_ENABLED)
1944+ MonodroidRuntime::perfetto_init ();
1945+ #endif
19281946 return monodroidRuntime.Java_JNI_OnLoad (vm, reserved);
19291947}
19301948
0 commit comments