summaryrefslogtreecommitdiff
path: root/test/2277-methodhandle-invokeexact/src/JavaApiTest.java
diff options
context:
space:
mode:
author Almaz Mingaleev <mingaleev@google.com> 2024-11-13 16:18:03 +0000
committer Treehugger Robot <android-test-infra-autosubmit@system.gserviceaccount.com> 2024-11-27 15:40:50 +0000
commitb82da21e55c185dbe031dcfb260578dab576e4bc (patch)
treebfe0988b7f339fdd0bfede515206dd55bebba8cb /test/2277-methodhandle-invokeexact/src/JavaApiTest.java
parentb16c991a56873f7baddec375ca63691f43a1afd6 (diff)
x86-64: handle invoke-interface in invokeExact intrinsic.
Bug: 297147201 Test: ./art/test/testrunner/testrunner.py -b --host --64 Test: ./art/test/testrunner/testrunner.py -b --jvm Change-Id: I2c07ae919921363e8e419ec7296cd24696e7f3b5
Diffstat (limited to 'test/2277-methodhandle-invokeexact/src/JavaApiTest.java')
-rw-r--r--test/2277-methodhandle-invokeexact/src/JavaApiTest.java58
1 files changed, 58 insertions, 0 deletions
diff --git a/test/2277-methodhandle-invokeexact/src/JavaApiTest.java b/test/2277-methodhandle-invokeexact/src/JavaApiTest.java
index 77b4bc0c73..88518eeaa9 100644
--- a/test/2277-methodhandle-invokeexact/src/JavaApiTest.java
+++ b/test/2277-methodhandle-invokeexact/src/JavaApiTest.java
@@ -63,6 +63,14 @@ public class JavaApiTest extends AbstractInvokeExactTest {
private static final MethodHandle FOOBARIMPL_DEFAULT;
private static final MethodHandle FOO_NONOVERRIDDEN_DEFAULT;
private static final MethodHandle BAR_NONOVERRIDDEN_DEFAULT;
+ private static final MethodHandle TO_STRING_DEFINED_IN_AN_INTERFACE;
+
+ private static final MethodHandle INTERFACE_ONE_METHOD;
+ private static final MethodHandle INTERFACE_TWO_METHOD;
+ private static final MethodHandle INTERFACE_THREE_METHOD;
+ private static final MethodHandle INTERFACE_FOUR_METHOD;
+ private static final MethodHandle FOO_AND_FOO_CONFLICT_DEFAULT;
+ private static final MethodHandle BASE_INTERFACE;
static {
try {
@@ -150,6 +158,21 @@ public class JavaApiTest extends AbstractInvokeExactTest {
.findVirtual(Foo.class, "nonOverriddenDefault", methodType(String.class));
BAR_NONOVERRIDDEN_DEFAULT = MethodHandles.lookup()
.findVirtual(Bar.class, "nonOverriddenDefault", methodType(String.class));
+ TO_STRING_DEFINED_IN_AN_INTERFACE = MethodHandles.lookup()
+ .findVirtual(ToStringable.class, "toString", methodType(String.class));
+
+ INTERFACE_ONE_METHOD = MethodHandles.lookup()
+ .findVirtual(Interface1.class, "methodOne", methodType(String.class));
+ INTERFACE_TWO_METHOD = MethodHandles.lookup()
+ .findVirtual(Interface2.class, "methodTwo", methodType(String.class));
+ INTERFACE_THREE_METHOD = MethodHandles.lookup()
+ .findVirtual(Interface3.class, "methodThree", methodType(String.class));
+ INTERFACE_FOUR_METHOD = MethodHandles.lookup()
+ .findVirtual(Interface4.class, "methodFour", methodType(String.class));
+ FOO_AND_FOO_CONFLICT_DEFAULT = MethodHandles.lookup()
+ .findVirtual(FooAndFooConflict.class, "defaultToOverride", methodType(String.class));
+ BASE_INTERFACE = MethodHandles.lookup()
+ .findVirtual(BaseInterface.class, "method", methodType(String.class));
} catch (Exception e) {
throw new RuntimeException(e);
}
@@ -345,7 +368,42 @@ public class JavaApiTest extends AbstractInvokeExactTest {
}
@Override
+ public MethodHandle toStringDefinedInAnInterface() {
+ return TO_STRING_DEFINED_IN_AN_INTERFACE;
+ }
+
+ @Override
public MethodHandle optionalGet() {
return OPTIONAL_GET;
}
+
+ @Override
+ public MethodHandle interfaceOneMethod() {
+ return INTERFACE_ONE_METHOD;
+ }
+
+ @Override
+ public MethodHandle interfaceTwoMethod() {
+ return INTERFACE_TWO_METHOD;
+ }
+
+ @Override
+ public MethodHandle interfaceThreeMethod() {
+ return INTERFACE_THREE_METHOD;
+ }
+
+ @Override
+ public MethodHandle interfaceFourMethod() {
+ return INTERFACE_FOUR_METHOD;
+ }
+
+ @Override
+ public MethodHandle fooAndFooConflictDefault() {
+ return FOO_AND_FOO_CONFLICT_DEFAULT;
+ }
+
+ @Override
+ public MethodHandle baseInterface() {
+ return BASE_INTERFACE;
+ }
}