diff options
Diffstat (limited to 'src/jdk/internal/dynalink/beans/StaticClassLinker.java')
-rw-r--r-- | src/jdk/internal/dynalink/beans/StaticClassLinker.java | 14 |
1 files changed, 8 insertions, 6 deletions
diff --git a/src/jdk/internal/dynalink/beans/StaticClassLinker.java b/src/jdk/internal/dynalink/beans/StaticClassLinker.java index c473bb4c..5f80caea 100644 --- a/src/jdk/internal/dynalink/beans/StaticClassLinker.java +++ b/src/jdk/internal/dynalink/beans/StaticClassLinker.java @@ -189,15 +189,17 @@ class StaticClassLinker implements TypeBasedGuardingDynamicLinker { return type == StaticClass.class; } - /*private*/ static final MethodHandle GET_CLASS = new Lookup(MethodHandles.lookup()).findVirtual(StaticClass.class, - "getRepresentedClass", MethodType.methodType(Class.class)); - - /*private*/ static final MethodHandle IS_CLASS = new Lookup(MethodHandles.lookup()).findStatic(StaticClassLinker.class, - "isClass", MethodType.methodType(Boolean.TYPE, Class.class, Object.class)); - + /*private*/ static final MethodHandle GET_CLASS; + /*private*/ static final MethodHandle IS_CLASS; /*private*/ static final MethodHandle ARRAY_CTOR = Lookup.PUBLIC.findStatic(Array.class, "newInstance", MethodType.methodType(Object.class, Class.class, int.class)); + static { + final Lookup lookup = new Lookup(MethodHandles.lookup()); + GET_CLASS = lookup.findVirtual(StaticClass.class, "getRepresentedClass", MethodType.methodType(Class.class)); + IS_CLASS = lookup.findOwnStatic("isClass", Boolean.TYPE, Class.class, Object.class); + } + @SuppressWarnings("unused") private static boolean isClass(Class<?> clazz, Object obj) { return obj instanceof StaticClass && ((StaticClass)obj).getRepresentedClass() == clazz; |