| // Copyright (c) 2022, the R8 project authors. Please see the AUTHORS file | |
| // for details. All rights reserved. Use of this source code is governed by a | |
| // BSD-style license that can be found in the LICENSE file. | |
| package jdk8272564; | |
| public class Main { | |
| // From javac in JDK-18 all of the following three invokes of toString are compiled to | |
| // invokeinterface. Prior to JDK 18 the last two where compiled to invokevirtual. | |
| // See https://bugs.openjdk.java.net/browse/JDK-8272564. | |
| static void f(I i, J j, K k) { | |
| i.toString(); | |
| j.toString(); | |
| k.toString(); | |
| } | |
| // Remaining public methods on Object. | |
| static void g(I i, J j, K k) throws InterruptedException { | |
| i.hashCode(); | |
| j.hashCode(); | |
| k.hashCode(); | |
| i.equals(new Object()); | |
| j.equals(new Object()); | |
| k.equals(new Object()); | |
| i.getClass(); | |
| j.getClass(); | |
| k.getClass(); | |
| i.notify(); | |
| j.notify(); | |
| k.notify(); | |
| i.notifyAll(); | |
| j.notifyAll(); | |
| k.notifyAll(); | |
| i.wait(); | |
| j.wait(); | |
| k.wait(); | |
| i.wait(1L); | |
| j.wait(1L); | |
| k.wait(1L); | |
| i.wait(1L, 1); | |
| j.wait(1L, 1); | |
| k.wait(1L, 1); | |
| } | |
| public static void main(String[] args) { | |
| f(new A(), new B(), new C()); | |
| } | |
| } |