[535233] Name resolver for special classes
Fix int, void etc.
Change-Id: I76c1888f47b116ce19a36181ba866cba83bdef77
diff --git a/plugins/org.eclipse.mat.api/plugin.xml b/plugins/org.eclipse.mat.api/plugin.xml
index 59a7155..b329592 100644
--- a/plugins/org.eclipse.mat.api/plugin.xml
+++ b/plugins/org.eclipse.mat.api/plugin.xml
Binary files differ
diff --git a/plugins/org.eclipse.mat.api/src/org/eclipse/mat/inspections/CommonNameResolver.java b/plugins/org.eclipse.mat.api/src/org/eclipse/mat/inspections/CommonNameResolver.java
index 6accdfe..63c32d3 100644
--- a/plugins/org.eclipse.mat.api/src/org/eclipse/mat/inspections/CommonNameResolver.java
+++ b/plugins/org.eclipse.mat.api/src/org/eclipse/mat/inspections/CommonNameResolver.java
@@ -1,5 +1,5 @@
/*******************************************************************************
- * Copyright (c) 2008, 2017 SAP AG and IBM Corporation.
+ * Copyright (c) 2008, 2018 SAP AG and IBM Corporation.
* All rights reserved. This program and the accompanying materials
* are made available under the terms of the Eclipse Public License v1.0
* which accompanies this distribution, and is available at
@@ -106,6 +106,26 @@
}
}
+ /**
+ * For Oracle VMs for int.class, byte.class, void.class etc.
+ * These are just simple IObjects, not IClass objects.
+ * All other classes resolve via IClass.
+ */
+ @Subjects("java.lang.Class")
+ public static class ClassTypeResolver implements IClassSpecificNameResolver
+ {
+ public String resolve(IObject object) throws SnapshotException
+ {
+ // Let normal IClass resolution happen if possible
+ if (object instanceof IClass)
+ return null;
+ IObject nameString = (IObject) object.resolveValue("name"); //$NON-NLS-1$
+ if (nameString == null)
+ return null;
+ return nameString.getClassSpecificName();
+ }
+ }
+
@Subjects("java.util.concurrent.atomic.AtomicBoolean")
public static class AtomicBooleanResolver implements IClassSpecificNameResolver
{