From 4eb2f21fe173fa6bcbb476d8424283d067dbdf00 Mon Sep 17 00:00:00 2001 From: Babneet Singh Date: Mon, 11 Nov 2024 20:35:01 -0500 Subject: [PATCH] Add a stub for java.lang.invoke.MethodHandleImpl OpenJ9 JDK8 and JDK11 currently use OpenJ9 MethodHandles. Enabling jdk_bean in JDK8 and JDK11 triggers certain OpenJDK MethodHandles code paths. However, OpenJ9 MethodHandles are in use for JDK8 and JDK11, so OpenJDK MethodHandles paths shouldn't be activated. To address this, a MethodHandleImpl stub was added, used only with OpenJ9 MethodHandles, and not when OpenJDK MethodHandles are enabled. Related: #20531 Signed-off-by: Babneet Singh --- .../java/lang/invoke/MethodHandleImpl.java | 42 +++++++++++++++++++ 1 file changed, 42 insertions(+) create mode 100644 jcl/src/java.base/share/classes/java/lang/invoke/MethodHandleImpl.java diff --git a/jcl/src/java.base/share/classes/java/lang/invoke/MethodHandleImpl.java b/jcl/src/java.base/share/classes/java/lang/invoke/MethodHandleImpl.java new file mode 100644 index 00000000000..0c954829d37 --- /dev/null +++ b/jcl/src/java.base/share/classes/java/lang/invoke/MethodHandleImpl.java @@ -0,0 +1,42 @@ +/*[INCLUDE-IF !OPENJDK_METHODHANDLES]*/ +/* + * Copyright IBM Corp. and others 2024 + * + * This program and the accompanying materials are made available under + * the terms of the Eclipse Public License 2.0 which accompanies this + * distribution and is available at https://www.eclipse.org/legal/epl-2.0/ + * or the Apache License, Version 2.0 which accompanies this distribution and + * is available at https://www.apache.org/licenses/LICENSE-2.0. + * + * This Source Code may also be made available under the following + * Secondary Licenses when the conditions for such availability set + * forth in the Eclipse Public License, v. 2.0 are satisfied: GNU + * General Public License, version 2 with the GNU Classpath + * Exception [1] and GNU General Public License, version 2 with the + * OpenJDK Assembly Exception [2]. + * + * [1] https://www.gnu.org/software/classpath/license.html + * [2] https://openjdk.org/legal/assembly-exception.html + * + * SPDX-License-Identifier: EPL-2.0 OR Apache-2.0 OR GPL-2.0-only WITH Classpath-exception-2.0 OR GPL-2.0-only WITH OpenJDK-assembly-exception-1.0 + */ +package java.lang.invoke; + +abstract class MethodHandleImpl { + enum Intrinsic { + } + + static MethodHandle bindCaller(MethodHandle mh, Class cls) { + throw OpenJDKCompileStub.OpenJDKCompileStubThrowError(); + } + + /*[IF JAVA_SPEC_VERSION >= 11]*/ + static MethodHandle varargsArray(int i) { + throw OpenJDKCompileStub.OpenJDKCompileStubThrowError(); + } + + static MethodHandle varargsArray(Class cls, int i) { + throw OpenJDKCompileStub.OpenJDKCompileStubThrowError(); + } + /*[ENDIF] JAVA_SPEC_VERSION >= 11 */ +}