8139761: Improve Dynalink class nomenclature and package organization
Reviewed-by: hannesw, sundar
This commit is contained in:
parent
3d0ec10abd
commit
f12273ae3b
@ -91,7 +91,7 @@ import java.util.Map;
|
||||
import java.util.WeakHashMap;
|
||||
import java.util.concurrent.ConcurrentHashMap;
|
||||
import java.util.concurrent.ConcurrentMap;
|
||||
import jdk.internal.dynalink.support.Guards;
|
||||
import jdk.internal.dynalink.linker.support.Guards;
|
||||
|
||||
/**
|
||||
* A dual map that can either strongly or weakly reference a given class depending on whether the class is visible from
|
||||
|
@ -89,12 +89,15 @@ import java.lang.invoke.MethodType;
|
||||
import java.lang.invoke.MutableCallSite;
|
||||
import java.util.Objects;
|
||||
import jdk.internal.dynalink.linker.GuardedInvocation;
|
||||
import jdk.internal.dynalink.linker.GuardedInvocationTransformer;
|
||||
import jdk.internal.dynalink.linker.GuardingDynamicLinker;
|
||||
import jdk.internal.dynalink.linker.LinkRequest;
|
||||
import jdk.internal.dynalink.linker.LinkerServices;
|
||||
import jdk.internal.dynalink.support.Lookup;
|
||||
import jdk.internal.dynalink.linker.support.Lookup;
|
||||
import jdk.internal.dynalink.linker.support.SimpleLinkRequest;
|
||||
import jdk.internal.dynalink.support.ChainedCallSite;
|
||||
import jdk.internal.dynalink.support.SimpleCallSiteDescriptor;
|
||||
import jdk.internal.dynalink.support.SimpleLinkRequest;
|
||||
import jdk.internal.dynalink.support.SimpleRelinkableCallSite;
|
||||
|
||||
/**
|
||||
* The linker for {@link RelinkableCallSite} objects. Users of Dynalink have to
|
||||
@ -115,7 +118,7 @@ import jdk.internal.dynalink.support.SimpleLinkRequest;
|
||||
* }
|
||||
*
|
||||
* public static CallSite bootstrap(MethodHandles.Lookup lookup, String name, MethodType type) {
|
||||
* return dynamicLinker.link(new MonomorphicCallSite(new SimpleCallSiteDescriptor(lookup, name, type)));
|
||||
* return dynamicLinker.link(new SimpleRelinkableCallSite(new SimpleCallSiteDescriptor(lookup, name, type)));
|
||||
* }
|
||||
* }
|
||||
* </pre>
|
||||
@ -130,7 +133,7 @@ import jdk.internal.dynalink.support.SimpleLinkRequest;
|
||||
* on the factory.</li>
|
||||
*
|
||||
* <li>The performance of the programs can depend on your choice of the class to
|
||||
* represent call sites. The above example used {@link MonomorphicCallSite}, but
|
||||
* represent call sites. The above example used {@link SimpleRelinkableCallSite}, but
|
||||
* you might want to use {@link ChainedCallSite} instead. You'll need to
|
||||
* experiment and decide what fits your language runtime the best. You can
|
||||
* subclass either of these or roll your own if you need to.</li>
|
||||
@ -154,7 +157,7 @@ public final class DynamicLinker {
|
||||
private static final String INVOKE_PACKAGE_PREFIX = "java.lang.invoke.";
|
||||
|
||||
private final LinkerServices linkerServices;
|
||||
private final GuardedInvocationFilter prelinkFilter;
|
||||
private final GuardedInvocationTransformer prelinkTransformer;
|
||||
private final boolean syncOnRelink;
|
||||
private final int unstableRelinkThreshold;
|
||||
|
||||
@ -162,17 +165,17 @@ public final class DynamicLinker {
|
||||
* Creates a new dynamic linker.
|
||||
*
|
||||
* @param linkerServices the linkerServices used by the linker, created by the factory.
|
||||
* @param prelinkFilter see {@link DynamicLinkerFactory#setPrelinkFilter(GuardedInvocationFilter)}
|
||||
* @param prelinkTransformer see {@link DynamicLinkerFactory#setPrelinkTransformer(GuardedInvocationTransformer)}
|
||||
* @param syncOnRelink see {@link DynamicLinkerFactory#setSyncOnRelink(boolean)}
|
||||
* @param unstableRelinkThreshold see {@link DynamicLinkerFactory#setUnstableRelinkThreshold(int)}
|
||||
*/
|
||||
DynamicLinker(final LinkerServices linkerServices, final GuardedInvocationFilter prelinkFilter,
|
||||
DynamicLinker(final LinkerServices linkerServices, final GuardedInvocationTransformer prelinkTransformer,
|
||||
final boolean syncOnRelink, final int unstableRelinkThreshold) {
|
||||
if(unstableRelinkThreshold < 0) {
|
||||
throw new IllegalArgumentException("unstableRelinkThreshold < 0");
|
||||
}
|
||||
this.linkerServices = linkerServices;
|
||||
this.prelinkFilter = prelinkFilter;
|
||||
this.prelinkTransformer = prelinkTransformer;
|
||||
this.syncOnRelink = syncOnRelink;
|
||||
this.unstableRelinkThreshold = unstableRelinkThreshold;
|
||||
}
|
||||
@ -246,9 +249,9 @@ public final class DynamicLinker {
|
||||
throw new NoSuchDynamicMethodException(callSiteDescriptor.toString());
|
||||
}
|
||||
|
||||
// Make sure we filter the invocation before linking it into the call site. This is typically used to match the
|
||||
// Make sure we transform the invocation before linking it into the call site. This is typically used to match the
|
||||
// return type of the invocation to the call site.
|
||||
guardedInvocation = prelinkFilter.filter(guardedInvocation, linkRequest, linkerServices);
|
||||
guardedInvocation = prelinkTransformer.filter(guardedInvocation, linkRequest, linkerServices);
|
||||
Objects.requireNonNull(guardedInvocation);
|
||||
|
||||
int newRelinkCount = relinkCount;
|
||||
|
@ -83,6 +83,8 @@
|
||||
|
||||
package jdk.internal.dynalink;
|
||||
|
||||
import java.lang.invoke.MethodHandle;
|
||||
import java.lang.invoke.MethodType;
|
||||
import java.lang.invoke.MutableCallSite;
|
||||
import java.security.AccessController;
|
||||
import java.security.PrivilegedAction;
|
||||
@ -96,15 +98,16 @@ import java.util.ServiceLoader;
|
||||
import java.util.Set;
|
||||
import jdk.internal.dynalink.beans.BeansLinker;
|
||||
import jdk.internal.dynalink.linker.GuardedInvocation;
|
||||
import jdk.internal.dynalink.linker.GuardedInvocationTransformer;
|
||||
import jdk.internal.dynalink.linker.GuardingDynamicLinker;
|
||||
import jdk.internal.dynalink.linker.GuardingTypeConverterFactory;
|
||||
import jdk.internal.dynalink.linker.LinkRequest;
|
||||
import jdk.internal.dynalink.linker.LinkerServices;
|
||||
import jdk.internal.dynalink.linker.MethodHandleTransformer;
|
||||
import jdk.internal.dynalink.linker.MethodTypeConversionStrategy;
|
||||
import jdk.internal.dynalink.support.CompositeGuardingDynamicLinker;
|
||||
import jdk.internal.dynalink.support.CompositeTypeBasedGuardingDynamicLinker;
|
||||
import jdk.internal.dynalink.support.TypeUtilities;
|
||||
import jdk.internal.dynalink.linker.support.CompositeGuardingDynamicLinker;
|
||||
import jdk.internal.dynalink.linker.support.CompositeTypeBasedGuardingDynamicLinker;
|
||||
import jdk.internal.dynalink.linker.support.TypeUtilities;
|
||||
|
||||
/**
|
||||
* A factory class for creating {@link DynamicLinker} objects. The usual dynamic
|
||||
@ -130,7 +133,7 @@ public final class DynamicLinkerFactory {
|
||||
private List<? extends GuardingDynamicLinker> fallbackLinkers;
|
||||
private boolean syncOnRelink = false;
|
||||
private int unstableRelinkThreshold = DEFAULT_UNSTABLE_RELINK_THRESHOLD;
|
||||
private GuardedInvocationFilter prelinkFilter;
|
||||
private GuardedInvocationTransformer prelinkTransformer;
|
||||
private MethodTypeConversionStrategy autoConversionStrategy;
|
||||
private MethodHandleTransformer internalObjectsFilter;
|
||||
|
||||
@ -245,29 +248,29 @@ public final class DynamicLinkerFactory {
|
||||
}
|
||||
|
||||
/**
|
||||
* Set the pre-link filter. This is a {@link GuardedInvocationFilter} that will get the final chance to modify the
|
||||
* Set the pre-link transformer. This is a {@link GuardedInvocationTransformer} that will get the final chance to modify the
|
||||
* guarded invocation after it has been created by a component linker and before the dynamic linker links it into
|
||||
* the call site. It is normally used to adapt the return value type of the invocation to the type of the call site.
|
||||
* When not set explicitly, a default pre-link filter will be used that simply calls
|
||||
* {@link GuardedInvocation#asType(LinkerServices, java.lang.invoke.MethodType)}
|
||||
* @param prelinkFilter the pre-link filter for the dynamic linker.
|
||||
* When not set explicitly, a default pre-link transformer will be used that simply calls
|
||||
* {@link GuardedInvocation#asType(LinkerServices, MethodType)}
|
||||
* @param prelinkTransformer the pre-link transformer for the dynamic linker.
|
||||
*/
|
||||
public void setPrelinkFilter(final GuardedInvocationFilter prelinkFilter) {
|
||||
this.prelinkFilter = prelinkFilter;
|
||||
public void setPrelinkTransformer(final GuardedInvocationTransformer prelinkTransformer) {
|
||||
this.prelinkTransformer = prelinkTransformer;
|
||||
}
|
||||
|
||||
/**
|
||||
* Sets an object representing the conversion strategy for automatic type conversions. After
|
||||
* {@link TypeConverterFactory#asType(java.lang.invoke.MethodHandle, java.lang.invoke.MethodType)} has
|
||||
* {@link TypeConverterFactory#asType(MethodHandle, MethodType)} has
|
||||
* applied all custom conversions to a method handle, it still needs to effect
|
||||
* {@link TypeUtilities#isMethodInvocationConvertible(Class, Class) method invocation conversions} that
|
||||
* can usually be automatically applied as per
|
||||
* {@link java.lang.invoke.MethodHandle#asType(java.lang.invoke.MethodType)}.
|
||||
* {@link java.lang.invoke.MethodHandle#asType(MethodType)}.
|
||||
* However, sometimes language runtimes will want to customize even those conversions for their own call
|
||||
* sites. A typical example is allowing unboxing of null return values, which is by default prohibited by
|
||||
* ordinary {@code MethodHandles.asType}. In this case, a language runtime can install its own custom
|
||||
* automatic conversion strategy, that can deal with null values. Note that when the strategy's
|
||||
* {@link MethodTypeConversionStrategy#asType(java.lang.invoke.MethodHandle, java.lang.invoke.MethodType)}
|
||||
* {@link MethodTypeConversionStrategy#asType(MethodHandle, MethodType)}
|
||||
* is invoked, the custom language conversions will already have been applied to the method handle, so by
|
||||
* design the difference between the handle's current method type and the desired final type will always
|
||||
* only be ones that can be subjected to method invocation conversions. The strategy also doesn't need to
|
||||
@ -290,7 +293,7 @@ public final class DynamicLinkerFactory {
|
||||
|
||||
/**
|
||||
* Creates a new dynamic linker consisting of all the prioritized, autodiscovered, and fallback linkers as well as
|
||||
* the pre-link filter.
|
||||
* the pre-link transformer.
|
||||
*
|
||||
* @return the new dynamic Linker
|
||||
*/
|
||||
@ -355,12 +358,12 @@ public final class DynamicLinkerFactory {
|
||||
}
|
||||
}
|
||||
|
||||
if(prelinkFilter == null) {
|
||||
prelinkFilter = (inv, request, linkerServices) -> inv.asType(linkerServices, request.getCallSiteDescriptor().getMethodType());
|
||||
if(prelinkTransformer == null) {
|
||||
prelinkTransformer = (inv, request, linkerServices) -> inv.asType(linkerServices, request.getCallSiteDescriptor().getMethodType());
|
||||
}
|
||||
|
||||
return new DynamicLinker(new LinkerServicesImpl(new TypeConverterFactory(typeConverters,
|
||||
autoConversionStrategy), composite, internalObjectsFilter), prelinkFilter,
|
||||
autoConversionStrategy), composite, internalObjectsFilter), prelinkTransformer,
|
||||
syncOnRelink, unstableRelinkThreshold);
|
||||
}
|
||||
|
||||
|
@ -86,12 +86,14 @@ package jdk.internal.dynalink;
|
||||
import java.lang.invoke.CallSite;
|
||||
import java.lang.invoke.MethodHandle;
|
||||
import jdk.internal.dynalink.linker.GuardedInvocation;
|
||||
import jdk.internal.dynalink.support.ChainedCallSite;
|
||||
import jdk.internal.dynalink.support.SimpleRelinkableCallSite;
|
||||
|
||||
/**
|
||||
* Interface for call sites managed by a {@link DynamicLinker}. Users of
|
||||
* Dynalink must use subclasses of {@link CallSite} that also implement this
|
||||
* interface as their call site implementations. There is a readily usable
|
||||
* {@link MonomorphicCallSite} subclass that implements monomorphic inline
|
||||
* {@link SimpleRelinkableCallSite} subclass that implements monomorphic inline
|
||||
* caching strategy as well as {@link ChainedCallSite} that implements a
|
||||
* polymorphic inline caching strategy and retains a chain of previously linked
|
||||
* method handles. A relinkable call site will be managed by a
|
||||
|
@ -99,7 +99,7 @@ import jdk.internal.dynalink.linker.GuardedInvocation;
|
||||
import jdk.internal.dynalink.linker.GuardingTypeConverterFactory;
|
||||
import jdk.internal.dynalink.linker.LinkerServices;
|
||||
import jdk.internal.dynalink.linker.MethodTypeConversionStrategy;
|
||||
import jdk.internal.dynalink.support.TypeUtilities;
|
||||
import jdk.internal.dynalink.linker.support.TypeUtilities;
|
||||
|
||||
/**
|
||||
* A factory for type converters. This class is the main implementation behind the
|
||||
|
@ -103,9 +103,9 @@ import jdk.internal.dynalink.linker.GuardedInvocation;
|
||||
import jdk.internal.dynalink.linker.GuardingDynamicLinker;
|
||||
import jdk.internal.dynalink.linker.LinkRequest;
|
||||
import jdk.internal.dynalink.linker.LinkerServices;
|
||||
import jdk.internal.dynalink.support.Guards;
|
||||
import jdk.internal.dynalink.support.Lookup;
|
||||
import jdk.internal.dynalink.support.TypeUtilities;
|
||||
import jdk.internal.dynalink.linker.support.Guards;
|
||||
import jdk.internal.dynalink.linker.support.Lookup;
|
||||
import jdk.internal.dynalink.linker.support.TypeUtilities;
|
||||
import sun.reflect.CallerSensitive;
|
||||
|
||||
/**
|
||||
|
@ -86,7 +86,7 @@ package jdk.internal.dynalink.beans;
|
||||
import java.lang.invoke.MethodType;
|
||||
import java.util.LinkedList;
|
||||
import java.util.List;
|
||||
import jdk.internal.dynalink.support.TypeUtilities;
|
||||
import jdk.internal.dynalink.linker.support.TypeUtilities;
|
||||
|
||||
/**
|
||||
* Represents overloaded methods applicable to a specific call site signature.
|
||||
|
@ -95,9 +95,9 @@ import jdk.internal.dynalink.beans.GuardedInvocationComponent.ValidationType;
|
||||
import jdk.internal.dynalink.linker.GuardedInvocation;
|
||||
import jdk.internal.dynalink.linker.LinkerServices;
|
||||
import jdk.internal.dynalink.linker.TypeBasedGuardingDynamicLinker;
|
||||
import jdk.internal.dynalink.support.Guards;
|
||||
import jdk.internal.dynalink.support.Lookup;
|
||||
import jdk.internal.dynalink.support.TypeUtilities;
|
||||
import jdk.internal.dynalink.linker.support.Guards;
|
||||
import jdk.internal.dynalink.linker.support.Lookup;
|
||||
import jdk.internal.dynalink.linker.support.TypeUtilities;
|
||||
|
||||
/**
|
||||
* A class that provides linking capabilities for a single POJO class. Normally not used directly, but managed by
|
||||
|
@ -94,7 +94,7 @@ import java.lang.reflect.Modifier;
|
||||
import java.security.AccessController;
|
||||
import java.security.PrivilegedAction;
|
||||
import jdk.internal.dynalink.CallSiteDescriptor;
|
||||
import jdk.internal.dynalink.support.Lookup;
|
||||
import jdk.internal.dynalink.linker.support.Lookup;
|
||||
|
||||
/**
|
||||
* A dynamic method bound to exactly one Java method or constructor that is caller sensitive. Since the target method is
|
||||
|
@ -87,7 +87,7 @@ import java.lang.invoke.MethodHandle;
|
||||
import java.lang.invoke.MethodHandles;
|
||||
import java.lang.invoke.MethodType;
|
||||
import jdk.internal.dynalink.beans.GuardedInvocationComponent.ValidationType;
|
||||
import jdk.internal.dynalink.support.Lookup;
|
||||
import jdk.internal.dynalink.linker.support.Lookup;
|
||||
|
||||
/**
|
||||
* A linker for java.lang.Class objects. Provides a synthetic property "static" that allows access to static fields and
|
||||
|
@ -91,8 +91,8 @@ import java.security.PrivilegedAction;
|
||||
import java.util.LinkedList;
|
||||
import java.util.List;
|
||||
import jdk.internal.dynalink.linker.LinkerServices;
|
||||
import jdk.internal.dynalink.support.Guards;
|
||||
import jdk.internal.dynalink.support.TypeUtilities;
|
||||
import jdk.internal.dynalink.linker.support.Guards;
|
||||
import jdk.internal.dynalink.linker.support.TypeUtilities;
|
||||
|
||||
/**
|
||||
* Represents a sequence of {@link Class} objects, useful for representing method signatures. Provides value
|
||||
|
@ -90,7 +90,7 @@ import jdk.internal.dynalink.linker.GuardedInvocation;
|
||||
import jdk.internal.dynalink.linker.LinkRequest;
|
||||
import jdk.internal.dynalink.linker.LinkerServices;
|
||||
import jdk.internal.dynalink.linker.TypeBasedGuardingDynamicLinker;
|
||||
import jdk.internal.dynalink.support.Guards;
|
||||
import jdk.internal.dynalink.linker.support.Guards;
|
||||
|
||||
/**
|
||||
* Simple linker that implements the "dyn:call" operation for {@link DynamicMethod} objects - the objects returned by
|
||||
|
@ -92,7 +92,7 @@ import java.util.ArrayList;
|
||||
import java.util.Collection;
|
||||
import java.util.Collections;
|
||||
import java.util.Map;
|
||||
import jdk.internal.dynalink.support.Lookup;
|
||||
import jdk.internal.dynalink.linker.support.Lookup;
|
||||
|
||||
/**
|
||||
* Base for classes that expose class field and method information to an {@link AbstractJavaLinker}. There are
|
||||
|
@ -90,7 +90,7 @@ import java.util.LinkedList;
|
||||
import java.util.List;
|
||||
import jdk.internal.dynalink.linker.ConversionComparator.Comparison;
|
||||
import jdk.internal.dynalink.linker.LinkerServices;
|
||||
import jdk.internal.dynalink.support.TypeUtilities;
|
||||
import jdk.internal.dynalink.linker.support.TypeUtilities;
|
||||
|
||||
/**
|
||||
* Utility class that encapsulates the algorithm for choosing the maximally specific methods.
|
||||
|
@ -99,7 +99,7 @@ import java.util.List;
|
||||
import jdk.internal.dynalink.CallSiteDescriptor;
|
||||
import jdk.internal.dynalink.beans.ApplicableOverloadedMethods.ApplicabilityTest;
|
||||
import jdk.internal.dynalink.linker.LinkerServices;
|
||||
import jdk.internal.dynalink.support.TypeUtilities;
|
||||
import jdk.internal.dynalink.linker.support.TypeUtilities;
|
||||
|
||||
/**
|
||||
* Represents a group of {@link SingleDynamicMethod} objects that represents all overloads of a particular name (or all
|
||||
|
@ -92,8 +92,8 @@ import java.util.List;
|
||||
import java.util.Map;
|
||||
import java.util.concurrent.ConcurrentHashMap;
|
||||
import jdk.internal.dynalink.linker.LinkerServices;
|
||||
import jdk.internal.dynalink.support.Lookup;
|
||||
import jdk.internal.dynalink.support.TypeUtilities;
|
||||
import jdk.internal.dynalink.linker.support.Lookup;
|
||||
import jdk.internal.dynalink.linker.support.TypeUtilities;
|
||||
|
||||
/**
|
||||
* Represents a subset of overloaded methods for a certain method name on a certain class. It can be either a fixarg or
|
||||
|
@ -90,8 +90,8 @@ import java.lang.reflect.Array;
|
||||
import java.util.StringTokenizer;
|
||||
import jdk.internal.dynalink.CallSiteDescriptor;
|
||||
import jdk.internal.dynalink.linker.LinkerServices;
|
||||
import jdk.internal.dynalink.support.Guards;
|
||||
import jdk.internal.dynalink.support.Lookup;
|
||||
import jdk.internal.dynalink.linker.support.Guards;
|
||||
import jdk.internal.dynalink.linker.support.Lookup;
|
||||
|
||||
/**
|
||||
* Base class for dynamic methods that dispatch to a single target Java method or constructor. Handles adaptation of the
|
||||
|
@ -95,7 +95,7 @@ import jdk.internal.dynalink.linker.GuardedInvocation;
|
||||
import jdk.internal.dynalink.linker.LinkRequest;
|
||||
import jdk.internal.dynalink.linker.LinkerServices;
|
||||
import jdk.internal.dynalink.linker.TypeBasedGuardingDynamicLinker;
|
||||
import jdk.internal.dynalink.support.Lookup;
|
||||
import jdk.internal.dynalink.linker.support.Lookup;
|
||||
|
||||
/**
|
||||
* Provides a linker for the {@link StaticClass} objects.
|
||||
|
@ -91,7 +91,7 @@ import java.util.List;
|
||||
import java.util.Objects;
|
||||
import java.util.function.Supplier;
|
||||
import jdk.internal.dynalink.CallSiteDescriptor;
|
||||
import jdk.internal.dynalink.support.Guards;
|
||||
import jdk.internal.dynalink.linker.support.Guards;
|
||||
|
||||
/**
|
||||
* Represents a conditionally valid method handle. Usually produced as a return
|
||||
|
@ -81,20 +81,18 @@
|
||||
ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
|
||||
*/
|
||||
|
||||
package jdk.internal.dynalink;
|
||||
package jdk.internal.dynalink.linker;
|
||||
|
||||
import jdk.internal.dynalink.linker.GuardedInvocation;
|
||||
import jdk.internal.dynalink.linker.LinkRequest;
|
||||
import jdk.internal.dynalink.linker.LinkerServices;
|
||||
import jdk.internal.dynalink.DynamicLinkerFactory;
|
||||
|
||||
/**
|
||||
* Interface for objects that are used to transform one guarded invocation into
|
||||
* another one. Typical usage is for implementing
|
||||
* {@link DynamicLinkerFactory#setPrelinkFilter(GuardedInvocationFilter)
|
||||
* pre-link filters}.
|
||||
* {@link DynamicLinkerFactory#setPrelinkTransformer(GuardedInvocationTransformer)
|
||||
* pre-link transformers}.
|
||||
*/
|
||||
@FunctionalInterface
|
||||
public interface GuardedInvocationFilter {
|
||||
public interface GuardedInvocationTransformer {
|
||||
/**
|
||||
* Given a guarded invocation, return either the same or potentially
|
||||
* different guarded invocation.
|
@ -87,7 +87,7 @@ import java.lang.invoke.MethodHandles;
|
||||
import java.util.function.Supplier;
|
||||
import jdk.internal.dynalink.CallSiteDescriptor;
|
||||
import jdk.internal.dynalink.beans.BeansLinker;
|
||||
import jdk.internal.dynalink.support.TypeUtilities;
|
||||
import jdk.internal.dynalink.linker.support.TypeUtilities;
|
||||
|
||||
/**
|
||||
* Optional interface that can be implemented by {@link GuardingDynamicLinker} implementations to provide
|
||||
|
@ -89,7 +89,7 @@ import java.lang.invoke.MethodType;
|
||||
import jdk.internal.dynalink.DynamicLinker;
|
||||
import jdk.internal.dynalink.DynamicLinkerFactory;
|
||||
import jdk.internal.dynalink.linker.ConversionComparator.Comparison;
|
||||
import jdk.internal.dynalink.support.TypeUtilities;
|
||||
import jdk.internal.dynalink.linker.support.TypeUtilities;
|
||||
|
||||
/**
|
||||
* Interface for services provided to {@link GuardingDynamicLinker} instances by the {@link DynamicLinker} that owns
|
||||
@ -118,7 +118,7 @@ public interface LinkerServices {
|
||||
* Similar to {@link #asType(MethodHandle, MethodType)} except it only converts the return type of the method handle
|
||||
* when it can be done using a conversion that loses neither precision nor magnitude, otherwise it leaves it
|
||||
* unchanged. The idea is that other conversions should not be performed by individual linkers, but instead the
|
||||
* {@link DynamicLinkerFactory#setPrelinkFilter(jdk.internal.dynalink.GuardedInvocationFilter) pre-link filter of
|
||||
* {@link DynamicLinkerFactory#setPrelinkTransformer(GuardedInvocationTransformer) pre-link transformer of
|
||||
* the dynamic linker} should implement the strategy of dealing with potentially lossy return type conversions in a
|
||||
* manner specific to the language runtime.
|
||||
*
|
||||
|
@ -83,7 +83,7 @@
|
||||
|
||||
package jdk.internal.dynalink.linker;
|
||||
|
||||
import jdk.internal.dynalink.support.CompositeTypeBasedGuardingDynamicLinker;
|
||||
import jdk.internal.dynalink.linker.support.CompositeTypeBasedGuardingDynamicLinker;
|
||||
|
||||
/**
|
||||
* A guarding dynamic linker that can determine whether it can link the call site solely based on the type of the first
|
||||
|
@ -81,7 +81,7 @@
|
||||
ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
|
||||
*/
|
||||
|
||||
package jdk.internal.dynalink.support;
|
||||
package jdk.internal.dynalink.linker.support;
|
||||
|
||||
import java.io.Serializable;
|
||||
import java.util.LinkedList;
|
@ -81,7 +81,7 @@
|
||||
ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
|
||||
*/
|
||||
|
||||
package jdk.internal.dynalink.support;
|
||||
package jdk.internal.dynalink.linker.support;
|
||||
|
||||
import java.io.Serializable;
|
||||
import java.util.Collections;
|
@ -81,7 +81,7 @@
|
||||
ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
|
||||
*/
|
||||
|
||||
package jdk.internal.dynalink.support;
|
||||
package jdk.internal.dynalink.linker.support;
|
||||
|
||||
import java.lang.invoke.MethodHandle;
|
||||
import java.lang.invoke.MethodHandles;
|
@ -81,7 +81,7 @@
|
||||
ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
|
||||
*/
|
||||
|
||||
package jdk.internal.dynalink.support;
|
||||
package jdk.internal.dynalink.linker.support;
|
||||
|
||||
import java.lang.invoke.MethodHandle;
|
||||
import java.lang.invoke.MethodHandles;
|
@ -81,7 +81,7 @@
|
||||
ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
|
||||
*/
|
||||
|
||||
package jdk.internal.dynalink.support;
|
||||
package jdk.internal.dynalink.linker.support;
|
||||
|
||||
import java.lang.invoke.MethodHandle;
|
||||
import java.lang.invoke.MethodHandles;
|
@ -81,7 +81,7 @@
|
||||
ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
|
||||
*/
|
||||
|
||||
package jdk.internal.dynalink.support;
|
||||
package jdk.internal.dynalink.linker.support;
|
||||
|
||||
import jdk.internal.dynalink.CallSiteDescriptor;
|
||||
import jdk.internal.dynalink.linker.LinkRequest;
|
@ -81,7 +81,7 @@
|
||||
ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
|
||||
*/
|
||||
|
||||
package jdk.internal.dynalink.support;
|
||||
package jdk.internal.dynalink.linker.support;
|
||||
|
||||
import java.util.ArrayList;
|
||||
import java.util.Collection;
|
@ -81,16 +81,16 @@
|
||||
ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
|
||||
*/
|
||||
|
||||
package jdk.internal.dynalink;
|
||||
package jdk.internal.dynalink.support;
|
||||
|
||||
import java.lang.invoke.MethodHandle;
|
||||
import java.lang.invoke.MethodHandles;
|
||||
import java.util.Arrays;
|
||||
import java.util.Iterator;
|
||||
import java.util.LinkedList;
|
||||
import jdk.internal.dynalink.CallSiteDescriptor;
|
||||
import jdk.internal.dynalink.linker.GuardedInvocation;
|
||||
import jdk.internal.dynalink.support.AbstractRelinkableCallSite;
|
||||
import jdk.internal.dynalink.support.Lookup;
|
||||
import jdk.internal.dynalink.linker.support.Lookup;
|
||||
|
||||
/**
|
||||
* A relinkable call site that implements a polymorphic inline caching strategy.
|
@ -81,11 +81,12 @@
|
||||
ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
|
||||
*/
|
||||
|
||||
package jdk.internal.dynalink;
|
||||
package jdk.internal.dynalink.support;
|
||||
|
||||
import java.lang.invoke.MethodHandle;
|
||||
import jdk.internal.dynalink.CallSiteDescriptor;
|
||||
import jdk.internal.dynalink.DynamicLinker;
|
||||
import jdk.internal.dynalink.linker.GuardedInvocation;
|
||||
import jdk.internal.dynalink.support.AbstractRelinkableCallSite;
|
||||
|
||||
/**
|
||||
* A relinkable call site that implements monomorphic inline caching strategy,
|
||||
@ -93,12 +94,12 @@ import jdk.internal.dynalink.support.AbstractRelinkableCallSite;
|
||||
* is invalidated, it will throw it away and ask its associated
|
||||
* {@link DynamicLinker} to relink it.
|
||||
*/
|
||||
public class MonomorphicCallSite extends AbstractRelinkableCallSite {
|
||||
public class SimpleRelinkableCallSite extends AbstractRelinkableCallSite {
|
||||
/**
|
||||
* Creates a new call site with monomorphic inline caching strategy.
|
||||
* @param descriptor the descriptor for this call site
|
||||
*/
|
||||
public MonomorphicCallSite(final CallSiteDescriptor descriptor) {
|
||||
public SimpleRelinkableCallSite(final CallSiteDescriptor descriptor) {
|
||||
super(descriptor);
|
||||
}
|
||||
|
@ -33,7 +33,7 @@ import static jdk.nashorn.internal.runtime.Source.sourceFor;
|
||||
import java.lang.invoke.MethodHandle;
|
||||
import java.lang.invoke.MethodHandles;
|
||||
import java.util.List;
|
||||
import jdk.internal.dynalink.support.Lookup;
|
||||
import jdk.internal.dynalink.linker.support.Lookup;
|
||||
import jdk.nashorn.api.scripting.JSObject;
|
||||
import jdk.nashorn.internal.objects.annotations.Attribute;
|
||||
import jdk.nashorn.internal.objects.annotations.Constructor;
|
||||
|
@ -39,7 +39,7 @@ import java.util.Map;
|
||||
import java.util.Queue;
|
||||
import jdk.internal.dynalink.beans.BeansLinker;
|
||||
import jdk.internal.dynalink.beans.StaticClass;
|
||||
import jdk.internal.dynalink.support.TypeUtilities;
|
||||
import jdk.internal.dynalink.linker.support.TypeUtilities;
|
||||
import jdk.nashorn.api.scripting.JSObject;
|
||||
import jdk.nashorn.api.scripting.ScriptObjectMirror;
|
||||
import jdk.nashorn.internal.objects.annotations.Attribute;
|
||||
|
@ -44,7 +44,7 @@ import jdk.internal.dynalink.beans.StaticClass;
|
||||
import jdk.internal.dynalink.linker.GuardedInvocation;
|
||||
import jdk.internal.dynalink.linker.GuardingDynamicLinker;
|
||||
import jdk.internal.dynalink.linker.LinkRequest;
|
||||
import jdk.internal.dynalink.support.SimpleLinkRequest;
|
||||
import jdk.internal.dynalink.linker.support.SimpleLinkRequest;
|
||||
import jdk.nashorn.api.scripting.ScriptObjectMirror;
|
||||
import jdk.nashorn.internal.lookup.Lookup;
|
||||
import jdk.nashorn.internal.objects.annotations.Attribute;
|
||||
|
@ -36,7 +36,7 @@ import jdk.internal.dynalink.beans.BeansLinker;
|
||||
import jdk.internal.dynalink.beans.StaticClass;
|
||||
import jdk.internal.dynalink.linker.GuardedInvocation;
|
||||
import jdk.internal.dynalink.linker.LinkRequest;
|
||||
import jdk.internal.dynalink.support.Guards;
|
||||
import jdk.internal.dynalink.linker.support.Guards;
|
||||
import jdk.nashorn.internal.lookup.MethodHandleFactory;
|
||||
import jdk.nashorn.internal.lookup.MethodHandleFunctionality;
|
||||
import jdk.nashorn.internal.objects.annotations.Attribute;
|
||||
|
@ -34,7 +34,7 @@ import java.lang.invoke.MethodHandles;
|
||||
import java.lang.invoke.MethodType;
|
||||
import jdk.internal.dynalink.CallSiteDescriptor;
|
||||
import jdk.internal.dynalink.linker.GuardedInvocation;
|
||||
import jdk.internal.dynalink.support.TypeUtilities;
|
||||
import jdk.internal.dynalink.linker.support.TypeUtilities;
|
||||
import jdk.nashorn.internal.codegen.types.Type;
|
||||
import jdk.nashorn.internal.runtime.linker.NashornCallSiteDescriptor;
|
||||
|
||||
|
@ -47,7 +47,7 @@ import java.util.concurrent.atomic.LongAdder;
|
||||
import jdk.internal.dynalink.CallSiteDescriptor;
|
||||
import jdk.internal.dynalink.linker.GuardedInvocation;
|
||||
import jdk.internal.dynalink.linker.LinkRequest;
|
||||
import jdk.internal.dynalink.support.Guards;
|
||||
import jdk.internal.dynalink.linker.support.Guards;
|
||||
import jdk.nashorn.internal.codegen.ApplySpecialization;
|
||||
import jdk.nashorn.internal.codegen.Compiler;
|
||||
import jdk.nashorn.internal.codegen.CompilerConstants.Call;
|
||||
|
@ -32,7 +32,7 @@ import java.lang.invoke.MethodHandle;
|
||||
import java.lang.invoke.MethodHandles;
|
||||
import jdk.internal.dynalink.CallSiteDescriptor;
|
||||
import jdk.internal.dynalink.linker.GuardedInvocation;
|
||||
import jdk.internal.dynalink.support.Guards;
|
||||
import jdk.internal.dynalink.linker.support.Guards;
|
||||
import jdk.nashorn.internal.runtime.linker.NashornCallSiteDescriptor;
|
||||
|
||||
/**
|
||||
|
@ -29,10 +29,10 @@ import static jdk.nashorn.internal.codegen.CompilerConstants.specialCall;
|
||||
import static jdk.nashorn.internal.lookup.Lookup.MH;
|
||||
import static jdk.nashorn.internal.runtime.ScriptRuntime.UNDEFINED;
|
||||
|
||||
import jdk.internal.dynalink.support.TypeUtilities;
|
||||
import java.lang.invoke.MethodHandle;
|
||||
import java.lang.invoke.MethodHandles;
|
||||
import java.util.Arrays;
|
||||
import jdk.internal.dynalink.linker.support.TypeUtilities;
|
||||
|
||||
/**
|
||||
* Implementation of {@link ArrayData} as soon as a double has been
|
||||
|
@ -37,14 +37,14 @@ import java.lang.invoke.MethodType;
|
||||
import jdk.internal.dynalink.CallSiteDescriptor;
|
||||
import jdk.internal.dynalink.DynamicLinker;
|
||||
import jdk.internal.dynalink.DynamicLinkerFactory;
|
||||
import jdk.internal.dynalink.GuardedInvocationFilter;
|
||||
import jdk.internal.dynalink.beans.BeansLinker;
|
||||
import jdk.internal.dynalink.beans.StaticClass;
|
||||
import jdk.internal.dynalink.linker.GuardedInvocation;
|
||||
import jdk.internal.dynalink.linker.GuardedInvocationTransformer;
|
||||
import jdk.internal.dynalink.linker.LinkRequest;
|
||||
import jdk.internal.dynalink.linker.LinkerServices;
|
||||
import jdk.internal.dynalink.linker.MethodTypeConversionStrategy;
|
||||
import jdk.internal.dynalink.support.TypeUtilities;
|
||||
import jdk.internal.dynalink.linker.support.TypeUtilities;
|
||||
import jdk.nashorn.api.scripting.JSObject;
|
||||
import jdk.nashorn.internal.codegen.CompilerConstants.Call;
|
||||
import jdk.nashorn.internal.lookup.MethodHandleFactory;
|
||||
@ -102,7 +102,7 @@ public final class Bootstrap {
|
||||
new ReflectionCheckLinker());
|
||||
factory.setFallbackLinkers(nashornBeansLinker, new NashornBottomLinker());
|
||||
factory.setSyncOnRelink(true);
|
||||
factory.setPrelinkFilter(new GuardedInvocationFilter() {
|
||||
factory.setPrelinkTransformer(new GuardedInvocationTransformer() {
|
||||
@Override
|
||||
public GuardedInvocation filter(final GuardedInvocation inv, final LinkRequest request, final LinkerServices linkerServices) {
|
||||
final CallSiteDescriptor desc = request.getCallSiteDescriptor();
|
||||
|
@ -34,7 +34,7 @@ import jdk.internal.dynalink.linker.GuardedInvocation;
|
||||
import jdk.internal.dynalink.linker.LinkRequest;
|
||||
import jdk.internal.dynalink.linker.LinkerServices;
|
||||
import jdk.internal.dynalink.linker.TypeBasedGuardingDynamicLinker;
|
||||
import jdk.internal.dynalink.support.Guards;
|
||||
import jdk.internal.dynalink.linker.support.Guards;
|
||||
|
||||
/**
|
||||
* Links {@link BoundCallable} objects. Passes through to linker services for linking a callable (for either
|
||||
|
@ -47,7 +47,7 @@ import java.util.List;
|
||||
import java.util.Map;
|
||||
import java.util.concurrent.ConcurrentHashMap;
|
||||
import jdk.internal.dynalink.beans.StaticClass;
|
||||
import jdk.internal.dynalink.support.SimpleLinkRequest;
|
||||
import jdk.internal.dynalink.linker.support.SimpleLinkRequest;
|
||||
import jdk.nashorn.internal.runtime.Context;
|
||||
import jdk.nashorn.internal.runtime.ECMAException;
|
||||
import jdk.nashorn.internal.runtime.ScriptFunction;
|
||||
|
@ -34,7 +34,7 @@ import java.lang.invoke.MethodHandle;
|
||||
import java.lang.invoke.MethodHandles;
|
||||
import java.util.HashMap;
|
||||
import java.util.Map;
|
||||
import jdk.internal.dynalink.support.TypeUtilities;
|
||||
import jdk.internal.dynalink.linker.support.TypeUtilities;
|
||||
import jdk.nashorn.internal.runtime.ConsString;
|
||||
import jdk.nashorn.internal.runtime.JSType;
|
||||
import jdk.nashorn.internal.runtime.ScriptObject;
|
||||
|
@ -37,7 +37,7 @@ import jdk.internal.dynalink.linker.GuardedInvocation;
|
||||
import jdk.internal.dynalink.linker.LinkRequest;
|
||||
import jdk.internal.dynalink.linker.LinkerServices;
|
||||
import jdk.internal.dynalink.linker.TypeBasedGuardingDynamicLinker;
|
||||
import jdk.internal.dynalink.support.Lookup;
|
||||
import jdk.internal.dynalink.linker.support.Lookup;
|
||||
import jdk.nashorn.internal.runtime.ScriptRuntime;
|
||||
|
||||
/**
|
||||
|
@ -44,9 +44,9 @@ import java.util.Random;
|
||||
import java.util.Set;
|
||||
import java.util.concurrent.atomic.AtomicInteger;
|
||||
import java.util.concurrent.atomic.LongAdder;
|
||||
import jdk.internal.dynalink.ChainedCallSite;
|
||||
import jdk.internal.dynalink.DynamicLinker;
|
||||
import jdk.internal.dynalink.linker.GuardedInvocation;
|
||||
import jdk.internal.dynalink.support.ChainedCallSite;
|
||||
import jdk.nashorn.internal.runtime.Context;
|
||||
import jdk.nashorn.internal.runtime.Debug;
|
||||
import jdk.nashorn.internal.runtime.ScriptObject;
|
||||
|
@ -40,8 +40,8 @@ import jdk.internal.dynalink.linker.GuardingDynamicLinker;
|
||||
import jdk.internal.dynalink.linker.LinkRequest;
|
||||
import jdk.internal.dynalink.linker.LinkerServices;
|
||||
import jdk.internal.dynalink.linker.MethodHandleTransformer;
|
||||
import jdk.internal.dynalink.support.DefaultInternalObjectFilter;
|
||||
import jdk.internal.dynalink.support.Lookup;
|
||||
import jdk.internal.dynalink.linker.support.DefaultInternalObjectFilter;
|
||||
import jdk.internal.dynalink.linker.support.Lookup;
|
||||
import jdk.nashorn.api.scripting.ScriptUtils;
|
||||
import jdk.nashorn.internal.runtime.ConsString;
|
||||
import jdk.nashorn.internal.runtime.Context;
|
||||
|
@ -43,7 +43,7 @@ import jdk.internal.dynalink.linker.GuardingDynamicLinker;
|
||||
import jdk.internal.dynalink.linker.GuardingTypeConverterFactory;
|
||||
import jdk.internal.dynalink.linker.LinkRequest;
|
||||
import jdk.internal.dynalink.linker.LinkerServices;
|
||||
import jdk.internal.dynalink.support.Guards;
|
||||
import jdk.internal.dynalink.linker.support.Guards;
|
||||
import jdk.nashorn.internal.codegen.types.Type;
|
||||
import jdk.nashorn.internal.runtime.JSType;
|
||||
import jdk.nashorn.internal.runtime.ScriptRuntime;
|
||||
|
@ -47,8 +47,8 @@ import jdk.internal.dynalink.linker.GuardingTypeConverterFactory;
|
||||
import jdk.internal.dynalink.linker.LinkRequest;
|
||||
import jdk.internal.dynalink.linker.LinkerServices;
|
||||
import jdk.internal.dynalink.linker.TypeBasedGuardingDynamicLinker;
|
||||
import jdk.internal.dynalink.support.Guards;
|
||||
import jdk.internal.dynalink.support.Lookup;
|
||||
import jdk.internal.dynalink.linker.support.Guards;
|
||||
import jdk.internal.dynalink.linker.support.Lookup;
|
||||
import jdk.nashorn.api.scripting.JSObject;
|
||||
import jdk.nashorn.api.scripting.ScriptObjectMirror;
|
||||
import jdk.nashorn.api.scripting.ScriptUtils;
|
||||
|
@ -36,7 +36,7 @@ import jdk.internal.dynalink.linker.GuardingTypeConverterFactory;
|
||||
import jdk.internal.dynalink.linker.LinkRequest;
|
||||
import jdk.internal.dynalink.linker.LinkerServices;
|
||||
import jdk.internal.dynalink.linker.TypeBasedGuardingDynamicLinker;
|
||||
import jdk.internal.dynalink.support.TypeUtilities;
|
||||
import jdk.internal.dynalink.linker.support.TypeUtilities;
|
||||
import jdk.nashorn.internal.objects.Global;
|
||||
import jdk.nashorn.internal.runtime.ConsString;
|
||||
import jdk.nashorn.internal.runtime.JSType;
|
||||
|
@ -34,7 +34,7 @@ import jdk.internal.dynalink.linker.GuardingDynamicLinker;
|
||||
import jdk.internal.dynalink.linker.LinkRequest;
|
||||
import jdk.internal.dynalink.linker.LinkerServices;
|
||||
import jdk.internal.dynalink.linker.TypeBasedGuardingDynamicLinker;
|
||||
import jdk.internal.dynalink.support.Guards;
|
||||
import jdk.internal.dynalink.linker.support.Guards;
|
||||
import jdk.nashorn.internal.runtime.Context;
|
||||
import jdk.nashorn.internal.runtime.ECMAErrors;
|
||||
|
||||
|
@ -35,7 +35,7 @@ import java.lang.invoke.SwitchPoint;
|
||||
import jdk.internal.dynalink.CallSiteDescriptor;
|
||||
import jdk.internal.dynalink.linker.GuardedInvocation;
|
||||
import jdk.internal.dynalink.linker.LinkRequest;
|
||||
import jdk.internal.dynalink.support.Guards;
|
||||
import jdk.internal.dynalink.linker.support.Guards;
|
||||
import jdk.nashorn.internal.runtime.Context;
|
||||
import jdk.nashorn.internal.runtime.FindProperty;
|
||||
import jdk.nashorn.internal.runtime.GlobalConstants;
|
||||
|
Loading…
x
Reference in New Issue
Block a user