< 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 >