/* * Copyright (c) 2008, 2018, 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. */ /* * @test * * @summary converted from VM Testbase jit/inline/inline003. * VM Testbase keywords: [jit, quick] * * @library /vmTestbase * /test/lib * @run driver jdk.test.lib.FileInstaller . . * @build jit.inline.inline003.inline003 * @run driver ExecDriver --java jit.inline.inline003.inline003 */ package jit.inline.inline003; import java.io.ByteArrayOutputStream; import java.io.IOException; import nsk.share.TestFailure; import nsk.share.GoldChecker; class inline003_1 { final protected static int[] inlineClassObj1 = { 1, 2 }; protected static int[] inlineClassObj2 = { 3, 4}; final protected static int[] trash = { 10, 11}; } class inline003 extends inline003_1 { public static final GoldChecker goldChecker = new GoldChecker( "inline003" ); final private static int ITERS=4; private static int pFlag = 0; private static int[] myIters = new int[15]; final private static int[] inlineClassObj3 = { 4, 5 }; private static int[] inlineClassObj4 = { 5, 6 }; final private static int[] inlineObj5 = { 6, 7 }; final private static int[] inlineObj6 = { 7, 8 }; final private static int[] inlineObj7 = { 8, 9 }; final private static int[] inlineObj8 = { 9, 10 }; private Object inlineInstanceObj1 = inline003.inlineObj5; private Object inlineInstanceObj2 = inline003.inlineObj6; private Object inlineInstanceObj3 = inline003.inlineObj7; private Object inlineInstanceObj4 = inline003.inlineObj8; private final static Object MPAT_Const4_fs00() { return null; } private final static Object MPAT_GetStatic4_fsc1() { return inlineClassObj1; } private final static Object MPAT_GetStatic4_fsc2() { return inlineClassObj2; } private final static Object MPAT_GetStatic4_fsc3() { return inlineClassObj3; } private final static Object MPAT_GetStatic4_fsc4() { return inlineClassObj4; } private final Object MPAT_GetStatic4_fnc1() { return inlineClassObj1; } private final Object MPAT_GetStatic4_fnc2() { return inlineClassObj2; } private final Object MPAT_GetStatic4_fnc3() { return inlineClassObj3; } private final Object MPAT_GetStatic4_fnc4() { return inlineClassObj4; } private final Object MPAT_Const4_fn00() { return null; } private final Object MPAT_GetField4_fni1() { return inlineInstanceObj1; } private final Object MPAT_GetField4_fni2() { return inlineInstanceObj2; } private final Object MPAT_GetField4_fni3() { return inlineInstanceObj3; } private final Object MPAT_GetField4_fni4() { return inlineInstanceObj4; } private final Object MPAT_Handle_fi() { return this; } private void runFinals () { int jcount=0; Object locObj = null; if (pFlag==2) inline003.goldChecker.print("MPAT_Const4_fs00"); try { jcount = 0; for (jcount=0; jcount<ITERS; jcount++) { locObj = trash; locObj = MPAT_Const4_fs00(); if (locObj != null) break; } } catch (Exception e) { if (pFlag==2) inline003.goldChecker.print(": iteration="+(jcount+1)+": "+e); } finally { myIters[0] = jcount; if (pFlag==2) inline003.goldChecker.println(); } if (pFlag==2) inline003.goldChecker.print("MPAT_GetStatic4_fsc1"); try { jcount = 0; for (jcount=0; jcount<ITERS; jcount++) { locObj = trash; locObj = MPAT_GetStatic4_fsc1(); if (locObj != inlineClassObj1) break; } } catch (Exception e) { if (pFlag==2) inline003.goldChecker.print(": iteration="+(jcount+1)+": "+e); } finally { myIters[1] = jcount; if (pFlag==2) inline003.goldChecker.println(); } if (pFlag==2) inline003.goldChecker.print("MPAT_GetStatic4_fsc2"); try { jcount = 0; for (jcount=0; jcount<ITERS; jcount++) { locObj = trash; locObj = MPAT_GetStatic4_fsc2(); if (locObj != inlineClassObj2) break; } } catch (Exception e) { if (pFlag==2) inline003.goldChecker.print(": iteration="+(jcount+1)+": "+e); } finally { myIters[2] = jcount; if (pFlag==2) inline003.goldChecker.println(); } if (pFlag==2) inline003.goldChecker.print("MPAT_GetStatic4_fsc3"); try { jcount = 0; for (jcount=0; jcount<ITERS; jcount++) { locObj = trash; locObj = MPAT_GetStatic4_fsc3(); if (locObj != inlineClassObj3) break; } } catch (Exception e) { if (pFlag==2) inline003.goldChecker.print(": iteration="+(jcount+1)+": "+e); } finally { myIters[3] = jcount; if (pFlag==2) inline003.goldChecker.println(); } if (pFlag==2) inline003.goldChecker.print("MPAT_GetStatic4_fsc4"); try { jcount = 0; for (jcount=0; jcount<ITERS; jcount++) { locObj = trash; locObj = MPAT_GetStatic4_fsc4(); if (locObj != inlineClassObj4) break; } } catch (Exception e) { if (pFlag==2) inline003.goldChecker.print(": iteration="+(jcount+1)+": "+e); } finally { myIters[4] = jcount; if (pFlag==2) inline003.goldChecker.println(); } if (pFlag==2) inline003.goldChecker.print("MPAT_GetStatic4_fnc1"); try { jcount = 0; for (jcount=0; jcount<ITERS; jcount++) { locObj = trash; locObj = MPAT_GetStatic4_fnc1(); if (locObj != inlineClassObj1) break; } } catch (Exception e) { if (pFlag==2) inline003.goldChecker.print(": iteration="+(jcount+1)+": "+e); } finally { myIters[5] = jcount; if (pFlag==2) inline003.goldChecker.println(); } if (pFlag==2) inline003.goldChecker.print("MPAT_GetStatic4_fnc2"); try { jcount = 0; for (jcount=0; jcount<ITERS; jcount++) { locObj = trash; locObj = MPAT_GetStatic4_fnc2(); if (locObj != inlineClassObj2) break; } } catch (Exception e) { if (pFlag==2) inline003.goldChecker.print(": iteration="+(jcount+1)+": "+e); } finally { myIters[6] = jcount; if (pFlag==2) inline003.goldChecker.println(); } if (pFlag==2) inline003.goldChecker.print("MPAT_GetStatic4_fnc3"); try { jcount = 0; for (jcount=0; jcount<ITERS; jcount++) { locObj = trash; locObj = MPAT_GetStatic4_fnc3(); if (locObj != inlineClassObj3) break; } } catch (Exception e) { if (pFlag==2) inline003.goldChecker.print(": iteration="+(jcount+1)+": "+e); } finally { myIters[7] = jcount; if (pFlag==2) inline003.goldChecker.println(); } if (pFlag==2) inline003.goldChecker.print("MPAT_GetStatic4_fnc4"); try { jcount = 0; for (jcount=0; jcount<ITERS; jcount++) { locObj = trash; locObj = MPAT_GetStatic4_fnc4(); if (locObj != inlineClassObj4) break; } } catch (Exception e) { if (pFlag==2) inline003.goldChecker.print(": iteration="+(jcount+1)+": "+e); } finally { myIters[8] = jcount; if (pFlag==2) inline003.goldChecker.println(); } if (pFlag==2) inline003.goldChecker.print("MPAT_Const4_fn00"); try { jcount = 0; for (jcount=0; jcount<ITERS; jcount++) { locObj = trash; locObj = MPAT_Const4_fn00(); if (locObj != null) break; } } catch (Exception e) { if (pFlag==2) inline003.goldChecker.print(": iteration="+(jcount+1)+": "+e); } finally { myIters[9] = jcount; if (pFlag==2) inline003.goldChecker.println(); } if (pFlag==2) inline003.goldChecker.print("MPAT_GetField4_fni1"); try { jcount = 0; for (jcount=0; jcount<ITERS; jcount++) { locObj = trash; locObj = MPAT_GetField4_fni1(); if (locObj != inlineInstanceObj1) break; } } catch (Exception e) { if (pFlag==2) inline003.goldChecker.print(": iteration="+(jcount+1)+": "+e); } finally { myIters[10] = jcount; if (pFlag==2) inline003.goldChecker.println(); } if (pFlag==2) inline003.goldChecker.print("MPAT_GetField4_fni2"); try { jcount = 0; for (jcount=0; jcount<ITERS; jcount++) { locObj = trash; locObj = MPAT_GetField4_fni2(); if (locObj != inlineInstanceObj2) break; } } catch (Exception e) { if (pFlag==2) inline003.goldChecker.print(": iteration="+(jcount+1)+": "+e); } finally { myIters[11] = jcount; if (pFlag==2) inline003.goldChecker.println(); } if (pFlag==2) inline003.goldChecker.print("MPAT_GetField4_fni3"); try { jcount = 0; for (jcount=0; jcount<ITERS; jcount++) { locObj = trash; locObj = MPAT_GetField4_fni3(); if (locObj != inlineInstanceObj3) break; } } catch (Exception e) { if (pFlag==2) inline003.goldChecker.print(": iteration="+(jcount+1)+": "+e); } finally { myIters[12] = jcount; if (pFlag==2) inline003.goldChecker.println(); } if (pFlag==2) inline003.goldChecker.print("MPAT_GetField4_fni4"); try { jcount = 0; for (jcount=0; jcount<ITERS; jcount++) { locObj = trash; locObj = MPAT_GetField4_fni4(); if (locObj != inlineInstanceObj4) break; } } catch (Exception e) { if (pFlag==2) inline003.goldChecker.print(": iteration="+(jcount+1)+": "+e); } finally { myIters[13] = jcount; if (pFlag==2) inline003.goldChecker.println(); } if (pFlag==2) inline003.goldChecker.print("MPAT_Handle_fi"); try { jcount = 0; for (jcount=0; jcount<ITERS; jcount++) { locObj = trash; locObj = MPAT_Handle_fi(); if (locObj != this) break; } } catch (Exception e) { if (pFlag==2) inline003.goldChecker.print(": iteration="+(jcount+1)+": "+e); } finally { myIters[14] = jcount; if (pFlag==2) inline003.goldChecker.println(); } } public static int result() { String[] label = { "MPAT_Const4_fs00", "MPAT_GetStatic4_fsc1", "MPAT_GetStatic4_fsc2", "MPAT_GetStatic4_fsc3", "MPAT_GetStatic4_fsc4", "MPAT_GetStatic4_fnc1", "MPAT_GetStatic4_fnc2", "MPAT_GetStatic4_fnc3", "MPAT_GetStatic4_fnc4", "MPAT_Const4_fn00", "MPAT_GetField4_fni1", "MPAT_GetField4_fni2", "MPAT_GetField4_fni3", "MPAT_GetField4_fni4", "MPAT_Handle_fi" }; ByteArrayOutputStream baos = new ByteArrayOutputStream(80); byte[] ba = new byte[80]; String s = null; int ierr = 0; for (int icount=0; icount < 15; icount++) { if (pFlag >= 1) { baos.reset(); try { for (int i=0; i<ba.length; i++) ba[i]=(byte)' '; for (int i=0; i<label[icount].length(); i++) ba[i]=(byte)label[icount].charAt(i); baos.write(ba,0,27); } catch (IndexOutOfBoundsException e) { } try { for (int i=0; i<ba.length; i++) ba[i]=(byte)' '; baos.write(ba,0,3); s = Long.toString(myIters[icount]); for (int i=0; i<s.length(); i++) ba[i]=(byte)s.charAt(i); baos.write(ba,0,7); } catch (IndexOutOfBoundsException e) { } inline003.goldChecker.print(baos.toString()); inline003.goldChecker.println(); } if (myIters[icount] != ITERS) ierr=1; } return ierr; } public static void main( String args[] ) { int ierr=0; inline003 myInline_f = new inline003(); if (args.length > 0 && args[0].equals("-help")) { inline003.goldChecker.println("usage: java inline003 [-print]"); inline003.goldChecker.check(); return; } pFlag = 1; if (args.length > 0 && args[0].equals("-print")) pFlag = 2; for (int ii=0; ii<15; ii++) myIters[ii]=ITERS; if (pFlag==2) inline003.goldChecker.println("inline003"); /* Give the JIT an initial look at all the methods */ myInline_f.runFinals(); ierr = inline003.result(); if (ierr == 0) { inline003.goldChecker.println("PASSED."); } else { inline003.goldChecker.println("FAILED. (ierr = " + ierr + ")"); } inline003.goldChecker.check(); } }