# HG changeset patch # User dpochepk # Date 1470750467 -10800 # Node ID 492761e17d4b722d5adccbd2e878495d559f46af # Parent 194c666e75419ff5632c6cb4bbcb5ecc9d83a3da 8160299: Test8015436 doesn't check which method was executed Reviewed-by: kvn diff -r 194c666e7541 -r 492761e17d4b hotspot/test/compiler/runtime/cr8015436/Driver8015436.java --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/hotspot/test/compiler/runtime/cr8015436/Driver8015436.java Tue Aug 09 16:47:47 2016 +0300 @@ -0,0 +1,43 @@ +/* + * Copyright (c) 2016, Oracle and/or its affiliates. All rights reserved. + * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. + * + * This code is free software; you can redistribute it and/or modify it + * under the terms of the GNU General Public License version 2 only, as + * published by the Free Software Foundation. + * + * This code is distributed in the hope that it will be useful, but WITHOUT + * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or + * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License + * version 2 for more details (a copy is included in the LICENSE file that + * accompanied this code). + * + * You should have received a copy of the GNU General Public License version + * 2 along with this work; if not, write to the Free Software Foundation, + * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA. + * + * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA + * or visit www.oracle.com if you need additional information or have any + * questions. + */ + +package compiler.runtime.cr8015436; + +import jdk.test.lib.process.OutputAnalyzer; +import jdk.test.lib.process.ProcessTools; + +public class Driver8015436 { + public static void main(String args[]) { + OutputAnalyzer oa; + try { + oa = ProcessTools.executeProcess(ProcessTools.createJavaProcessBuilder( + /* add test vm options */ true, Test8015436.class.getName())); + } catch (Exception ex) { + throw new Error("TESTBUG: exception while running child process: " + ex, ex); + } + oa.shouldHaveExitValue(0); + oa.shouldContain(Test8015436.SOME_MTD_INVOKED); + oa.shouldContain(Test8015436.DEFAULT_MTD_INVOKED_DIRECTLY); + oa.shouldContain(Test8015436.DEFAULT_MTD_INVOKED_MH); + } +} diff -r 194c666e7541 -r 492761e17d4b hotspot/test/compiler/runtime/cr8015436/Test8015436.java --- a/hotspot/test/compiler/runtime/cr8015436/Test8015436.java Tue Aug 09 14:17:28 2016 +0300 +++ b/hotspot/test/compiler/runtime/cr8015436/Test8015436.java Tue Aug 09 16:47:47 2016 +0300 @@ -25,8 +25,12 @@ * @test * @bug 8015436 * @summary the IK _initial_method_idnum value must be adjusted if overpass methods are added + * @library /test/lib/share/classes / + * @modules java.base/jdk.internal.misc + * @build compiler.runtime.cr8015436.Test8015436 + * compiler.runtime.cr8015436.Driver8015436 * - * @run main compiler.runtime.cr8015436.Test8015436 + * @run driver compiler.runtime.cr8015436.Driver8015436 */ /* @@ -45,20 +49,24 @@ import java.lang.invoke.MethodType; public class Test8015436 implements InterfaceWithDefaultMethod { + public static final String SOME_MTD_INVOKED = "someMethod() invoked"; + public static final String DEFAULT_MTD_INVOKED_DIRECTLY = "defaultMethod() invoked directly"; + public static final String DEFAULT_MTD_INVOKED_MH = "defaultMethod() invoked via a MethodHandle"; + @Override public void someMethod() { - System.out.println("someMethod() invoked"); + System.out.println(SOME_MTD_INVOKED); } public static void main(String[] args) throws Throwable { Test8015436 testObj = new Test8015436(); testObj.someMethod(); - testObj.defaultMethod("invoked directly"); + testObj.defaultMethod(DEFAULT_MTD_INVOKED_DIRECTLY); MethodHandles.Lookup lookup = MethodHandles.lookup(); MethodType mt = MethodType.methodType(void.class, String.class); MethodHandle mh = lookup.findVirtual(Test8015436.class, "defaultMethod", mt); - mh.invokeExact(testObj, "invoked via a MethodHandle"); + mh.invokeExact(testObj, DEFAULT_MTD_INVOKED_MH); } } @@ -66,7 +74,7 @@ public void someMethod(); default public void defaultMethod(String str){ - System.out.println("defaultMethod() " + str); + System.out.println(str); } } /*