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 17 java.base.jmod - Base Module
JDK 17 java.base.jmod is the JMOD file for JDK 17 Base module.
JDK 17 Base module compiled class files are stored in \fyicenter\jdk-17.0.5\jmods\java.base.jmod.
JDK 17 Base module compiled class files are also linked and stored in the \fyicenter\jdk-17.0.5\lib\modules JImage file.
JDK 17 Base module source code files are stored in \fyicenter\jdk-17.0.5\lib\src.zip\java.base.
You can click and view the content of each source code file in the list below.
✍: FYIcenter
⏎ java/lang/invoke/IndirectVarHandle.java
/* * Copyright (c) 2020, Oracle and/or its affiliates. All rights reserved. * ORACLE PROPRIETARY/CONFIDENTIAL. Use is subject to license terms. * * * * * * * * * * * * * * * * * * * * * */ package java.lang.invoke; import jdk.internal.vm.annotation.ForceInline; import jdk.internal.vm.annotation.Stable; import java.util.List; import java.util.function.BiFunction; /** * An indirect var handle can be thought of as an aggregate of the method handles implementing its supported access modes. * Its varform contains no method name table (given that some of the method handles composing a bound var handle might * not be direct). The set of method handles constituting an indirect var handle are retrieved lazily, to minimize * code spinning (since not all the access modes will be used anyway). * Indirect var handles are useful when constructing var handle adapters - that is, an adapter var handle * can be constructed by extracting the method handles constituting the target var handle, adapting them * (using the method handle combinator API) and then repackaging the adapted method handles into a new, indirect * var handle. */ /* package */ class IndirectVarHandle extends VarHandle { @Stable private final MethodHandle[] handleMap = new MethodHandle[AccessMode.COUNT]; private final VarHandle directTarget; // cache, for performance reasons private final VarHandle target; private final BiFunction<AccessMode, MethodHandle, MethodHandle> handleFactory; private final Class<?> value; private final Class<?>[] coordinates; IndirectVarHandle(VarHandle target, Class<?> value, Class<?>[] coordinates, BiFunction<AccessMode, MethodHandle, MethodHandle> handleFactory) { this(target, value, coordinates, handleFactory, new VarForm(value, coordinates), false); } private IndirectVarHandle(VarHandle target, Class<?> value, Class<?>[] coordinates, BiFunction<AccessMode, MethodHandle, MethodHandle> handleFactory, VarForm form, boolean exact) { super(form, exact); this.handleFactory = handleFactory; this.target = target; this.directTarget = target.asDirect(); this.value = value; this.coordinates = coordinates; } @Override public Class<?> varType() { return value; } @Override public List<Class<?>> coordinateTypes() { return List.of(coordinates); } @Override MethodType accessModeTypeUncached(AccessType at) { return at.accessModeType(null, value, coordinates); } @Override boolean isDirect() { return false; } @Override VarHandle asDirect() { return directTarget; } VarHandle target() { return target; } @Override public VarHandle withInvokeExactBehavior() { return hasInvokeExactBehavior() ? this : new IndirectVarHandle(target, value, coordinates, handleFactory, vform, true); } @Override public VarHandle withInvokeBehavior() { return !hasInvokeExactBehavior() ? this : new IndirectVarHandle(target, value, coordinates, handleFactory, vform, false); } @Override @ForceInline MethodHandle getMethodHandle(int mode) { MethodHandle handle = handleMap[mode]; if (handle == null) { MethodHandle targetHandle = target.getMethodHandle(mode); // might throw UOE of access mode is not supported, which is ok handle = handleMap[mode] = handleFactory.apply(AccessMode.values()[mode], targetHandle); } return handle; } @Override public MethodHandle toMethodHandle(AccessMode accessMode) { return getMethodHandle(accessMode.ordinal()).bindTo(directTarget); } }
⏎ java/lang/invoke/IndirectVarHandle.java
Or download all of them as a single archive file:
File name: java.base-17.0.5-src.zip File size: 8883851 bytes Release date: 2022-09-13 Download
2023-09-26, 44483👍, 1💬
Popular Posts:
JRE 8 rt.jar is the JAR file for JRE 8 RT (Runtime) libraries. JRE (Java Runtime) 8 is the runtime e...
Joda-Time provides a quality replacement for the Java date and time classes. The design allows for m...
What Is ojdbc8.jar for Oracle 12c R2? ojdbc8.jar for Oracle 12c R2 is the JAR files of ojdbc.jar, JD...
What Is commons-net-ftp-2.0.jar? commons-net-ftp-2.0.jar is the JAR file for Apache Commons Net FTP ...
ASM is an all purpose Java bytecode manipulation and analysis framework. It can be used to modify ex...