# HG changeset patch # User Tom Rodriguez # Date 1466544991 25200 # Node ID 927a39cd7ddddab26ee27bb8aee6f13f73352786 # Parent 1b939a613788d371360a80600f93f43434ecd9e2 Use ClassValue instead of WeakHashMap to track ResolvedJavaTypes diff -r 1b939a613788 -r 927a39cd7ddd jvmci/jdk.vm.ci.hotspot/src/jdk/vm/ci/hotspot/HotSpotJVMCIMetaAccessContext.java --- a/jvmci/jdk.vm.ci.hotspot/src/jdk/vm/ci/hotspot/HotSpotJVMCIMetaAccessContext.java Tue Jun 21 14:36:16 2016 -0700 +++ b/jvmci/jdk.vm.ci.hotspot/src/jdk/vm/ci/hotspot/HotSpotJVMCIMetaAccessContext.java Tue Jun 21 14:36:31 2016 -0700 @@ -27,8 +27,6 @@ import java.lang.ref.WeakReference; import java.util.Arrays; import java.util.Iterator; -import java.util.Map; -import java.util.WeakHashMap; import jdk.vm.ci.meta.JavaKind; import jdk.vm.ci.meta.ResolvedJavaType; @@ -147,7 +145,12 @@ } } - private final Map, WeakReference> typeMap = new WeakHashMap<>(); + private final ClassValue resolvedJavaType = new ClassValue() { + @Override + protected ResolvedJavaType computeValue(Class type) { + return createClass(type); + } + }; /** * Gets the JVMCI mirror for a {@link Class} object. @@ -155,13 +158,7 @@ * @return the {@link ResolvedJavaType} corresponding to {@code javaClass} */ public synchronized ResolvedJavaType fromClass(Class javaClass) { - WeakReference typeRef = typeMap.get(javaClass); - ResolvedJavaType type = typeRef != null ? typeRef.get() : null; - if (type == null) { - type = createClass(javaClass); - typeMap.put(javaClass, new WeakReference<>(type)); - } - return type; + return resolvedJavaType.get(javaClass); } /**