Path: blob/master/test/hotspot/jtreg/vmTestbase/jit/inline/inline004/inline004.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/inline004.27* VM Testbase keywords: [jit, quick]28*29* @library /vmTestbase30* /test/lib31* @run main/othervm jit.inline.inline004.inline00432*/3334package jit.inline.inline004;353637import java.io.ByteArrayOutputStream;38import java.io.IOException;3940import nsk.share.TestFailure;41import nsk.share.GoldChecker;4243class inline004_1 {44final protected static int[] inlineObj = { 1, 2 };45protected static int inlineInt = 3; /* Not final */46protected final Object MPAT_Super() {47return this;48}49}5051public class inline004 extends inline004_1 {52public static final GoldChecker goldChecker = new GoldChecker( "inline004" );5354static int pFlag = 0;55final static int ITERS=5;56private int i1 = 0;57Object obj1 = inline004_1.inlineObj;58Object obj2 = inline004_1.inlineObj;59Object obj3 = inline004_1.inlineObj;60static int[] myIters = new int[14];61static int[] errFlag = new int[14];62int intTarg1 = 0;63int intTarg2 = 0;64Object objTarg1 = null;65Object objTarg2 = null;6667private final static int MPAT_Const4_fs_0() {68return 1;69}70private final static Object MPAT_Const4_fs_1() {71return null;72}73private final static int MPAT_GetStatic4_fs_0() {74return inlineInt;75}76private final static Object MPAT_GetStatic4_fs_1() {77return inlineObj;78}79private final int MPAT_Const4_fi_0() {80return 1;81}82private final Object MPAT_Const4_fi_1() {83return null;84}85private final int MPAT_GetField4_fi_0() {86return i1;87}88private final Object MPAT_GetField4_fi_1() {89return obj1;90}91private final void MPAT_PutField4_fi_0(int ival) {92i1 = ival;93return;94}95private final void MPAT_PutField4_fi_1(Object oval) {96obj1 = oval;97return;98}99private final void MPAT_PutField4Const4_fi() {100i1 = -1;101return;102}103private final int MPAT_GetStatic4_fi_0() {104return inlineInt;105}106private final Object MPAT_GetStatic4_fi_1() {107return inlineObj;108}109private final Object MPAT_Handle_fi() {110return this;111}112113private static int MPAT_Const4_ns_0() {114return 1;115}116private static Object MPAT_Const4_ns_1() {117return null;118}119private static int MPAT_GetStatic4_ns_0() {120return inlineInt;121}122private static Object MPAT_GetStatic4_ns_1() {123return inlineObj;124}125private int MPAT_Const4_ni_0() {126return 1;127}128private Object MPAT_Const4_ni_1() {129return null;130}131private int MPAT_GetField4_ni_0() {132return i1;133}134private Object MPAT_GetField4_ni_1() {135return obj1;136}137private void MPAT_PutField4_ni_0(int ival) {138i1 = ival;139return;140}141private void MPAT_PutField4_ni_1(Object oval) {142obj1 = oval;143return;144}145private void MPAT_PutField4Const4_ni() {146i1 = -1;147return;148}149private int MPAT_GetStatic4_ni_0() {150return inlineInt;151}152private Object MPAT_GetStatic4_ni_1() {153return inlineObj;154}155private Object MPAT_Handle_ni() {156return this;157}158159private void runFinals () {160int jcount = 0;161int icount = 0;162163if (pFlag==2) inline004.goldChecker.print("MPAT_Const4_fs_0");164try {165for (jcount=0; jcount<ITERS; jcount++) {166intTarg1 = MPAT_Const4_fs_0();167intTarg2 = MPAT_Const4_ns_0();168if (intTarg1 != intTarg2) errFlag[icount]++;169}170} catch (Exception e) {171if (pFlag==2) inline004.goldChecker.print(": iteration="+(jcount+1)+": "+e);172} finally {173myIters[icount] = jcount;174if (jcount != ITERS) errFlag[icount]++;175if (pFlag==2) inline004.goldChecker.println();176}177icount++;178179if (pFlag==2) inline004.goldChecker.print("MPAT_Const4_fs_1");180try {181for (jcount=0; jcount<ITERS; jcount++) {182objTarg2 = MPAT_Const4_fs_1();183objTarg1 = MPAT_Const4_ns_1();184if (objTarg2 != objTarg1) errFlag[icount]++;185}186} catch (Exception e) {187if (pFlag==2) inline004.goldChecker.print(": iteration="+(jcount+1)+": "+e);188} finally {189myIters[icount] = jcount;190if (jcount != ITERS) errFlag[icount]++;191if (pFlag==2) inline004.goldChecker.println();192}193icount++;194195196if (pFlag==2) inline004.goldChecker.print("MPAT_GetStatic4_fs_0");197try {198for (jcount=0; jcount<ITERS; jcount++) {199intTarg2 = MPAT_GetStatic4_fs_0();200intTarg1 = MPAT_GetStatic4_ns_0();201if (intTarg1 != intTarg2) errFlag[icount]++;202}203} catch (Exception e) {204if (pFlag==2) inline004.goldChecker.print(": iteration="+(jcount+1)+": "+e);205} finally {206myIters[icount] = jcount;207if (jcount != ITERS) errFlag[icount]++;208if (pFlag==2) inline004.goldChecker.println();209}210icount++;211212213if (pFlag==2) inline004.goldChecker.print("MPAT_GetStatic4_fs_1");214try {215for (jcount=0; jcount<ITERS; jcount++) {216objTarg2 = MPAT_GetStatic4_fs_1();217objTarg1 = MPAT_GetStatic4_ns_1();218if (objTarg1 != objTarg2) errFlag[icount]++;219}220} catch (Exception e) {221if (pFlag==2) inline004.goldChecker.print(": iteration="+(jcount+1)+": "+e);222} finally {223myIters[icount] = jcount;224if (jcount != ITERS) errFlag[icount]++;225if (pFlag==2) inline004.goldChecker.println();226}227icount++;228229230/* Check inlining of instance methods */231if (pFlag==2) inline004.goldChecker.print("MPAT_Const4_fi_0");232try {233for (jcount=0; jcount<ITERS; jcount++) {234intTarg1 = MPAT_Const4_fi_0();235intTarg2 = MPAT_Const4_ni_0();236if (intTarg1 != intTarg2) errFlag[icount]++;237}238} catch (Exception e) {239if (pFlag==2) inline004.goldChecker.print(": iteration="+(jcount+1)+": "+e);240} finally {241myIters[icount] = jcount;242if (jcount != ITERS) errFlag[icount]++;243if (pFlag==2) inline004.goldChecker.println();244}245icount++;246247if (pFlag==2) inline004.goldChecker.print("MPAT_Const4_fi_1");248try {249for (jcount=0; jcount<ITERS; jcount++) {250objTarg1 = MPAT_Const4_fi_1();251objTarg2 = MPAT_Const4_ni_1();252if (objTarg1 != objTarg2) errFlag[icount]++;253}254} catch (Exception e) {255if (pFlag==2) inline004.goldChecker.print(": iteration="+(jcount+1)+": "+e);256} finally {257myIters[icount] = jcount;258if (jcount != ITERS) errFlag[icount]++;259if (pFlag==2) inline004.goldChecker.println();260}261icount++;262263if (pFlag==2) inline004.goldChecker.print("MPAT_GetStatic4_fi_0");264try {265for (jcount=0; jcount<ITERS; jcount++) {266intTarg2 = MPAT_GetStatic4_fi_0();267intTarg1 = MPAT_GetStatic4_ni_0();268if (intTarg1 != intTarg2) errFlag[icount]++;269}270} catch (Exception e) {271if (pFlag==2) inline004.goldChecker.print(": iteration="+(jcount+1)+": "+e);272} finally {273myIters[icount] = jcount;274if (jcount != ITERS) errFlag[icount]++;275if (pFlag==2) inline004.goldChecker.println();276}277if (pFlag==2) inline004.goldChecker.print("MPAT_GetStatic4_fi_1");278try {279for (jcount=0; jcount<ITERS; jcount++) {280objTarg2 = MPAT_GetStatic4_fi_1();281objTarg1 = MPAT_GetStatic4_ni_1();282if (objTarg1 != objTarg2) errFlag[icount]++;283}284} catch (Exception e) {285if (pFlag==2) inline004.goldChecker.print(": iteration="+(jcount+1)+": "+e);286} finally {287myIters[icount] = jcount;288if (jcount != ITERS) errFlag[icount]++;289if (pFlag==2) inline004.goldChecker.println();290}291icount++;292293if (pFlag==2) inline004.goldChecker.print("MPAT_GetField4_fi_0");294try {295for (jcount=0; jcount<ITERS; jcount++) {296intTarg1 = MPAT_GetField4_fi_0();297intTarg2 = MPAT_GetField4_ni_0();298if (intTarg1 != intTarg2) errFlag[icount]++;299}300} catch (Exception e) {301if (pFlag==2) inline004.goldChecker.print(": iteration="+(jcount+1)+": "+e);302} finally {303myIters[icount] = jcount;304if (jcount != ITERS) errFlag[icount]++;305if (pFlag==2) inline004.goldChecker.println();306}307icount++;308309if (pFlag==2) inline004.goldChecker.print("MPAT_GetField4_fi_1");310try {311for (jcount=0; jcount<ITERS; jcount++) {312objTarg2 = MPAT_GetField4_fi_1();313objTarg1 = MPAT_GetField4_ni_1();314if (objTarg1 != objTarg2) errFlag[icount]++;315}316} catch (Exception e) {317if (pFlag==2) inline004.goldChecker.print(": iteration="+(jcount+1)+": "+e);318} finally {319myIters[icount] = jcount;320if (jcount != ITERS) errFlag[icount]++;321if (pFlag==2) inline004.goldChecker.println();322}323icount++;324325if (pFlag==2) inline004.goldChecker.print("MPAT_PutField4_fi_0");326try {327for (jcount=0; jcount<ITERS; jcount++) {328MPAT_PutField4_fi_0(10);329intTarg1 = MPAT_GetField4_ni_0();330if (intTarg1 != 10) errFlag[icount]++;331}332} catch (Exception e) {333if (pFlag==2) inline004.goldChecker.print(": iteration="+(jcount+1)+": "+e);334} finally {335myIters[icount] = jcount;336if (jcount != ITERS) errFlag[icount]++;337if (pFlag==2) inline004.goldChecker.println();338}339icount++;340341if (pFlag==2) inline004.goldChecker.print("MPAT_PutField4_fi_1");342try {343for (jcount=0; jcount<ITERS; jcount++) {344MPAT_PutField4_fi_1("String1");345objTarg1 = MPAT_GetField4_fi_1();346if (objTarg1 != "String1") errFlag[icount]++;347}348} catch (Exception e) {349if (pFlag==2) inline004.goldChecker.print(": iteration="+(jcount+1)+": "+e);350} finally {351myIters[icount] = jcount;352if (jcount != ITERS) errFlag[icount]++;353if (pFlag==2) inline004.goldChecker.println();354}355icount++;356357if (pFlag==2) inline004.goldChecker.print("MPAT_PutField4Const4_fi");358try {359for (jcount=0; jcount<ITERS; jcount++) {360MPAT_PutField4Const4_fi();361intTarg2 = MPAT_GetField4_ni_0();362if (intTarg2 != -1) errFlag[icount]++;363}364} catch (Exception e) {365if (pFlag==2) inline004.goldChecker.print(": iteration="+(jcount+1)+": "+e);366} finally {367myIters[icount] = jcount;368if (pFlag==2) inline004.goldChecker.println();369}370icount++;371372if (pFlag==2) inline004.goldChecker.print("MPAT_Handle_fi");373try {374for (jcount=0; jcount<ITERS; jcount++) {375objTarg1 = MPAT_Handle_fi();376objTarg2 = MPAT_Handle_ni();377}378} catch (Exception e) {379if (pFlag==2) inline004.goldChecker.print(": iteration="+(jcount+1)+": "+e);380} finally {381myIters[icount] = jcount;382if (jcount != ITERS) errFlag[icount]++;383if (pFlag==2) inline004.goldChecker.println();384}385icount++;386}387388389public static int result() {390int ierr = 0;391String state = null;392ByteArrayOutputStream baos = new ByteArrayOutputStream(80);393byte[] ba = new byte[80];394String s = null;395396String[] label = new String[14];397label[0] = new String("Const4 class method (int) ");398label[1] = new String("Const4 class method (ref) ");399label[2] = new String("GetStatic4 class method (int) ");400label[3] = new String("GetStatic4 class method (ref) ");401label[4] = new String("Const4 instance method (int) ");402label[5] = new String("Const4 instance method (ref) ");403label[6] = new String("GetStatic4 instance method (int)");404label[7] = new String("GetStatic4 instance method (ref)");405label[8] = new String("GetField4 instance method (int) ");406label[9] = new String("GetField4 instance method (ref) ");407label[10] = new String("PutField4 instance method (int) ");408label[11] = new String("PutField4 instance method (ref) ");409label[12] = new String("PutField4Const4 instance method ");410label[13] = new String("Handle instance method ");411// Report headers412baos.reset();413try {414for (int i=0; i<ba.length; i++) ba[i]=(byte)' ';415s = "Pattern";416for (int i=0; i<s.length(); i++)417ba[i]=(byte)s.charAt(i);418baos.write(ba,0,32);419}420catch (IndexOutOfBoundsException e){421}422try {423for (int i=0; i<ba.length; i++) ba[i]=(byte)' ';424baos.write(ba,0,3);425s = "Errors";426for (int i=0; i<s.length(); i++)427ba[i]=(byte)s.charAt(i);428baos.write(ba,0,6);429}430catch (IndexOutOfBoundsException e){431}432try {433for (int i=0; i<ba.length; i++) ba[i]=(byte)' ';434baos.write(ba,0,3);435s = "Iterations";436for (int i=0; i<s.length(); i++)437ba[i]=(byte)s.charAt(i);438baos.write(ba,0,10);439}440catch (IndexOutOfBoundsException e){441}442try {443for (int i=0; i<ba.length; i++) ba[i]=(byte)' ';444baos.write(ba,0,3);445s = "State";446for (int i=0; i<s.length(); i++)447ba[i]=(byte)s.charAt(i);448baos.write(ba,0,5);449}450catch (IndexOutOfBoundsException e){451}452inline004.goldChecker.print(baos.toString());453inline004.goldChecker.println();454455// Report header underlining456baos.reset();457try {458for (int i=0; i<ba.length; i++) ba[i]=(byte)' ';459s = "Pattern";460for (int i=0; i<s.length(); i++)461ba[i]=(byte)'=';462baos.write(ba,0,32);463}464catch (IndexOutOfBoundsException e){465}466try {467for (int i=0; i<ba.length; i++) ba[i]=(byte)' ';468baos.write(ba,0,3);469s = "Errors";470for (int i=0; i<s.length(); i++)471ba[i]=(byte)'=';472baos.write(ba,0,6);473}474catch (IndexOutOfBoundsException e){475}476try {477for (int i=0; i<ba.length; i++) ba[i]=(byte)' ';478baos.write(ba,0,3);479s = "Iterations";480for (int i=0; i<s.length(); i++)481ba[i]=(byte)'=';482baos.write(ba,0,10);483}484catch (IndexOutOfBoundsException e){485}486try {487for (int i=0; i<ba.length; i++) ba[i]=(byte)' ';488baos.write(ba,0,3);489s = "State";490for (int i=0; i<s.length(); i++)491ba[i]=(byte)'=';492baos.write(ba,0,5);493}494catch (IndexOutOfBoundsException e){495}496inline004.goldChecker.print(baos.toString());497inline004.goldChecker.println();498499for (int icount=0; icount<14; icount++) {500if (myIters[icount] == ITERS && errFlag[icount] == 0)501state="PASS";502else {503ierr++;504state="FAIL";505}506baos.reset();507try {508for (int i=0; i<ba.length; i++) ba[i]=(byte)' ';509for (int i=0; i<label[icount].length(); i++)510ba[i]=(byte)label[icount].charAt(i);511baos.write(ba,0,32);512}513catch (IndexOutOfBoundsException e){514inline004.goldChecker.println("0: "+e);515}516try {517for (int i=0; i<ba.length; i++) ba[i]=(byte)' ';518baos.write(ba,0,3);519s = Integer.toString(errFlag[icount]);520for (int i=0; i<s.length(); i++)521ba[i]=(byte)s.charAt(i);522baos.write(ba,0,6);523}524catch (IndexOutOfBoundsException e){525inline004.goldChecker.println("1: "+e);526}527try {528for (int i=0; i<ba.length; i++) ba[i]=(byte)' ';529baos.write(ba,0,3);530s = Integer.toString(myIters[icount]);531for (int i=0; i<s.length(); i++)532ba[i]=(byte)s.charAt(i);533baos.write(ba,0,10);534}535catch (IndexOutOfBoundsException e){536inline004.goldChecker.println("1: "+e);537}538try {539for (int i=0; i<ba.length; i++) ba[i]=(byte)' ';540baos.write(ba,0,3);541for (int i=0; i<state.length(); i++)542ba[i]=(byte)state.charAt(i);543baos.write(ba,0,5);544}545catch (IndexOutOfBoundsException e){546inline004.goldChecker.println("3: "+e);547}548inline004.goldChecker.print(baos.toString());549inline004.goldChecker.println();550}551return ierr;552}553554public static void main( String args[] ) {555int ierr;556inline004 myInline_n = new inline004();557inline004 myInline_f = new inline004();558559if (args.length > 0 && args[0].equals("-help")) {560inline004.goldChecker.println("usage: java inline004 [-print | -report]");561inline004.goldChecker.check();562return;563}564if (args.length > 0 && args[0].equals("-print"))565pFlag = 2;566if (args.length > 0 && args[0].equals("-report"))567pFlag = 1;568for (int ii=0; ii<14; ii++) myIters[ii]=ITERS;569if (pFlag==2) inline004.goldChecker.println("inline004");570571/* Give the JIT an initial look at all the methods */572myInline_f.runFinals();573ierr = inline004.result();574if (ierr == 0) {575inline004.goldChecker.println("PASSED.");576}577else {578inline004.goldChecker.println("FAILED. (ierr = " + ierr + ")");579}580inline004.goldChecker.check();581}582}583584585