blob: 4c3330599af8ded411c8b2df1150471e7ced582c [file] [log] [blame]
// A graph showing the hierarchy of ClassLoaders and DelegatingClassLoader.Loaders within StudioModuleClassLoader
digraph {
compound=true;
node [shape=box, margin=0.2];
"ClassLoader of android plugin" [style="filled"];
LayoutlibClassLoader [style="filled"];
FilteringClassLoader [style="filled"];
FirewalledResourcesClassLoader [style="filled"];
ClassLoaderLoaderParent [style="filled", color="lightblue", label="ClassLoaderLoader"];
UrlClassLoader [style="filled", color="lightpink"];
ClassLoaderLoaderJar [style="filled", color="lightblue", label="ClassLoaderLoader"];
NameRemapperLoader [style="filled", color="lightblue"];
FakeSavedStateRegistryLoader [style="filled", color="lightblue"];
PseudoClassLocatorForLoaderNonProject [style="filled", color="lightgreen", label="PseudoClassLocatorForLoader"];
AsmTransformingLoaderNonProject [style="filled", color="lightblue", label="AsmTransformingLoader"];
ListeningLoaderNonProject1 [style="filled", color="lightblue", label="ListeningLoader"];
ClassBinaryCacheLoader [style="filled", color="lightblue"];
ListeningLoaderNonProject2 [style="filled", color="lightblue", label="ListeningLoader"];
ProjectSystemClassLoader [style="filled", color="lightblue"];
ListeningLoaderProject [style="filled", color="lightblue", label="ListeningLoader"];
PseudoClassLocatorForLoaderProject [style="filled", color="lightgreen", label="PseudoClassLocatorForLoader"];
AsmTransformingLoaderProject [style="filled", color="lightblue", label="AsmTransformingLoader"];
OverlayLoader [style="filled", color="lightblue"];
ListeningLoaderOverlay1 [style="filled", color="lightblue", label="ListeningLoader"];
ListeningLoaderOverlay2 [style="filled", color="lightblue", label="ListeningLoader"];
PseudoClassLocatorForLoaderOverlay [style="filled", color="lightgreen", label="PseudoClassLocatorForLoader"];
AsmTransformingLoaderOverlay [style="filled", color="lightblue", label="AsmTransformingLoader"];
MultiLoader [style="filled", color="lightblue"];
RecyclerViewAdapterLoader [style="filled", color="lightblue"];
MultiLoader2 [style="filled", color="lightblue", label="MultiLoader"];
ModuleClassLoaderImpl [style="filled", color="lightblue"];
LibraryResourceClassLoader [style="filled", color="lightpink"];
StudioModuleClassLoader [style="filled", color="lightpink"];
subgraph cluster_parent_loader {
graph [style="dashed, rounded", label="parentLoader", margin="16pt"];
ClassLoaderLoaderParent;
subgraph cluster_parent {
graph [style="dashed, rounded", label="parent", margin="16pt"];
LayoutlibClassLoader; "ClassLoader of android plugin" [style="filled"];
}
}
subgraph cluster_non_project {
graph [style="dashed, rounded", label="nonProjectLoader", margin="16pt"];
FakeSavedStateRegistryLoader; AsmTransformingLoaderNonProject; ListeningLoaderNonProject1; ClassBinaryCacheLoader; ListeningLoaderNonProject2; PseudoClassLocatorForLoaderNonProject;
subgraph cluster_jar {
graph [style="dashed, rounded", label="jarLoader", margin="16pt"];
NameRemapperLoader; ClassLoaderLoaderJar; UrlClassLoader;
}
}
subgraph cluster_project {
graph [style="dashed, rounded", label="projectLoader", margin="16pt"];
ListeningLoaderProject; PseudoClassLocatorForLoaderProject; AsmTransformingLoaderProject;
}
subgraph cluster_overlay {
graph [style="dashed, rounded", label="overlayLoader", margin="16pt"];
OverlayLoader; ListeningLoaderOverlay1; ListeningLoaderOverlay2; PseudoClassLocatorForLoaderOverlay; AsmTransformingLoaderOverlay;
}
LayoutlibClassLoader -> "ClassLoader of android plugin";
FilteringClassLoader -> LayoutlibClassLoader;
FirewalledResourcesClassLoader -> FilteringClassLoader;
ClassLoaderLoaderParent -> LayoutlibClassLoader;
NameRemapperLoader -> ClassLoaderLoaderJar -> UrlClassLoader;
FakeSavedStateRegistryLoader -> NameRemapperLoader;
PseudoClassLocatorForLoaderNonProject -> ClassLoaderLoaderParent;
PseudoClassLocatorForLoaderNonProject -> LayoutlibClassLoader;
PseudoClassLocatorForLoaderNonProject -> NameRemapperLoader;
AsmTransformingLoaderNonProject -> FakeSavedStateRegistryLoader
AsmTransformingLoaderNonProject -> PseudoClassLocatorForLoaderNonProject
ListeningLoaderNonProject2 -> ClassBinaryCacheLoader -> ListeningLoaderNonProject1 -> AsmTransformingLoaderNonProject;
ListeningLoaderProject -> ProjectSystemClassLoader;
PseudoClassLocatorForLoaderProject -> ProjectSystemClassLoader;
PseudoClassLocatorForLoaderProject -> ListeningLoaderNonProject2;
PseudoClassLocatorForLoaderProject -> ClassLoaderLoaderParent;
PseudoClassLocatorForLoaderProject -> LayoutlibClassLoader;
AsmTransformingLoaderProject -> ListeningLoaderProject;
AsmTransformingLoaderProject -> PseudoClassLocatorForLoaderProject;
ListeningLoaderOverlay2 -> ListeningLoaderOverlay1 -> OverlayLoader;
PseudoClassLocatorForLoaderOverlay -> ProjectSystemClassLoader;
PseudoClassLocatorForLoaderOverlay -> ListeningLoaderNonProject2;
PseudoClassLocatorForLoaderOverlay -> ClassLoaderLoaderParent;
PseudoClassLocatorForLoaderOverlay -> LayoutlibClassLoader;
AsmTransformingLoaderOverlay -> ListeningLoaderOverlay2;
AsmTransformingLoaderOverlay -> PseudoClassLocatorForLoaderOverlay;
MultiLoader -> AsmTransformingLoaderOverlay;
MultiLoader -> AsmTransformingLoaderProject;
MultiLoader2 -> MultiLoader;
MultiLoader2 -> ListeningLoaderNonProject2;
MultiLoader2 -> RecyclerViewAdapterLoader;
ModuleClassLoaderImpl -> MultiLoader2;
LibraryResourceClassLoader -> FirewalledResourcesClassLoader;
LibraryResourceClassLoader -> ModuleClassLoaderImpl;
StudioModuleClassLoader -> LibraryResourceClassLoader;
StudioModuleClassLoader -> ModuleClassLoaderImpl;
"ClassLoader" [style="filled"];
"DelegatingClassLoader.Loader" [style="filled", color="lightblue"];
PseudoClassLocator [style="filled", color="lightgreen"];
"ClassLoader with R-classes" [style="filled", color="lightpink"];
subgraph cluster_legend {
graph [style="dashed, rounded", label="Legend", margin="16pt", orientation=i];
"ClassLoader"; "DelegatingClassLoader.Loader" ; PseudoClassLocator; "ClassLoader with R-classes";
}
{
// This is to make the nodes position vertically
edge [style=invisible];
"ClassLoader" -> "DelegatingClassLoader.Loader" -> PseudoClassLocator -> "ClassLoader with R-classes" [arrowhead=none];
}
}