--- old/test/hotspot/jtreg/compiler/codecache/dtrace/SegmentedCodeCacheDtraceTestWorker.java 2020-05-01 02:31:23.694346598 -0700 +++ /dev/null 2020-03-09 18:57:19.455001459 -0700 @@ -1,116 +0,0 @@ -/* - * Copyright (c) 2014, 2015, 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.codecache.dtrace; - -import jdk.test.lib.Utils; -import sun.hotspot.WhiteBox; - -import java.lang.reflect.Executable; -import java.util.ArrayList; -import java.util.Arrays; -import java.util.Collections; -import java.util.List; - -public class SegmentedCodeCacheDtraceTestWorker { - - private static final String METHOD1_NAME = "foo"; - private static final String METHOD2_NAME = "bar"; - private static final String METHOD3_NAME = "baz"; - public static final List TESTED_METHODS_LIST; - private final WhiteBox wb; - private final int compLevels[]; - - static { - List methods = new ArrayList<>(); - try { - // method order is important. Need to place methods in call order, - // to be able to verify results later - methods.add(SegmentedCodeCacheDtraceTestWorker.class.getMethod(METHOD1_NAME)); - methods.add(SegmentedCodeCacheDtraceTestWorker.class.getMethod(METHOD2_NAME)); - methods.add(SegmentedCodeCacheDtraceTestWorker.class.getMethod(METHOD3_NAME)); - } catch (NoSuchMethodException e) { - throw new Error("TESTBUG: no expected method found", e); - } - TESTED_METHODS_LIST = Collections.unmodifiableList(methods); - } - - protected static final boolean BACKGROUND_COMPILATION - = WhiteBox.getWhiteBox().getBooleanVMFlag("BackgroundCompilation"); - - public static void main(String[] args) { - if (args.length != 2 * TESTED_METHODS_LIST.size()) { - throw new Error("Usage: java " - + " " - + " "); - } else { - int compLevels[] = new int[TESTED_METHODS_LIST.size()]; - boolean inlines[] = new boolean[TESTED_METHODS_LIST.size()]; - for (int i = 0; i < TESTED_METHODS_LIST.size(); i++) { - compLevels[i] = Integer.parseInt(args[2 * i]); - inlines[i] = Boolean.parseBoolean(args[2 * i + 1]); - } - new SegmentedCodeCacheDtraceTestWorker(compLevels, inlines).test(); - } - } - - public SegmentedCodeCacheDtraceTestWorker(int compLevels[], boolean inlines[]) { - wb = WhiteBox.getWhiteBox(); - this.compLevels = Arrays.copyOf(compLevels, compLevels.length); - for (int i = 0; i < compLevels.length; i++) { - if (inlines[i]) { - wb.testSetForceInlineMethod(TESTED_METHODS_LIST.get(i), true); - } else { - wb.testSetDontInlineMethod(TESTED_METHODS_LIST.get(i), true); - } - } - } - - private void waitForCompilation(Executable executable, int compLevel) { - if (compLevel > 0) { - Utils.waitForCondition(() -> wb.isMethodCompiled(executable)); - } - } - - protected void test() { - for (int i = 0; i < TESTED_METHODS_LIST.size(); i++) { - Executable method = TESTED_METHODS_LIST.get(i); - int compLevel = compLevels[i]; - wb.enqueueMethodForCompilation(method, compLevel); - waitForCompilation(method, compLevel); - } - foo(); - } - - public static void foo() { - bar(); - } - - public static void bar() { - baz(); - } - - public static void baz() { - System.out.println("Reached baz method"); - } -}