Mercurial > hg > graal-jvmci-8
changeset 23710:927a39cd7ddd
Use ClassValue instead of WeakHashMap to track ResolvedJavaTypes
author | Tom Rodriguez <tom.rodriguez@oracle.com> |
---|---|
date | Tue, 21 Jun 2016 14:36:31 -0700 |
parents | 1b939a613788 |
children | 387870951564 |
files | jvmci/jdk.vm.ci.hotspot/src/jdk/vm/ci/hotspot/HotSpotJVMCIMetaAccessContext.java |
diffstat | 1 files changed, 7 insertions(+), 10 deletions(-) [+] |
line wrap: on
line diff
--- 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<Class<?>, WeakReference<ResolvedJavaType>> typeMap = new WeakHashMap<>(); + private final ClassValue<ResolvedJavaType> resolvedJavaType = new ClassValue<ResolvedJavaType>() { + @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<ResolvedJavaType> 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); } /**