< prev index next >
src/jdk.scripting.nashorn/share/classes/jdk/nashorn/internal/runtime/linker/Bootstrap.java
Print this page
*** 31,40 ****
--- 31,43 ----
import java.lang.invoke.CallSite;
import java.lang.invoke.MethodHandle;
import java.lang.invoke.MethodHandles;
import java.lang.invoke.MethodHandles.Lookup;
import java.lang.invoke.MethodType;
+ import java.util.ArrayList;
+ import java.util.Collections;
+ import java.util.List;
import jdk.dynalink.CallSiteDescriptor;
import jdk.dynalink.DynamicLinker;
import jdk.dynalink.DynamicLinkerFactory;
import jdk.dynalink.beans.BeansLinker;
import jdk.dynalink.beans.StaticClass;
*** 68,77 ****
--- 71,81 ----
private static final MethodHandle VOID_TO_OBJECT = MH.constant(Object.class, ScriptRuntime.UNDEFINED);
private static final BeansLinker beansLinker = new BeansLinker(Bootstrap::createMissingMemberHandler);
private static final GuardingDynamicLinker[] prioritizedLinkers;
private static final GuardingDynamicLinker[] fallbackLinkers;
+
static {
final NashornBeansLinker nashornBeansLinker = new NashornBeansLinker(beansLinker);
prioritizedLinkers = new GuardingDynamicLinker[] {
new NashornLinker(),
new NashornPrimitiveLinker(),
*** 88,97 ****
--- 92,114 ----
// do not create me!!
private Bootstrap() {
}
/**
+ * Returns a list of exposed nashorn dynalink linkers.
+ *
+ * @return a list of exposed nashorn dynalink linkers.
+ */
+ public static List<GuardingDynamicLinker> getExposedLinkers() {
+ // we have to create BeansLinker without nashorn specific missing member handler!
+ // Or else, we'd return values such as 'undefined' to the external world!
+ final NashornBeansLinker nbl = new NashornBeansLinker(new BeansLinker());
+ final JSObjectLinker linker = new JSObjectLinker(nbl);
+ return Collections.singletonList(linker);
+ }
+
+ /**
* Creates a Nashorn dynamic linker with the given app class loader.
* @param appLoader the app class loader. It will be used to discover
* additional language runtime linkers (if any).
* @param unstableRelinkThreshold the unstable relink threshold
* @return a newly created dynamic linker.
< prev index next >