ursus
04/13/2026, 9:25 PMval Context.appGraph: AppGraph
get() = (applicationContext as AppGraphProvider).appGraph
I have this simple convenience extension, but it takes 10ms (in debug) to execute, which is extremely high for what it is
if I inline it or manually inline it, then it's basically instant as expected
Why?
Does it have to do with ContextKt class loading as that's the first access or something?Youssef Shoaib [MOD]
04/14/2026, 5:35 AMursus
04/14/2026, 7:42 AMCLOVIS
04/14/2026, 8:14 AMursus
04/14/2026, 8:16 AMCLOVIS
04/14/2026, 8:30 AMCLOVIS
04/14/2026, 8:32 AMCLOVIS
04/14/2026, 8:32 AMkotlin("jvm") projects thoughursus
04/14/2026, 8:35 AMYoussef Shoaib [MOD]
04/14/2026, 8:38 AMinline unless there's lambdas involved or you really, really know what you're doing (e.g. reducing boxing with value classes passed as generics)ursus
04/14/2026, 8:39 AMursus
04/14/2026, 8:39 AMCLOVIS
04/14/2026, 8:41 AMCLOVIS
04/14/2026, 8:41 AMinline impacts it, class-loading shenanigans is a likely culpritursus
04/14/2026, 8:48 AMinline val Context.appGraph: AppGraph
get() = (applicationContext as AppGraphProvider).appGraph
val appGraph = appGraph as AppStateHelperGraph
# Not inlined
LINENUMBER 23 L3
ALOAD 0
CHECKCAST android/content/Context
INVOKESTATIC sk/ursus/nav3demo/AppRootKt.getAppGraph (Landroid/content/Context;)Lsk/ursus/nav3demo/AppGraph;
DUP
LDC "null cannot be cast to non-null type sk.ursus.nav3demo.AppStateHelperGraph"
INVOKESTATIC kotlin/jvm/internal/Intrinsics.checkNotNull (Ljava/lang/Object;Ljava/lang/String;)V
CHECKCAST sk/ursus/nav3demo/AppStateHelperGraph
ASTORE 2
# inlined
LINENUMBER 23 L3
ALOAD 0
CHECKCAST android/content/Context
ASTORE 4
L4
ICONST_0
ISTORE 5ursus
04/14/2026, 8:49 AMYoussef Shoaib [MOD]
04/14/2026, 8:51 AMursus
04/14/2026, 8:52 AMoverride fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
enableEdgeToEdge()
val appGraph = appGraph as AppStateHelperGraph
val appStateHelper = appGraph.appStateHelper
val deeplink = resolveIntent(intent)
pendingDeeplink.value = deeplink
setContent {
AppRoot(appStateHelper, pendingDeeplink)
}
}