--- old/core/org.openjdk.jmc.flightrecorder/src/main/java/org/openjdk/jmc/flightrecorder/jdk/JdkAttributes.java 2018-08-27 11:40:20.975410067 -0400 +++ new/core/org.openjdk.jmc.flightrecorder/src/main/java/org/openjdk/jmc/flightrecorder/jdk/JdkAttributes.java 2018-08-27 11:40:20.869410322 -0400 @@ -712,6 +712,10 @@ Messages.getString(Messages.ATTR_CLASS_DEFINING_CLASSLOADER), CLASS); private static final IAttribute CLASS_INITIATING_CLASSLOADER_V0 = attr("initiatingClassLoader", //$NON-NLS-1$ Messages.getString(Messages.ATTR_CLASS_INITIATING_CLASSLOADER), CLASS); + private static final IAttribute PARENT_CLASSLOADER_V0 = attr("parentClassLoader", // $NON-NLS-1$ + Messages.getString(Messages.ATTR_PARENT_CLASSLOADER), CLASS); + private static final IAttribute CLASSLOADER_V0 = attr("classLoader", // $NON-NLS-1$ + Messages.getString(Messages.ATTR_CLASSLOADER), CLASS); public static final IAttribute CLASS_DEFINING_CLASSLOADER = Attribute .canonicalize(new Attribute("definingClassLoader", //$NON-NLS-1$ @@ -751,6 +755,44 @@ return null; } }); + public static final IAttribute PARENT_CLASSLOADER = Attribute + .canonicalize(new Attribute("parentClassLoader", //$NON-NLS-1$ + Messages.getString(Messages.ATTR_PARENT_CLASSLOADER), null, CLASS_LOADER) { + @Override + public IMemberAccessor customAccessor(IType type) { + // V1 is handled by the standard accessor + final IMemberAccessor accessorV0 = PARENT_CLASSLOADER_V0.getAccessor(type); + if (accessorV0 != null) { + return new IMemberAccessor() { + @Override + public IMCClassLoader getMember(U i) { + IMCType type = accessorV0.getMember(i); + return new MCClassLoader(type, null); + } + }; + } + return null; + } + }); + public static final IAttribute CLASSLOADER = Attribute + .canonicalize(new Attribute("classLoader", //$NON-NLS-1$ + Messages.getString(Messages.ATTR_CLASSLOADER), null, CLASS_LOADER) { + @Override + public IMemberAccessor customAccessor(IType type) { + // V1 is handled by the standard accessor + final IMemberAccessor accessorV0 = CLASSLOADER_V0.getAccessor(type); + if (accessorV0 != null) { + return new IMemberAccessor() { + @Override + public IMCClassLoader getMember(U i) { + IMCType type = accessorV0.getMember(i); + return new MCClassLoader(type, null); + } + }; + } + return null; + } + }); public static final IAttribute CLASS_DEFINING_CLASSLOADER_STRING = Attribute .canonicalize(new Attribute("defininingClassLoader.string", //$NON-NLS-1$ Messages.getString(Messages.ATTR_CLASS_DEFINING_CLASSLOADER), null, PLAIN_TEXT) { @@ -781,11 +823,58 @@ }; } }); + public static final IAttribute PARENT_CLASSLOADER_STRING = Attribute + .canonicalize(new Attribute("parentClassLoader.string", //$NON-NLS-1$ + Messages.getString(Messages.ATTR_PARENT_CLASSLOADER), null, PLAIN_TEXT) { + @Override + public IMemberAccessor customAccessor(IType type) { + final IMemberAccessor accessor = PARENT_CLASSLOADER.getAccessor(type); + return accessor == null ? null : new IMemberAccessor() { + @Override + public String getMember(U i) { + IMCClassLoader cl = accessor.getMember(i); + return cl == null ? null : FormatToolkit.getHumanReadable(cl); + } + }; + } + }); + + public static final IAttribute CLASSLOADER_STRING = Attribute + .canonicalize(new Attribute("classLoader.string", //$NON-NLS-1$ + Messages.getString(Messages.ATTR_CLASSLOADER), null, PLAIN_TEXT) { + @Override + public IMemberAccessor customAccessor(IType type) { + final IMemberAccessor accessor = CLASSLOADER.getAccessor(type); + return accessor == null ? null : new IMemberAccessor() { + @Override + public String getMember(U i) { + IMCClassLoader cl = accessor.getMember(i); + return cl == null ? null : FormatToolkit.getHumanReadable(cl); + } + }; + } + }); public static final IAttribute CLASS_LOADED = attr("loadedClass", //$NON-NLS-1$ Messages.getString(Messages.ATTR_CLASS_LOADED), CLASS); public static final IAttribute CLASS_UNLOADED = attr("unloadedClass", //$NON-NLS-1$ Messages.getString(Messages.ATTR_CLASS_UNLOADED), CLASS); + public static final IAttribute CLASS_DEFINED = attr("definedClass", // $NON-NLS-1$ + Messages.getString(Messages.ATTR_CLASS_DEFINED), CLASS); + public static final IAttribute ANONYMOUS_BLOCK_SIZE = attr("anonymousBlockSize", // $NON-NLS-1$ + Messages.getString(Messages.ATTR_ANONYMOUS_BLOCK_SIZE), MEMORY); + public static final IAttribute ANONYMOUS_CHUNK_SIZE = attr("anonymousChunkSize", // $NON-NLS-1$ + Messages.getString(Messages.ATTR_ANONYMOUS_CHUNK_SIZE), MEMORY); + public static final IAttribute ANONYMOUS_CLASS_COUNT = attr("anonymousClassCount", // $NON-NLS-1$ + Messages.getString(Messages.ATTR_ANONYMOUS_CLASS_COUNT), NUMBER); + public static final IAttribute BLOCK_SIZE = attr("blockSize", // $NON-NLS-1$ + Messages.getString(Messages.ATTR_BLOCK_SIZE), MEMORY); + public static final IAttribute CHUNK_SIZE = attr("chunkSize", // $NON-NLS-1$ + Messages.getString(Messages.ATTR_CHUNK_SIZE), MEMORY); + public static final IAttribute CLASS_COUNT = attr("classCount", // $NON-NLS-1$ + Messages.getString(Messages.ATTR_CLASS_COUNT), NUMBER); + public static final IAttribute CLASS_LOADER_DATA = attr("classLoaderData", // $NON-NLS-1$ + Messages.getString(Messages.ATTR_CLASSLOADER_DATA), ADDRESS); public static final IAttribute COMPILER_COMPILATION_ID = attr("compileId", //$NON-NLS-1$ Messages.getString(Messages.ATTR_COMPILER_COMPILATION_ID), NUMBER);