Path: blob/master/test/hotspot/jtreg/vmTestbase/jit/inline/inline003/inline003.java
40948 views
/*1* Copyright (c) 2008, 2020, Oracle and/or its affiliates. All rights reserved.2* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.3*4* This code is free software; you can redistribute it and/or modify it5* under the terms of the GNU General Public License version 2 only, as6* published by the Free Software Foundation.7*8* This code is distributed in the hope that it will be useful, but WITHOUT9* ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or10* FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License11* version 2 for more details (a copy is included in the LICENSE file that12* accompanied this code).13*14* You should have received a copy of the GNU General Public License version15* 2 along with this work; if not, write to the Free Software Foundation,16* Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.17*18* Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA19* or visit www.oracle.com if you need additional information or have any20* questions.21*/2223/*24* @test25*26* @summary converted from VM Testbase jit/inline/inline003.27* VM Testbase keywords: [jit, quick]28*29* @library /vmTestbase30* /test/lib31* @run main/othervm jit.inline.inline003.inline00332*/3334package jit.inline.inline003;353637import java.io.ByteArrayOutputStream;38import java.io.IOException;39import nsk.share.TestFailure;40import nsk.share.GoldChecker;4142class inline003_1 {43final protected static int[] inlineClassObj1 = { 1, 2 };44protected static int[] inlineClassObj2 = { 3, 4};45final protected static int[] trash = { 10, 11};46}4748public class inline003 extends inline003_1 {49public static final GoldChecker goldChecker = new GoldChecker( "inline003" );5051final private static int ITERS=4;52private static int pFlag = 0;53private static int[] myIters = new int[15];5455final private static int[] inlineClassObj3 = { 4, 5 };56private static int[] inlineClassObj4 = { 5, 6 };5758final private static int[] inlineObj5 = { 6, 7 };59final private static int[] inlineObj6 = { 7, 8 };60final private static int[] inlineObj7 = { 8, 9 };61final private static int[] inlineObj8 = { 9, 10 };6263private Object inlineInstanceObj1 = inline003.inlineObj5;64private Object inlineInstanceObj2 = inline003.inlineObj6;65private Object inlineInstanceObj3 = inline003.inlineObj7;66private Object inlineInstanceObj4 = inline003.inlineObj8;6768private final static Object MPAT_Const4_fs00() {69return null;70}71private final static Object MPAT_GetStatic4_fsc1() {72return inlineClassObj1;73}74private final static Object MPAT_GetStatic4_fsc2() {75return inlineClassObj2;76}77private final static Object MPAT_GetStatic4_fsc3() {78return inlineClassObj3;79}80private final static Object MPAT_GetStatic4_fsc4() {81return inlineClassObj4;82}83private final Object MPAT_GetStatic4_fnc1() {84return inlineClassObj1;85}86private final Object MPAT_GetStatic4_fnc2() {87return inlineClassObj2;88}89private final Object MPAT_GetStatic4_fnc3() {90return inlineClassObj3;91}92private final Object MPAT_GetStatic4_fnc4() {93return inlineClassObj4;94}9596private final Object MPAT_Const4_fn00() {97return null;98}99private final Object MPAT_GetField4_fni1() {100return inlineInstanceObj1;101}102private final Object MPAT_GetField4_fni2() {103return inlineInstanceObj2;104}105private final Object MPAT_GetField4_fni3() {106return inlineInstanceObj3;107}108private final Object MPAT_GetField4_fni4() {109return inlineInstanceObj4;110}111private final Object MPAT_Handle_fi() {112return this;113}114115116private void runFinals () {117int jcount=0;118Object locObj = null;119if (pFlag==2) inline003.goldChecker.print("MPAT_Const4_fs00");120try {121jcount = 0;122for (jcount=0; jcount<ITERS; jcount++) {123locObj = trash;124locObj = MPAT_Const4_fs00();125if (locObj != null) break;126}127} catch (Exception e) {128if (pFlag==2) inline003.goldChecker.print(": iteration="+(jcount+1)+": "+e);129} finally {130myIters[0] = jcount;131if (pFlag==2) inline003.goldChecker.println();132}133if (pFlag==2) inline003.goldChecker.print("MPAT_GetStatic4_fsc1");134try {135jcount = 0;136for (jcount=0; jcount<ITERS; jcount++) {137locObj = trash;138locObj = MPAT_GetStatic4_fsc1();139if (locObj != inlineClassObj1) break;140}141} catch (Exception e) {142if (pFlag==2) inline003.goldChecker.print(": iteration="+(jcount+1)+": "+e);143} finally {144myIters[1] = jcount;145if (pFlag==2) inline003.goldChecker.println();146}147if (pFlag==2) inline003.goldChecker.print("MPAT_GetStatic4_fsc2");148try {149jcount = 0;150for (jcount=0; jcount<ITERS; jcount++) {151locObj = trash;152locObj = MPAT_GetStatic4_fsc2();153if (locObj != inlineClassObj2) break;154}155} catch (Exception e) {156if (pFlag==2) inline003.goldChecker.print(": iteration="+(jcount+1)+": "+e);157} finally {158myIters[2] = jcount;159if (pFlag==2) inline003.goldChecker.println();160}161if (pFlag==2) inline003.goldChecker.print("MPAT_GetStatic4_fsc3");162try {163jcount = 0;164for (jcount=0; jcount<ITERS; jcount++) {165locObj = trash;166locObj = MPAT_GetStatic4_fsc3();167if (locObj != inlineClassObj3) break;168}169} catch (Exception e) {170if (pFlag==2) inline003.goldChecker.print(": iteration="+(jcount+1)+": "+e);171} finally {172myIters[3] = jcount;173if (pFlag==2) inline003.goldChecker.println();174}175if (pFlag==2) inline003.goldChecker.print("MPAT_GetStatic4_fsc4");176try {177jcount = 0;178for (jcount=0; jcount<ITERS; jcount++) {179locObj = trash;180locObj = MPAT_GetStatic4_fsc4();181if (locObj != inlineClassObj4) break;182}183} catch (Exception e) {184if (pFlag==2) inline003.goldChecker.print(": iteration="+(jcount+1)+": "+e);185} finally {186myIters[4] = jcount;187if (pFlag==2) inline003.goldChecker.println();188}189if (pFlag==2) inline003.goldChecker.print("MPAT_GetStatic4_fnc1");190try {191jcount = 0;192for (jcount=0; jcount<ITERS; jcount++) {193locObj = trash;194locObj = MPAT_GetStatic4_fnc1();195if (locObj != inlineClassObj1) break;196}197} catch (Exception e) {198if (pFlag==2) inline003.goldChecker.print(": iteration="+(jcount+1)+": "+e);199} finally {200myIters[5] = jcount;201if (pFlag==2) inline003.goldChecker.println();202}203if (pFlag==2) inline003.goldChecker.print("MPAT_GetStatic4_fnc2");204try {205jcount = 0;206for (jcount=0; jcount<ITERS; jcount++) {207locObj = trash;208locObj = MPAT_GetStatic4_fnc2();209if (locObj != inlineClassObj2) break;210}211} catch (Exception e) {212if (pFlag==2) inline003.goldChecker.print(": iteration="+(jcount+1)+": "+e);213} finally {214myIters[6] = jcount;215if (pFlag==2) inline003.goldChecker.println();216}217if (pFlag==2) inline003.goldChecker.print("MPAT_GetStatic4_fnc3");218try {219jcount = 0;220for (jcount=0; jcount<ITERS; jcount++) {221locObj = trash;222locObj = MPAT_GetStatic4_fnc3();223if (locObj != inlineClassObj3) break;224}225} catch (Exception e) {226if (pFlag==2) inline003.goldChecker.print(": iteration="+(jcount+1)+": "+e);227} finally {228myIters[7] = jcount;229if (pFlag==2) inline003.goldChecker.println();230}231if (pFlag==2) inline003.goldChecker.print("MPAT_GetStatic4_fnc4");232try {233jcount = 0;234for (jcount=0; jcount<ITERS; jcount++) {235locObj = trash;236locObj = MPAT_GetStatic4_fnc4();237if (locObj != inlineClassObj4) break;238}239} catch (Exception e) {240if (pFlag==2) inline003.goldChecker.print(": iteration="+(jcount+1)+": "+e);241} finally {242myIters[8] = jcount;243if (pFlag==2) inline003.goldChecker.println();244}245if (pFlag==2) inline003.goldChecker.print("MPAT_Const4_fn00");246try {247jcount = 0;248for (jcount=0; jcount<ITERS; jcount++) {249locObj = trash;250locObj = MPAT_Const4_fn00();251if (locObj != null) break;252}253} catch (Exception e) {254if (pFlag==2) inline003.goldChecker.print(": iteration="+(jcount+1)+": "+e);255} finally {256myIters[9] = jcount;257if (pFlag==2) inline003.goldChecker.println();258}259if (pFlag==2) inline003.goldChecker.print("MPAT_GetField4_fni1");260try {261jcount = 0;262for (jcount=0; jcount<ITERS; jcount++) {263locObj = trash;264locObj = MPAT_GetField4_fni1();265if (locObj != inlineInstanceObj1) break;266}267} catch (Exception e) {268if (pFlag==2) inline003.goldChecker.print(": iteration="+(jcount+1)+": "+e);269} finally {270myIters[10] = jcount;271if (pFlag==2) inline003.goldChecker.println();272}273if (pFlag==2) inline003.goldChecker.print("MPAT_GetField4_fni2");274try {275jcount = 0;276for (jcount=0; jcount<ITERS; jcount++) {277locObj = trash;278locObj = MPAT_GetField4_fni2();279if (locObj != inlineInstanceObj2) break;280}281} catch (Exception e) {282if (pFlag==2) inline003.goldChecker.print(": iteration="+(jcount+1)+": "+e);283} finally {284myIters[11] = jcount;285if (pFlag==2) inline003.goldChecker.println();286}287if (pFlag==2) inline003.goldChecker.print("MPAT_GetField4_fni3");288try {289jcount = 0;290for (jcount=0; jcount<ITERS; jcount++) {291locObj = trash;292locObj = MPAT_GetField4_fni3();293if (locObj != inlineInstanceObj3) break;294}295} catch (Exception e) {296if (pFlag==2) inline003.goldChecker.print(": iteration="+(jcount+1)+": "+e);297} finally {298myIters[12] = jcount;299if (pFlag==2) inline003.goldChecker.println();300}301if (pFlag==2) inline003.goldChecker.print("MPAT_GetField4_fni4");302try {303jcount = 0;304for (jcount=0; jcount<ITERS; jcount++) {305locObj = trash;306locObj = MPAT_GetField4_fni4();307if (locObj != inlineInstanceObj4) break;308}309} catch (Exception e) {310if (pFlag==2) inline003.goldChecker.print(": iteration="+(jcount+1)+": "+e);311} finally {312myIters[13] = jcount;313if (pFlag==2) inline003.goldChecker.println();314}315if (pFlag==2) inline003.goldChecker.print("MPAT_Handle_fi");316try {317jcount = 0;318for (jcount=0; jcount<ITERS; jcount++) {319locObj = trash;320locObj = MPAT_Handle_fi();321if (locObj != this) break;322}323} catch (Exception e) {324if (pFlag==2) inline003.goldChecker.print(": iteration="+(jcount+1)+": "+e);325} finally {326myIters[14] = jcount;327if (pFlag==2) inline003.goldChecker.println();328}329}330331332public static int result() {333String[] label = {334"MPAT_Const4_fs00",335"MPAT_GetStatic4_fsc1",336"MPAT_GetStatic4_fsc2",337"MPAT_GetStatic4_fsc3",338"MPAT_GetStatic4_fsc4",339"MPAT_GetStatic4_fnc1",340"MPAT_GetStatic4_fnc2",341"MPAT_GetStatic4_fnc3",342"MPAT_GetStatic4_fnc4",343"MPAT_Const4_fn00",344"MPAT_GetField4_fni1",345"MPAT_GetField4_fni2",346"MPAT_GetField4_fni3",347"MPAT_GetField4_fni4",348"MPAT_Handle_fi" };349ByteArrayOutputStream baos = new ByteArrayOutputStream(80);350byte[] ba = new byte[80];351String s = null;352int ierr = 0;353for (int icount=0; icount < 15; icount++) {354if (pFlag >= 1) {355baos.reset();356try {357for (int i=0; i<ba.length; i++) ba[i]=(byte)' ';358for (int i=0; i<label[icount].length(); i++)359ba[i]=(byte)label[icount].charAt(i);360baos.write(ba,0,27);361}362catch (IndexOutOfBoundsException e) {363}364try {365for (int i=0; i<ba.length; i++) ba[i]=(byte)' ';366baos.write(ba,0,3);367s = Long.toString(myIters[icount]);368for (int i=0; i<s.length(); i++)369ba[i]=(byte)s.charAt(i);370baos.write(ba,0,7);371}372catch (IndexOutOfBoundsException e) {373}374inline003.goldChecker.print(baos.toString());375inline003.goldChecker.println();376}377if (myIters[icount] != ITERS) ierr=1;378}379return ierr;380}381382public static void main( String args[] ) {383int ierr=0;384inline003 myInline_f = new inline003();385386387if (args.length > 0 && args[0].equals("-help")) {388inline003.goldChecker.println("usage: java inline003 [-print]");389inline003.goldChecker.check();390return;391}392pFlag = 1;393if (args.length > 0 && args[0].equals("-print"))394pFlag = 2;395for (int ii=0; ii<15; ii++) myIters[ii]=ITERS;396if (pFlag==2) inline003.goldChecker.println("inline003");397398/* Give the JIT an initial look at all the methods */399myInline_f.runFinals();400ierr = inline003.result();401if (ierr == 0) {402inline003.goldChecker.println("PASSED.");403}404else {405inline003.goldChecker.println("FAILED. (ierr = " + ierr + ")");406}407inline003.goldChecker.check();408}409}410411412