Mercurial > hg > release > icedtea7-forest-2.3 > jdk
changeset 5409:1d4ecdb681d9
7122740: PropertyDescriptor Performance Slow
Reviewed-by: rupashka
author | malenkov |
---|---|
date | Mon, 18 Jun 2012 16:41:28 +0400 |
parents | 373d63f37303 |
children | fb89965b2d22 |
files | src/share/classes/com/sun/beans/TypeResolver.java |
diffstat | 1 files changed, 15 insertions(+), 4 deletions(-) [+] |
line wrap: on
line diff
--- a/src/share/classes/com/sun/beans/TypeResolver.java Mon Jun 18 15:28:48 2012 +0400 +++ b/src/share/classes/com/sun/beans/TypeResolver.java Mon Jun 18 16:41:28 2012 +0400 @@ -154,7 +154,7 @@ * @see #resolve(Type) */ public static Type resolve(Type actual, Type formal) { - return new TypeResolver(actual).resolve(formal); + return getTypeResolver(actual).resolve(formal); } /** @@ -169,7 +169,7 @@ * @see #resolve(Type[]) */ public static Type[] resolve(Type actual, Type[] formals) { - return new TypeResolver(actual).resolve(formals); + return getTypeResolver(actual).resolve(formals); } /** @@ -228,9 +228,20 @@ return classes; } + public static TypeResolver getTypeResolver(Type type) { + synchronized (CACHE) { + TypeResolver resolver = CACHE.get(type); + if (resolver == null) { + resolver = new TypeResolver(type); + CACHE.put(type, resolver); + } + return resolver; + } + } - private final Map<TypeVariable<?>, Type> map - = new HashMap<TypeVariable<?>, Type>(); + private static final WeakCache<Type, TypeResolver> CACHE = new WeakCache<>(); + + private final Map<TypeVariable<?>, Type> map = new HashMap<>(); /** * Constructs the type resolver for the given actual type.