Categories:
Audio (13)
Biotech (29)
Bytecode (36)
Database (77)
Framework (7)
Game (7)
General (507)
Graphics (53)
I/O (35)
IDE (2)
JAR Tools (101)
JavaBeans (21)
JDBC (121)
JDK (426)
JSP (20)
Logging (108)
Mail (58)
Messaging (8)
Network (84)
PDF (97)
Report (7)
Scripting (84)
Security (32)
Server (121)
Servlet (26)
SOAP (24)
Testing (54)
Web (15)
XML (309)
Collections:
Other Resources:
JDK 11 jdk.scripting.nashorn.jmod - Scripting Nashorn Module
JDK 11 jdk.scripting.nashorn.jmod is the JMOD file for JDK 11 Scripting Nashorn module.
JDK 11 Scripting Nashorn module compiled class files are stored in \fyicenter\jdk-11.0.1\jmods\jdk.scripting.nashorn.jmod.
JDK 11 Scripting Nashorn module compiled class files are also linked and stored in the \fyicenter\jdk-11.0.1\lib\modules JImage file.
JDK 11 Scripting Nashorn module source code files are stored in \fyicenter\jdk-11.0.1\lib\src.zip\jdk.scripting.nashorn.
You can click and view the content of each source code file in the list below.
✍: FYIcenter
⏎ jdk/nashorn/internal/runtime/linker/JavaSuperAdapterLinker.java
/* * Copyright (c) 2010, 2013, Oracle and/or its affiliates. All rights reserved. * ORACLE PROPRIETARY/CONFIDENTIAL. Use is subject to license terms. * * * * * * * * * * * * * * * * * * * * */ package jdk.nashorn.internal.runtime.linker; import static jdk.dynalink.StandardNamespace.METHOD; import static jdk.dynalink.StandardOperation.GET; import static jdk.nashorn.internal.runtime.linker.JavaAdapterBytecodeGenerator.SUPER_PREFIX; import java.lang.invoke.MethodHandle; import java.lang.invoke.MethodHandles; import java.lang.invoke.MethodType; import jdk.dynalink.CallSiteDescriptor; import jdk.dynalink.Operation; import jdk.dynalink.beans.BeansLinker; import jdk.dynalink.linker.GuardedInvocation; import jdk.dynalink.linker.LinkRequest; import jdk.dynalink.linker.LinkerServices; import jdk.dynalink.linker.TypeBasedGuardingDynamicLinker; import jdk.dynalink.linker.support.Lookup; import jdk.nashorn.internal.runtime.ScriptRuntime; /** * A linker for instances of {@code JavaSuperAdapter}. Only links {@code getMethod} calls, by forwarding them to the * bean linker for the adapter class and prepending {@code super$} to method names. * */ final class JavaSuperAdapterLinker implements TypeBasedGuardingDynamicLinker { private static final MethodHandle ADD_PREFIX_TO_METHOD_NAME; private static final MethodHandle BIND_DYNAMIC_METHOD; private static final MethodHandle GET_ADAPTER; private static final MethodHandle IS_ADAPTER_OF_CLASS; static { final Lookup lookup = new Lookup(MethodHandles.lookup()); ADD_PREFIX_TO_METHOD_NAME = lookup.findOwnStatic("addPrefixToMethodName", Object.class, Object.class); BIND_DYNAMIC_METHOD = lookup.findOwnStatic("bindDynamicMethod", Object.class, Object.class, Object.class); GET_ADAPTER = lookup.findVirtual(JavaSuperAdapter.class, "getAdapter", MethodType.methodType(Object.class)); IS_ADAPTER_OF_CLASS = lookup.findOwnStatic("isAdapterOfClass", boolean.class, Class.class, Object.class); } private static final Operation GET_METHOD = GET.withNamespace(METHOD); private final BeansLinker beansLinker; JavaSuperAdapterLinker(final BeansLinker beansLinker) { this.beansLinker = beansLinker; } @Override public boolean canLinkType(final Class<?> type) { return type == JavaSuperAdapter.class; } @Override public GuardedInvocation getGuardedInvocation(final LinkRequest linkRequest, final LinkerServices linkerServices) throws Exception { final Object objSuperAdapter = linkRequest.getReceiver(); if(!(objSuperAdapter instanceof JavaSuperAdapter)) { return null; } final CallSiteDescriptor descriptor = linkRequest.getCallSiteDescriptor(); if(!NashornCallSiteDescriptor.contains(descriptor, GET, METHOD)) { // We only handle GET:METHOD return null; } final Object adapter = ((JavaSuperAdapter)objSuperAdapter).getAdapter(); // Replace argument (javaSuperAdapter, ...) => (adapter, ...) when delegating to BeansLinker final Object[] args = linkRequest.getArguments(); args[0] = adapter; // Use R(T0, ...) => R(adapter.class, ...) call site type when delegating to BeansLinker. final MethodType type = descriptor.getMethodType(); final Class<?> adapterClass = adapter.getClass(); final String name = NashornCallSiteDescriptor.getOperand(descriptor); final Operation newOp = name == null ? GET_METHOD : GET_METHOD.named(SUPER_PREFIX + name); final CallSiteDescriptor newDescriptor = new CallSiteDescriptor( NashornCallSiteDescriptor.getLookupInternal(descriptor), newOp, type.changeParameterType(0, adapterClass)); // Delegate to BeansLinker final GuardedInvocation guardedInv = NashornBeansLinker.getGuardedInvocation( beansLinker, linkRequest.replaceArguments(newDescriptor, args), linkerServices); // Even for non-existent methods, Bootstrap's BeansLinker will link a // noSuchMember handler. assert guardedInv != null; final MethodHandle guard = IS_ADAPTER_OF_CLASS.bindTo(adapterClass); final MethodHandle invocation = guardedInv.getInvocation(); final MethodType invType = invocation.type(); // For invocation typed R(T0, ...) create a dynamic method binder of type Object(R, T0) final MethodHandle typedBinder = BIND_DYNAMIC_METHOD.asType(MethodType.methodType(Object.class, invType.returnType(), invType.parameterType(0))); // For invocation typed R(T0, T1, ...) create a dynamic method binder of type Object(R, T0, T1, ...) final MethodHandle droppingBinder = MethodHandles.dropArguments(typedBinder, 2, invType.parameterList().subList(1, invType.parameterCount())); // Finally, fold the invocation into the binder to produce a method handle that will bind every returned // DynamicMethod object from StandardOperation.GET_METHOD calls to the actual receiver // Object(R(T0, T1, ...), T0, T1, ...) final MethodHandle bindingInvocation = MethodHandles.foldArguments(droppingBinder, invocation); final MethodHandle typedGetAdapter = asFilterType(GET_ADAPTER, 0, invType, type); final MethodHandle adaptedInvocation; if(name != null) { adaptedInvocation = MethodHandles.filterArguments(bindingInvocation, 0, typedGetAdapter); } else { // Add a filter that'll prepend "super$" to each name passed to the variable-name StandardOperation.GET_METHOD. final MethodHandle typedAddPrefix = asFilterType(ADD_PREFIX_TO_METHOD_NAME, 1, invType, type); adaptedInvocation = MethodHandles.filterArguments(bindingInvocation, 0, typedGetAdapter, typedAddPrefix); } return guardedInv.replaceMethods(adaptedInvocation, guard).asType(descriptor); } /** * Adapts the type of a method handle used as a filter in a position from a source method type to a target method type. * @param filter the filter method handle * @param pos the position in the argument list that it's filtering * @param targetType the target method type for filtering * @param sourceType the source method type for filtering * @return a type adapted filter */ private static MethodHandle asFilterType(final MethodHandle filter, final int pos, final MethodType targetType, final MethodType sourceType) { return filter.asType(MethodType.methodType(targetType.parameterType(pos), sourceType.parameterType(pos))); } @SuppressWarnings("unused") private static Object addPrefixToMethodName(final Object name) { return SUPER_PREFIX.concat(String.valueOf(name)); } /** * Used to transform the return value of getMethod; transform a {@code DynamicMethod} into a * {@code BoundDynamicMethod} while also accounting for the possibility of a non-existent method. * @param dynamicMethod the dynamic method to bind * @param boundThis the adapter underlying a super adapter, to which the dynamic method is bound. * @return a dynamic method bound to the adapter instance. */ @SuppressWarnings("unused") private static Object bindDynamicMethod(final Object dynamicMethod, final Object boundThis) { return dynamicMethod == ScriptRuntime.UNDEFINED ? ScriptRuntime.UNDEFINED : Bootstrap.bindCallable(dynamicMethod, boundThis, null); } /** * Used as the guard of linkages, as the receiver is not guaranteed to be a JavaSuperAdapter. * @param clazz the class the receiver's adapter is tested against. * @param obj receiver * @return true if the receiver is a super adapter, and its underlying adapter is of the specified class */ @SuppressWarnings("unused") private static boolean isAdapterOfClass(final Class<?> clazz, final Object obj) { return obj instanceof JavaSuperAdapter && clazz == (((JavaSuperAdapter)obj).getAdapter()).getClass(); } }
⏎ jdk/nashorn/internal/runtime/linker/JavaSuperAdapterLinker.java
Or download all of them as a single archive file:
File name: jdk.scripting.nashorn-11.0.1-src.zip File size: 1390965 bytes Release date: 2018-11-04 Download
⇒ JDK 11 jdk.scripting.nashorn.shell.jmod - Scripting Nashorn Shell Module
2020-04-25, 83798👍, 0💬
Popular Posts:
JAX-WS is an API for building web services and clients. It is the next generation Web Services API r...
io.jar is a component in iText Java library to provide input/output functionalities. iText Java libr...
JDK 11 jdk.hotspot.agent.jmod is the JMOD file for JDK 11 Hotspot Agent module. JDK 11 Hotspot Agent...
What Is jaxb-api-2.1.6.jar? Java Architecture for XML Binding (JAXB) is a Java API that allows Java ...
Apache Axis2 is the core engine for Web services. It is a complete re-design and re-write of the wid...