8310711: [IR Framework] Remove safepoint while printing handling

Reviewed-by: thartmann, epeter
This commit is contained in:
Christian Hagedorn 2024-01-08 12:57:55 +00:00
parent 71aac7a5fb
commit 458e563cd9
6 changed files with 4 additions and 461 deletions

View File

@ -1,5 +1,5 @@
/* /*
* Copyright (c) 2023, Oracle and/or its affiliates. All rights reserved. * Copyright (c) 2023, 2024, Oracle and/or its affiliates. All rights reserved.
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
* *
* This code is free software; you can redistribute it and/or modify it * This code is free software; you can redistribute it and/or modify it
@ -29,7 +29,6 @@ import compiler.lib.ir_framework.CompilePhase;
* This class represents a single compile phase block of a {@link LoggedMethod}. * This class represents a single compile phase block of a {@link LoggedMethod}.
*/ */
class CompilePhaseBlock { class CompilePhaseBlock {
public static final String SAFEPOINT_WHILE_PRINTING_MESSAGE = "<!-- safepoint while printing -->";
/** /**
* Dummy object for a block that we do not need to parse. * Dummy object for a block that we do not need to parse.
@ -38,11 +37,6 @@ class CompilePhaseBlock {
private final CompilePhase compilePhase; private final CompilePhase compilePhase;
private final StringBuilder builder; private final StringBuilder builder;
/**
* Stores an incomplete line that was interrupted by a safepoint.
* Needs to be merged with the immediately following line.
*/
private String incompleteLine = "";
public CompilePhaseBlock(CompilePhase compilePhase) { public CompilePhaseBlock(CompilePhase compilePhase) {
this.compilePhase = compilePhase; this.compilePhase = compilePhase;
@ -92,35 +86,14 @@ class CompilePhaseBlock {
} }
public void addLine(String line) { public void addLine(String line) {
line = mergeWithIncompleteLine(line); builder.append(escapeXML(line)).append(System.lineSeparator());
if (line.endsWith(SAFEPOINT_WHILE_PRINTING_MESSAGE)) {
line = removeSafepointMessage(line);
incompleteLine = line;
} else {
appendLine(line);
}
}
private String mergeWithIncompleteLine(String line) {
if (!incompleteLine.isEmpty()) {
line = incompleteLine + line;
incompleteLine = "";
}
return line;
}
private static String removeSafepointMessage(String line) {
return line.substring(0, line.lastIndexOf(SAFEPOINT_WHILE_PRINTING_MESSAGE));
} }
public String content() { public String content() {
return builder.toString(); return builder.toString();
} }
private void appendLine(String line) {
builder.append(escapeXML(line)).append(System.lineSeparator());
}
private static String escapeXML(String line) { private static String escapeXML(String line) {
if (line.contains("&")) { if (line.contains("&")) {
line = line.replace("&lt;", "<"); line = line.replace("&lt;", "<");

View File

@ -1,5 +1,5 @@
/* /*
* Copyright (c) 2023, Oracle and/or its affiliates. All rights reserved. * Copyright (c) 2023, 2024, Oracle and/or its affiliates. All rights reserved.
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
* *
* This code is free software; you can redistribute it and/or modify it * This code is free software; you can redistribute it and/or modify it
@ -29,8 +29,6 @@ import compiler.lib.ir_framework.driver.irmatching.parser.TestMethods;
* This class holds the current state of the parsing of the hotspot_pid* file. * This class holds the current state of the parsing of the hotspot_pid* file.
*/ */
class State { class State {
private final WriterThreads writerThreads;
private WriterThread writerThread;
private final CompileQueueMessages compileQueueMessages; private final CompileQueueMessages compileQueueMessages;
private final LoggedMethods loggedMethods; private final LoggedMethods loggedMethods;
private LoggedMethod loggedMethod = LoggedMethod.DONT_CARE; private LoggedMethod loggedMethod = LoggedMethod.DONT_CARE;
@ -38,7 +36,6 @@ class State {
public State(String testClassName, TestMethods testMethods) { public State(String testClassName, TestMethods testMethods) {
this.compileQueueMessages = new CompileQueueMessages(testClassName, testMethods); this.compileQueueMessages = new CompileQueueMessages(testClassName, testMethods);
this.loggedMethods = new LoggedMethods(); this.loggedMethods = new LoggedMethods();
this.writerThreads = new WriterThreads();
} }
public LoggedMethods loggedMethods() { public LoggedMethods loggedMethods() {
@ -46,9 +43,7 @@ class State {
} }
public void update(String line) { public void update(String line) {
if (WriterThread.isWriterThreadLine(line)) { if (compileQueueMessages.isTestMethodQueuedLine(line)) {
processWriterThreadLine(line);
} else if (compileQueueMessages.isTestMethodQueuedLine(line)) {
processCompileQueueLine(line); processCompileQueueLine(line);
} else if (CompilePhaseBlock.isBlockStartLine(line)) { } else if (CompilePhaseBlock.isBlockStartLine(line)) {
processBlockStartLine(line); processBlockStartLine(line);
@ -59,15 +54,6 @@ class State {
} }
} }
private void processWriterThreadLine(String line) {
if (loggedMethod.hasActiveBlock()) {
// The current compile phase block was interrupted due to a safepoint. Save and restore later.
writerThread.saveLoggedMethod(loggedMethod);
}
writerThread = writerThreads.parse(line);
loggedMethod = writerThread.restoreLoggedMethod();
}
private void processCompileQueueLine(String line) { private void processCompileQueueLine(String line) {
String methodName = compileQueueMessages.parse(line); String methodName = compileQueueMessages.parse(line);
loggedMethods.registerMethod(methodName); loggedMethods.registerMethod(methodName);

View File

@ -1,51 +0,0 @@
/*
* Copyright (c) 2023, 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.lib.ir_framework.driver.irmatching.parser.hotspot;
/**
* This class represents a writer thread that emits log messages with LogCompilation. It saves and restores a currently
* parsed {@link LoggedMethod} if a {@link CompilePhaseBlock} was interrupted before reaching the block end tag.
*
* @see LoggedMethod
* @see CompilePhaseBlock
*/
class WriterThread {
private LoggedMethod loggedMethod = LoggedMethod.DONT_CARE;
public static boolean isWriterThreadLine(String line) {
return line.startsWith("<writer");
}
public void saveLoggedMethod(LoggedMethod loggedMethod) {
this.loggedMethod = loggedMethod;
}
public LoggedMethod restoreLoggedMethod() {
LoggedMethod restoredLoggedMethod = loggedMethod;
if (restoredLoggedMethod != LoggedMethod.DONT_CARE) {
loggedMethod = LoggedMethod.DONT_CARE;
}
return restoredLoggedMethod;
}
}

View File

@ -1,50 +0,0 @@
/*
* Copyright (c) 2023, 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.lib.ir_framework.driver.irmatching.parser.hotspot;
import compiler.lib.ir_framework.TestFramework;
import java.util.HashMap;
import java.util.Map;
import java.util.regex.Matcher;
import java.util.regex.Pattern;
/**
* This class keeps track of all {@link WriterThread} instances.
*/
class WriterThreads {
private final Map<Integer, WriterThread> mapIdToThread = new HashMap<>();
WriterThread parse(String line) {
int writerThreadId = parseWriterThreadId(line);
return mapIdToThread.computeIfAbsent(writerThreadId, c -> new WriterThread());
}
private static int parseWriterThreadId(String line) {
Pattern pattern = Pattern.compile("='(\\d+)'");
Matcher matcher = pattern.matcher(line);
TestFramework.check(matcher.find(), "should find writer thread id");
return Integer.parseInt(matcher.group(1));
}
}

View File

@ -1,152 +0,0 @@
/*
* Copyright (c) 2023, 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.testlibrary_tests.ir_framework.tests;
import compiler.lib.ir_framework.CompilePhase;
import compiler.lib.ir_framework.IR;
import compiler.lib.ir_framework.IRNode;
import compiler.lib.ir_framework.Test;
import compiler.lib.ir_framework.driver.irmatching.IRMatcher;
import compiler.lib.ir_framework.driver.irmatching.Matchable;
import compiler.lib.ir_framework.driver.irmatching.parser.TestClassParser;
import jdk.test.lib.Utils;
import java.io.IOException;
import java.nio.file.Files;
import java.nio.file.Path;
import java.nio.file.Paths;
import java.nio.file.StandardCopyOption;
/*
* @test
* @bug 8300273
* @requires vm.debug == true & vm.flagless
* @summary Test TestClassParser such that it correctly parses the hotspot_pid* files with safepoint interruption messages
* @library /test/lib /testlibrary_tests /
* @build jdk.test.whitebox.WhiteBox
* @run driver jdk.test.lib.helpers.ClassFileInstaller jdk.test.whitebox.WhiteBox
* @run junit/othervm -Xbootclasspath/a:. -DSkipWhiteBoxInstall=true -XX:+IgnoreUnrecognizedVMOptions -XX:+UnlockDiagnosticVMOptions
* -XX:+WhiteBoxAPI compiler.testlibrary_tests.ir_framework.tests.TestSafepointWhilePrinting
*/
public class TestSafepointWhilePrinting {
static int iFld;
@org.junit.Test
public void test() throws IOException {
String hotspotPidFileName = "safepoint_while_printing_hotspot_pid.log";
Path hotspotPidFilePath = Paths.get(Utils.TEST_SRC).resolve(hotspotPidFileName);
// Copy file to current workdir
Files.copy(hotspotPidFilePath, Paths.get("").resolve(hotspotPidFileName),
StandardCopyOption.REPLACE_EXISTING);
String irEncoding =
"""
##### IRMatchRulesEncoding - used by TestFramework #####
<method>,{comma separated applied @IR rule ids}
test1,1
test2,1
testSafepointInBlock,1
testQueueInBlock1,1
testQueueInBlock2,1
testDoubleInterruptOuter,1
testDoubleInterruptMiddle,1
testDoubleInterruptInner,1
testCompilePhaseBackToBackFirst,1
testCompilePhaseBackToBackLast,1
----- END -----
##### IRMatchingVMInfo - used by TestFramework #####
<key>:<value>
cpuFeatures:empty_cpu_info
MaxVectorSize:64
MaxVectorSizeIsDefault:1
LoopMaxUnroll:64
UseAVX:1
UseAVXIsDefault:1
----- END VMInfo -----
""";
TestClassParser testClassParser = new TestClassParser(TestSafepointWhilePrinting.class);
Matchable testClassMatchable = testClassParser.parse(hotspotPidFileName, irEncoding);
IRMatcher matcher = new IRMatcher(testClassMatchable);
matcher.match();
}
@Test
@IR(counts = {IRNode.CMP_UL3, "1"})
public void test1() {
iFld = 34;
}
@Test
@IR(counts = {IRNode.CMP_UL3, "1"})
public void test2() {
iFld = 34;
}
@Test
@IR(counts = {"testSafepointInBlock @ bci:-1", "1"}, phase = CompilePhase.PRINT_IDEAL)
public void testSafepointInBlock() {
iFld = 34;
}
@Test
@IR(counts = {"testQueueInBlock1 @ bci:-1", "1"}, phase = CompilePhase.PRINT_IDEAL)
public void testQueueInBlock1() {
iFld = 34;
}
@Test
@IR(counts = {"testQueueInBlock2 @ bci:-1", "1"}, phase = CompilePhase.PRINT_IDEAL)
public void testQueueInBlock2() {
iFld = 34;
}
@Test
@IR(counts = {"!jvms: TestSafepointWhilePrinting::testDoubleInterruptOuter", "1"}, phase = CompilePhase.PRINT_IDEAL)
public void testDoubleInterruptOuter() {
iFld = 34;
}
@Test
@IR(counts = {"testDoubleInterruptMiddle @ bci:-1", "1", IRNode.CMP_UL3, "1"}, phase = CompilePhase.PRINT_IDEAL)
public void testDoubleInterruptMiddle() {
iFld = 34;
}
@Test
@IR(counts = {IRNode.CON_L, "1"}, phase = CompilePhase.PRINT_IDEAL)
public void testDoubleInterruptInner() {
iFld = 34;
}
@Test
@IR(counts = {"(line 115)", "1", IRNode.CMP_UL3, "1"}, phase = {CompilePhase.AFTER_PARSING, CompilePhase.BEFORE_MATCHING})
public void testCompilePhaseBackToBackFirst() {
iFld = 34;
}
@Test
@IR(counts = {"(line 115)", "1", IRNode.CMP_UL3, "1"}, phase = {CompilePhase.AFTER_PARSING, CompilePhase.BEFORE_MATCHING})
public void testCompilePhaseBackToBackLast() {
iFld = 34;
}
}

View File

@ -1,163 +0,0 @@
<writer thread='1683653'/>
1682 967 b 3 jdk.test.lib.Asserts::assertEquals (7 bytes)
<nmethod compile_id='967' compiler='c1' level='3' entry='0x00007f29791d6440' size='912' address='0x00007f29791d6290' relocation_offset='352' insts_offset='432' stub_offset='648' scopes_data_offset='768' scopes_pcs_offset='808' dependencies_offset='904' oops_offset='752' metadata_offset='760' method='jdk.test.lib.Asserts assertEquals (Ljava/lang/Object;Ljava/lang/Object;)V' bytes='7' count='256' iicount='256' stamp='1.683'/>
<writer thread='1683665'/>
<task_queued compile_id='1013' method='compiler.testlibrary_tests.ir_framework.tests.TestSafepointWhilePrinting test2 (J)I' bytes='8' count='1000' iicount='1000' blocking='1' stamp='1.715' comment='whitebox' hot_count='1000'/>
<writer thread='1683661'/>
<task_queued compile_id='1008' method='java.util.Arrays copyOfRange ([Ljava/lang/Object;IILjava/lang/Class;)[Ljava/lang/Object;' bytes='90' count='257' iicount='257' level='3' blocking='1' stamp='1.714' comment='tiered' hot_count='256'/>
<writer thread='1683666'/>
<task_queued compile_id='1018' method='compiler.testlibrary_tests.ir_framework.tests.TestSafepointWhilePrinting test1 (J)I' bytes='8' count='1000' iicount='1000' blocking='1' stamp='1.715' comment='whitebox' hot_count='1000'/>
<writer thread='1683670'/>
<make_not_entrant thread='1683670' compile_id='995' compiler='c1' level='3' stamp='1.716'/>
1716 995 3 compiler.testlibrary_tests.ir_framework.tests.TestSafepointWhilePrinting::compareLongWithImm5 (8 bytes) made not entrant
<writer thread='1683652'/>
1716 1018 b 4 compiler.testlibrary_tests.ir_framework.tests.TestSafepointWhilePrinting::test1 (8 bytes)
<writer thread='1683665'/>
<task_queued compile_id='53' method='compiler.testlibrary_tests.ir_framework.tests.TestSafepointWhilePrinting testSafepointInBlock (J)I' bytes='8' count='1000' iicount='1000' blocking='1' stamp='1.715' comment='whitebox' hot_count='1000'/>
<writer thread='1683653'/>
1716 1008 b 3 java.util.Arrays::copyOfRange (90 bytes)
<writer thread='1683670'/>
1716 1013 b 4 compiler.testlibrary_tests.ir_framework.tests.TestSafepointWhilePrinting::test2 (8 bytes)
<writer thread='1683663'/>
<task_queued compile_id='1019' method='compiler.testlibrary_tests.ir_framework.tests.TestSafepointWhilePrinting notATest (I)I' bytes='7' count='1000' iicount='1000' blocking='1' stamp='1.716' comment='whitebox' hot_count='1000'/>
<writer thread='1683652'/>
<ideal compile_id='1018' compile_phase='print_ideal'>
AFTER: print_ideal
0 Root === 0 26 [[ 0 1 3 24 ]] inner
3 Start === 3 0 [[ 3 5 6 7 8 9 11 ]] #{0:control, 1:abIO, 2:memory, 3:rawptr:BotPTR, 4:return_address, 5:compiler/intrinsics/TestSafepointWhilePrinting:NotNull *, 6:long, 7:half}
5 Parm === 3 [[ 26 ]] Control !jvms: TestSafepointWhilePrinting::test1 @ bci:-1 (line 115)
6 Parm === 3 [[ 26 ]] I_O !jvms:<!-- safepoint while printing -->
<writer thread='1683670'/>
<ideal compile_id='1013' compile_phase='print_ideal'>
AFTER: print_ideal
0 Root === 0 26 [[ 0 1 3 24 ]] inner
3 Start === 3 0 [[ 3 5 6 7 8 9 11 ]] #{0:control, 1:abIO, 2:memory, 3:rawptr:BotPTR, 4:return_address, 5:compiler/intrinsics/TestSafepointWhilePrinting:NotNull *, 6:long, 7:half}
5 Parm === 3 [[ 26 ]] Control !jvms: TestSafepointWhilePrinting::test2 @ bci:-1 (line 109)
6 Parm === 3 [[ 26 ]] I_O !jvms: TestSafepointWhilePrinting::test2 @ bci:-1 (line 109)
7 Parm === 3 [[ 26 ]] Memory Memory: @BotPTR *+bot, idx=Bot; !jvms: TestSafepointWhilePrinting::test2 @ bci:-1 (line 109)
8 Parm === 3 [[ 26 ]] FramePtr !jvms: TestSafepointWhilePrinting::test2 @ bci:-1 (line 109)
9 Parm === 3 [[ 26 ]] ReturnAdr !jvms: TestSafepointWhilePrinting::test2 @ bci:-1 (line 109)
11 Parm === 3 [[ 25 ]] Parm1: long !jvms: TestSafepointWhilePrinting::test2 @ bci:-1 (line 109)
24 ConL === 0 [[ 25 ]] #long:42
25 CmpUL3 === _ 11 24 [[ 26 ]] !jvms: TestSafepointWhilePrinting::test2 @ bci:4 (line 109)
26 Return === 5 6 7 8 9 returns 25 [[ 0 ]]
</ideal>
<writer thread='1683652'/>
TestSafepointWhilePrinting::test1 @ bci:-1 (line 115)
7 Parm === 3 [[ 26 ]] Memory Memory: @BotPTR *+bot, idx=Bot; !jvms: TestSafepointWhilePrinting::test1 @ bci:-1 (line 115)
8 Parm === 3 [[ 26 ]] FramePtr !jvms: TestSafepointWhilePrinting::test1 @ bci:-1 (line 115)
9 Parm === 3 [[ 26 ]] ReturnAdr !jvms: TestSafepointWhilePrinting::test1 @ bci:-1 (line 115)
11 Parm === 3 [[ 25 ]] Parm1: long !jvms: TestSafepointWhilePrinting::test1 @ bci:-1 (line 115)
24 ConL === 0 [[ 25 ]] #long:172032
25 CmpUL3 === _ 11 24 [[ 26 ]] !jvms: TestSafepointWhilePrinting::test1 @ bci:4 (line 115)
26 Return === 5 6 7 8 9 returns 25 [[ 0 ]]
</ideal>
<writer thread='1875264'/>
<nmethod compile_id='1017' compiler='c2' level='4' entry='0x00007fa74cc08ea0' size='664' address='0x00007fa74cc08d10' relocation_offset='352' insts_offset='400' stub_offset='536' scopes_data_offset='576'
scopes_pcs_offset='592' dependencies_offset='656' oops_offset='560' metadata_offset='568' method='compiler.intrinsics.TestCompareUnsigned compareLongWithImm3 (J)I' bytes='8' count='1000' iicount='1000'
stamp='1.785'/>
<make_not_entrant thread='1875264' compile_id='993' compiler='c1' level='3' stamp='1.785'/>
1784 993 3 compiler.intrinsics.TestCompareUnsigned::compareLongWithImm3 (8 bytes) made not entrant
1784 1013 b 4 compiler.intrinsics.TestCompareUnsigned::compareLongWithImm1 (8 bytes)
<ideal compile_id='53' compile_phase='print_ideal'>
AFTER: print_ideal
0 Root === 0 26 [[ 0 1 3 24 ]] inner
8 Parm === 3 [[ 26 ]] FramePtr !jvms: TestSafepointWhilePrinting::testSafepointInBlock<!-- safepoint while printing -->
@ bci:-1 (line 109)
24 ConL === 0 [[ 25 ]] #long:42
26 Return === 5 6 7 8 9 returns 25 [[ 0 ]]
</ideal>
<writer thread='5165446'/>
<task_queued compile_id='54' method='compiler.testlibrary_tests.ir_framework.tests.TestSafepointWhilePrinting testQueueInBlock1 (J)I' bytes='8' count='1000' iicount='1000' blocking='1' stamp='1.715' comment='whitebox' hot_count='1000'/>
<writer thread='234'/>
<ideal compile_id='54' compile_phase='print_ideal'>
AFTER: print_ideal
0 Root === 0 26 [[ 0 1 3 24 ]] inner
8 Parm === 3 [[ 26 ]] FramePtr !jvms: TestSafepointWhilePrinting::testQueueInBlock1<!-- safepoint while printing -->
<writer thread='235'/>
<task_queued compile_id='55' method='compiler.testlibrary_tests.ir_framework.tests.TestSafepointWhilePrinting testQueueInBlock2 (J)I' bytes='8' count='1000' iicount='1000' blocking='1' stamp='1.715' comment='whitebox' hot_count='1000'/>
<writer thread='234'/>
@ bci:-1 (line 109)
24 ConL === 0 [[ 25 ]] #long:42
26 Return === 5 6 7 8 9 returns 25 [[ 0 ]]
</ideal>
<ideal compile_id='55' compile_phase='print_ideal'>
AFTER: print_ideal
0 Root === 0 26 [[ 0 1 3 24 ]] inner
8 Parm === 3 [[ 26 ]] FramePtr !jvms: TestSafepointWhilePrinting::testQueueInBlock2<!-- safepoint while printing -->
@ bci:-1 (line 109)
24 ConL === 0 [[ 25 ]] #long:42
26 Return === 5 6 7 8 9 returns 25 [[ 0 ]]
</ideal>
<writer thread='343523525'/>
<task_queued compile_id='61' method='compiler.testlibrary_tests.ir_framework.tests.TestSafepointWhilePrinting testDoubleInterruptOuter (J)I' bytes='8' count='1000' iicount='1000' blocking='1' stamp='1.715' comment='whitebox' hot_count='1000'/>
<writer thread='343523525'/>
<task_queued compile_id='62' method='compiler.testlibrary_tests.ir_framework.tests.TestSafepointWhilePrinting testDoubleInterruptMiddle (J)I' bytes='8' count='1000' iicount='1000' blocking='1' stamp='1.715' comment='whitebox' hot_count='1000'/>
<writer thread='1001'/>
<ideal compile_id='61' compile_phase='print_ideal'>
AFTER: print_ideal
0 Root === 0 26 [[ 0 1 3 24 ]] inner
3 Start === 3 0 [[ 3 5 6 7 8 9 11 ]] #{0:control, 1:abIO, 2:memory, 3:rawptr:BotPTR, 4:return_address, 5:compiler/intrinsics/TestSafepointWhilePrinting:NotNull *, 6:long, 7:half}
6 Parm === 3 [[ 26 ]] I_O !jvms:<!-- safepoint while printing -->
<writer thread='1002'/>
<ideal compile_id='62' compile_phase='print_ideal'>
AFTER: print_ideal
0 Root === 0 26 [[ 0 1 3 24 ]] inner
8 Parm === 3 [[ 26 ]] FramePtr !jvms: TestSafepointWhilePrinting::testDoubleInterruptMiddle<!-- safepoint while printing -->
@ bci:-1 (line 109)
25 Cmp<!-- safepoint while printing -->
<writer thread='9999'/>
<task_queued compile_id='63' method='compiler.testlibrary_tests.ir_framework.tests.TestSafepointWhilePrinting testDoubleInterruptInner (J)I' bytes='8' count='1000' iicount='1000' blocking='1' stamp='1.715' comment='whitebox' hot_count='1000'/>
<writer thread='1003'/>
<ideal compile_id='63' compile_phase='print_ideal'>
24 ConL === 0 [[ 25 ]] #long:42
26 Return === 5 6 7 8 9 returns 25 [[ 0 ]]
</ideal>
<writer thread='1002'/>
UL3 === _ 11 24 [[ 26 ]] !jvms: TestSafepointWhilePrinting::test2 @ bci:4 (line 109)
26 Return === 5 6 7 8 9 returns 25 [[ 0 ]]
</ideal>
<writer thread='1001'/>
TestSafepointWhilePrinting::testDoubleInterruptOuter @ bci:-1 (line 115)
7 Parm === 3 [[ 26 ]] Memory Memory: @BotPTR *+bot, idx=Bot; !jvms: TestSafepointWhilePrinting::test1 @ bci:-1 (line 115)
8 Parm === 3 [[ 26 ]] FramePtr !jvms: TestSafepointWhilePrinting::test1 @ bci:-1 (line 115)
9 Parm === 3 [[ 26 ]] ReturnAdr !jvms: TestSafepointWhilePrinting::test1 @ bci:-1 (line 115)
11 Parm === 3 [[ 25 ]] Parm1: long !jvms: TestSafepointWhilePrinting::test1 @ bci:-1 (line 115)
24 ConL === 0 [[ 25 ]] #long:172032
25 CmpUL3 === _ 11 24 [[ 26 ]] !jvms: TestSafepointWhilePrinting::test1 @ bci:4 (line 115)
26 Return === 5 6 7 8 9 returns 25 [[ 0 ]]
</ideal>
<writer thread='100000'/>
<task_queued compile_id='72' method='compiler.testlibrary_tests.ir_framework.tests.TestSafepointWhilePrinting testCompilePhaseBackToBackFirst (J)I' bytes='8' count='1000' iicount='1000' blocking='1' stamp='1.715' comment='whitebox' hot_count='1000'/>
<writer thread='72'/>
<ideal compile_id='72' compile_phase='AFTER_PARSING'>
24 ConL === 0 [[ 25 ]] #long:172032
25 CmpUL<!-- safepoint while printing -->
<writer thread='71'/>
<task_queued compile_id='71' method='compiler.testlibrary_tests.ir_framework.tests.TestSafepointWhilePrinting testCompilePhaseBackToBackLast (J)I' bytes='8' count='1000' iicount='1000' blocking='1' stamp='1.715' comment='whitebox' hot_count='1000'/>
<ideal compile_id='71' compile_phase='AFTER_PARSING'>
24 ConL === 0 [[ 25 ]] #long:172032
25 CmpUL3 === _ 11 24 [[ 26 ]] !jvms: TestSafepointWhilePrinting::test1 @ bci:4 (line 115)
</ideal>
<ideal compile_id='71' compile_phase='BEFORE_MATCHING'>
24 ConL === 0 [[ 25 ]] #long:172032
25 CmpU<!-- safepoint while printing -->
<writer thread='72'/>
3 === _ 11 24 [[ 26 ]] !jvms: TestSafepointWhilePrinting::test1 @ bci:4 (<!-- safepoint while printing -->
<writer thread='71'/>
L3 === _ 11 24 [[ 26 ]] !jvms: TestSafepointWhilePrinting::test1 @ bci:4 (line <!-- safepoint while printing -->
<writer thread='72'/>
line 115)
</ideal>
<writer thread='9999'/>
<task_queued compile_id='3333' method='compiler.testlibrary_tests.ir_framework.tests.TestSafepointWhilePrinting asdf (J)I' bytes='8' count='1000' iicount='1000' blocking='1' stamp='1.715' comment='whitebox' hot_count='1000'/>
<writer thread='72'/>
<ideal compile_id='72' compile_phase='BEFORE_MATCHING'>
24 ConL === 0 [[ 25 ]] #long:172032
25 CmpU<!-- safepoint while printing -->
<writer thread='71'/>
115)
</ideal>
<writer thread='72'/>
L3 === _ 11 24 [[ 26 ]] !jvms: TestSafepointWhilePrinting::test1 @ bci:4 (line 115)
</ideal>