提交 c9c6749f 编写于 作者: D dbuck

8022865: [TESTBUG] Compressed Oops testing needs to be revised

Summary: Rewrote compressed oops tests
Reviewed-by: kvn, coleenp, mseledtsov
上级 3279e351
...@@ -847,12 +847,6 @@ jint Universe::initialize_heap() { ...@@ -847,12 +847,6 @@ jint Universe::initialize_heap() {
// See needs_explicit_null_check. // See needs_explicit_null_check.
// Only set the heap base for compressed oops because it indicates // Only set the heap base for compressed oops because it indicates
// compressed oops for pstack code. // compressed oops for pstack code.
bool verbose = PrintCompressedOopsMode || (PrintMiscellaneous && Verbose);
if (verbose) {
tty->cr();
tty->print("heap address: " PTR_FORMAT ", size: " SIZE_FORMAT " MB",
Universe::heap()->base(), Universe::heap()->reserved_region().byte_size()/M);
}
if (((uint64_t)Universe::heap()->reserved_region().end() > OopEncodingHeapMax)) { if (((uint64_t)Universe::heap()->reserved_region().end() > OopEncodingHeapMax)) {
// Can't reserve heap below 32Gb. // Can't reserve heap below 32Gb.
// keep the Universe::narrow_oop_base() set in Universe::reserve_heap() // keep the Universe::narrow_oop_base() set in Universe::reserve_heap()
...@@ -862,16 +856,8 @@ jint Universe::initialize_heap() { ...@@ -862,16 +856,8 @@ jint Universe::initialize_heap() {
// are decoded so that NULL is preserved, so this page will not be accessed. // are decoded so that NULL is preserved, so this page will not be accessed.
Universe::set_narrow_oop_use_implicit_null_checks(false); Universe::set_narrow_oop_use_implicit_null_checks(false);
#endif #endif
if (verbose) {
tty->print(", %s: "PTR_FORMAT,
narrow_oop_mode_to_string(HeapBasedNarrowOop),
Universe::narrow_oop_base());
}
} else { } else {
Universe::set_narrow_oop_base(0); Universe::set_narrow_oop_base(0);
if (verbose) {
tty->print(", %s", narrow_oop_mode_to_string(ZeroBasedNarrowOop));
}
#ifdef _WIN64 #ifdef _WIN64
if (!Universe::narrow_oop_use_implicit_null_checks()) { if (!Universe::narrow_oop_use_implicit_null_checks()) {
// Don't need guard page for implicit checks in indexed addressing // Don't need guard page for implicit checks in indexed addressing
...@@ -884,17 +870,14 @@ jint Universe::initialize_heap() { ...@@ -884,17 +870,14 @@ jint Universe::initialize_heap() {
Universe::set_narrow_oop_shift(LogMinObjAlignmentInBytes); Universe::set_narrow_oop_shift(LogMinObjAlignmentInBytes);
} else { } else {
Universe::set_narrow_oop_shift(0); Universe::set_narrow_oop_shift(0);
if (verbose) {
tty->print(", %s", narrow_oop_mode_to_string(UnscaledNarrowOop));
}
} }
} }
if (verbose) {
tty->cr();
tty->cr();
}
Universe::set_narrow_ptrs_base(Universe::narrow_oop_base()); Universe::set_narrow_ptrs_base(Universe::narrow_oop_base());
if (PrintCompressedOopsMode || (PrintMiscellaneous && Verbose)) {
Universe::print_compressed_oops_mode();
}
} }
// Universe::narrow_oop_base() is one page below the heap. // Universe::narrow_oop_base() is one page below the heap.
assert((intptr_t)Universe::narrow_oop_base() <= (intptr_t)(Universe::heap()->base() - assert((intptr_t)Universe::narrow_oop_base() <= (intptr_t)(Universe::heap()->base() -
...@@ -915,6 +898,24 @@ jint Universe::initialize_heap() { ...@@ -915,6 +898,24 @@ jint Universe::initialize_heap() {
return JNI_OK; return JNI_OK;
} }
void Universe::print_compressed_oops_mode() {
tty->cr();
tty->print("heap address: " PTR_FORMAT ", size: " SIZE_FORMAT " MB",
Universe::heap()->base(), Universe::heap()->reserved_region().byte_size()/M);
tty->print(", Compressed Oops mode: %s", narrow_oop_mode_to_string(narrow_oop_mode()));
if (Universe::narrow_oop_base() != 0) {
tty->print(":" PTR_FORMAT, Universe::narrow_oop_base());
}
if (Universe::narrow_oop_shift() != 0) {
tty->print(", Oop shift amount: %d", Universe::narrow_oop_shift());
}
tty->cr();
tty->cr();
}
// Reserve the Java heap, which is now the same for all GCs. // Reserve the Java heap, which is now the same for all GCs.
ReservedSpace Universe::reserve_heap(size_t heap_size, size_t alignment) { ReservedSpace Universe::reserve_heap(size_t heap_size, size_t alignment) {
...@@ -984,11 +985,11 @@ void Universe::update_heap_info_at_gc() { ...@@ -984,11 +985,11 @@ void Universe::update_heap_info_at_gc() {
const char* Universe::narrow_oop_mode_to_string(Universe::NARROW_OOP_MODE mode) { const char* Universe::narrow_oop_mode_to_string(Universe::NARROW_OOP_MODE mode) {
switch (mode) { switch (mode) {
case UnscaledNarrowOop: case UnscaledNarrowOop:
return "32-bits Oops"; return "32-bit";
case ZeroBasedNarrowOop: case ZeroBasedNarrowOop:
return "zero based Compressed Oops"; return "Zero based";
case HeapBasedNarrowOop: case HeapBasedNarrowOop:
return "Compressed Oops with base"; return "Non-zero based";
} }
ShouldNotReachHere(); ShouldNotReachHere();
......
...@@ -376,6 +376,8 @@ class Universe: AllStatic { ...@@ -376,6 +376,8 @@ class Universe: AllStatic {
static void set_narrow_ptrs_base(address a) { _narrow_ptrs_base = a; } static void set_narrow_ptrs_base(address a) { _narrow_ptrs_base = a; }
static address narrow_ptrs_base() { return _narrow_ptrs_base; } static address narrow_ptrs_base() { return _narrow_ptrs_base; }
static void print_compressed_oops_mode();
// this is set in vm_version on sparc (and then reset in universe afaict) // this is set in vm_version on sparc (and then reset in universe afaict)
static void set_narrow_oop_shift(int shift) { static void set_narrow_oop_shift(int shift) {
_narrow_oop._shift = shift; _narrow_oop._shift = shift;
......
...@@ -74,11 +74,12 @@ public final class OutputAnalyzer { ...@@ -74,11 +74,12 @@ public final class OutputAnalyzer {
* @param expectedString String that buffer should contain * @param expectedString String that buffer should contain
* @throws RuntimeException If the string was not found * @throws RuntimeException If the string was not found
*/ */
public void shouldContain(String expectedString) { public OutputAnalyzer shouldContain(String expectedString) {
if (!stdout.contains(expectedString) && !stderr.contains(expectedString)) { if (!stdout.contains(expectedString) && !stderr.contains(expectedString)) {
reportDiagnosticSummary(); reportDiagnosticSummary();
throw new RuntimeException("'" + expectedString + "' missing from stdout/stderr \n"); throw new RuntimeException("'" + expectedString + "' missing from stdout/stderr \n");
} }
return this;
} }
/** /**
...@@ -87,11 +88,12 @@ public final class OutputAnalyzer { ...@@ -87,11 +88,12 @@ public final class OutputAnalyzer {
* @param expectedString String that buffer should contain * @param expectedString String that buffer should contain
* @throws RuntimeException If the string was not found * @throws RuntimeException If the string was not found
*/ */
public void stdoutShouldContain(String expectedString) { public OutputAnalyzer stdoutShouldContain(String expectedString) {
if (!stdout.contains(expectedString)) { if (!stdout.contains(expectedString)) {
reportDiagnosticSummary(); reportDiagnosticSummary();
throw new RuntimeException("'" + expectedString + "' missing from stdout \n"); throw new RuntimeException("'" + expectedString + "' missing from stdout \n");
} }
return this;
} }
/** /**
...@@ -100,11 +102,12 @@ public final class OutputAnalyzer { ...@@ -100,11 +102,12 @@ public final class OutputAnalyzer {
* @param expectedString String that buffer should contain * @param expectedString String that buffer should contain
* @throws RuntimeException If the string was not found * @throws RuntimeException If the string was not found
*/ */
public void stderrShouldContain(String expectedString) { public OutputAnalyzer stderrShouldContain(String expectedString) {
if (!stderr.contains(expectedString)) { if (!stderr.contains(expectedString)) {
reportDiagnosticSummary(); reportDiagnosticSummary();
throw new RuntimeException("'" + expectedString + "' missing from stderr \n"); throw new RuntimeException("'" + expectedString + "' missing from stderr \n");
} }
return this;
} }
/** /**
...@@ -113,7 +116,7 @@ public final class OutputAnalyzer { ...@@ -113,7 +116,7 @@ public final class OutputAnalyzer {
* @param expectedString String that the buffer should not contain * @param expectedString String that the buffer should not contain
* @throws RuntimeException If the string was found * @throws RuntimeException If the string was found
*/ */
public void shouldNotContain(String notExpectedString) { public OutputAnalyzer shouldNotContain(String notExpectedString) {
if (stdout.contains(notExpectedString)) { if (stdout.contains(notExpectedString)) {
reportDiagnosticSummary(); reportDiagnosticSummary();
throw new RuntimeException("'" + notExpectedString + "' found in stdout \n"); throw new RuntimeException("'" + notExpectedString + "' found in stdout \n");
...@@ -122,6 +125,7 @@ public final class OutputAnalyzer { ...@@ -122,6 +125,7 @@ public final class OutputAnalyzer {
reportDiagnosticSummary(); reportDiagnosticSummary();
throw new RuntimeException("'" + notExpectedString + "' found in stderr \n"); throw new RuntimeException("'" + notExpectedString + "' found in stderr \n");
} }
return this;
} }
/** /**
...@@ -130,11 +134,12 @@ public final class OutputAnalyzer { ...@@ -130,11 +134,12 @@ public final class OutputAnalyzer {
* @param expectedString String that the buffer should not contain * @param expectedString String that the buffer should not contain
* @throws RuntimeException If the string was found * @throws RuntimeException If the string was found
*/ */
public void stdoutShouldNotContain(String notExpectedString) { public OutputAnalyzer stdoutShouldNotContain(String notExpectedString) {
if (stdout.contains(notExpectedString)) { if (stdout.contains(notExpectedString)) {
reportDiagnosticSummary(); reportDiagnosticSummary();
throw new RuntimeException("'" + notExpectedString + "' found in stdout \n"); throw new RuntimeException("'" + notExpectedString + "' found in stdout \n");
} }
return this;
} }
/** /**
...@@ -143,11 +148,12 @@ public final class OutputAnalyzer { ...@@ -143,11 +148,12 @@ public final class OutputAnalyzer {
* @param expectedString String that the buffer should not contain * @param expectedString String that the buffer should not contain
* @throws RuntimeException If the string was found * @throws RuntimeException If the string was found
*/ */
public void stderrShouldNotContain(String notExpectedString) { public OutputAnalyzer stderrShouldNotContain(String notExpectedString) {
if (stderr.contains(notExpectedString)) { if (stderr.contains(notExpectedString)) {
reportDiagnosticSummary(); reportDiagnosticSummary();
throw new RuntimeException("'" + notExpectedString + "' found in stderr \n"); throw new RuntimeException("'" + notExpectedString + "' found in stderr \n");
} }
return this;
} }
/** /**
...@@ -157,7 +163,7 @@ public final class OutputAnalyzer { ...@@ -157,7 +163,7 @@ public final class OutputAnalyzer {
* @param pattern * @param pattern
* @throws RuntimeException If the pattern was not found * @throws RuntimeException If the pattern was not found
*/ */
public void shouldMatch(String pattern) { public OutputAnalyzer shouldMatch(String pattern) {
Matcher stdoutMatcher = Pattern.compile(pattern, Pattern.MULTILINE).matcher(stdout); Matcher stdoutMatcher = Pattern.compile(pattern, Pattern.MULTILINE).matcher(stdout);
Matcher stderrMatcher = Pattern.compile(pattern, Pattern.MULTILINE).matcher(stderr); Matcher stderrMatcher = Pattern.compile(pattern, Pattern.MULTILINE).matcher(stderr);
if (!stdoutMatcher.find() && !stderrMatcher.find()) { if (!stdoutMatcher.find() && !stderrMatcher.find()) {
...@@ -165,6 +171,7 @@ public final class OutputAnalyzer { ...@@ -165,6 +171,7 @@ public final class OutputAnalyzer {
throw new RuntimeException("'" + pattern throw new RuntimeException("'" + pattern
+ "' missing from stdout/stderr \n"); + "' missing from stdout/stderr \n");
} }
return this;
} }
/** /**
...@@ -174,13 +181,14 @@ public final class OutputAnalyzer { ...@@ -174,13 +181,14 @@ public final class OutputAnalyzer {
* @param pattern * @param pattern
* @throws RuntimeException If the pattern was not found * @throws RuntimeException If the pattern was not found
*/ */
public void stdoutShouldMatch(String pattern) { public OutputAnalyzer stdoutShouldMatch(String pattern) {
Matcher matcher = Pattern.compile(pattern, Pattern.MULTILINE).matcher(stdout); Matcher matcher = Pattern.compile(pattern, Pattern.MULTILINE).matcher(stdout);
if (!matcher.find()) { if (!matcher.find()) {
reportDiagnosticSummary(); reportDiagnosticSummary();
throw new RuntimeException("'" + pattern throw new RuntimeException("'" + pattern
+ "' missing from stdout \n"); + "' missing from stdout \n");
} }
return this;
} }
/** /**
...@@ -190,13 +198,14 @@ public final class OutputAnalyzer { ...@@ -190,13 +198,14 @@ public final class OutputAnalyzer {
* @param pattern * @param pattern
* @throws RuntimeException If the pattern was not found * @throws RuntimeException If the pattern was not found
*/ */
public void stderrShouldMatch(String pattern) { public OutputAnalyzer stderrShouldMatch(String pattern) {
Matcher matcher = Pattern.compile(pattern, Pattern.MULTILINE).matcher(stderr); Matcher matcher = Pattern.compile(pattern, Pattern.MULTILINE).matcher(stderr);
if (!matcher.find()) { if (!matcher.find()) {
reportDiagnosticSummary(); reportDiagnosticSummary();
throw new RuntimeException("'" + pattern throw new RuntimeException("'" + pattern
+ "' missing from stderr \n"); + "' missing from stderr \n");
} }
return this;
} }
/** /**
...@@ -206,7 +215,7 @@ public final class OutputAnalyzer { ...@@ -206,7 +215,7 @@ public final class OutputAnalyzer {
* @param pattern * @param pattern
* @throws RuntimeException If the pattern was found * @throws RuntimeException If the pattern was found
*/ */
public void shouldNotMatch(String pattern) { public OutputAnalyzer shouldNotMatch(String pattern) {
Matcher matcher = Pattern.compile(pattern, Pattern.MULTILINE).matcher(stdout); Matcher matcher = Pattern.compile(pattern, Pattern.MULTILINE).matcher(stdout);
if (matcher.find()) { if (matcher.find()) {
reportDiagnosticSummary(); reportDiagnosticSummary();
...@@ -219,6 +228,7 @@ public final class OutputAnalyzer { ...@@ -219,6 +228,7 @@ public final class OutputAnalyzer {
throw new RuntimeException("'" + pattern throw new RuntimeException("'" + pattern
+ "' found in stderr: '" + matcher.group() + "' \n"); + "' found in stderr: '" + matcher.group() + "' \n");
} }
return this;
} }
/** /**
...@@ -228,13 +238,14 @@ public final class OutputAnalyzer { ...@@ -228,13 +238,14 @@ public final class OutputAnalyzer {
* @param pattern * @param pattern
* @throws RuntimeException If the pattern was found * @throws RuntimeException If the pattern was found
*/ */
public void stdoutShouldNotMatch(String pattern) { public OutputAnalyzer stdoutShouldNotMatch(String pattern) {
Matcher matcher = Pattern.compile(pattern, Pattern.MULTILINE).matcher(stdout); Matcher matcher = Pattern.compile(pattern, Pattern.MULTILINE).matcher(stdout);
if (matcher.find()) { if (matcher.find()) {
reportDiagnosticSummary(); reportDiagnosticSummary();
throw new RuntimeException("'" + pattern throw new RuntimeException("'" + pattern
+ "' found in stdout \n"); + "' found in stdout \n");
} }
return this;
} }
/** /**
...@@ -244,13 +255,14 @@ public final class OutputAnalyzer { ...@@ -244,13 +255,14 @@ public final class OutputAnalyzer {
* @param pattern * @param pattern
* @throws RuntimeException If the pattern was found * @throws RuntimeException If the pattern was found
*/ */
public void stderrShouldNotMatch(String pattern) { public OutputAnalyzer stderrShouldNotMatch(String pattern) {
Matcher matcher = Pattern.compile(pattern, Pattern.MULTILINE).matcher(stderr); Matcher matcher = Pattern.compile(pattern, Pattern.MULTILINE).matcher(stderr);
if (matcher.find()) { if (matcher.find()) {
reportDiagnosticSummary(); reportDiagnosticSummary();
throw new RuntimeException("'" + pattern throw new RuntimeException("'" + pattern
+ "' found in stderr \n"); + "' found in stderr \n");
} }
return this;
} }
/** /**
...@@ -290,12 +302,13 @@ public final class OutputAnalyzer { ...@@ -290,12 +302,13 @@ public final class OutputAnalyzer {
* @param expectedExitValue Expected exit value from process * @param expectedExitValue Expected exit value from process
* @throws RuntimeException If the exit value from the process did not match the expected value * @throws RuntimeException If the exit value from the process did not match the expected value
*/ */
public void shouldHaveExitValue(int expectedExitValue) { public OutputAnalyzer shouldHaveExitValue(int expectedExitValue) {
if (getExitValue() != expectedExitValue) { if (getExitValue() != expectedExitValue) {
reportDiagnosticSummary(); reportDiagnosticSummary();
throw new RuntimeException("Expected to get exit value of [" throw new RuntimeException("Expected to get exit value of ["
+ expectedExitValue + "]\n"); + expectedExitValue + "]\n");
} }
return this;
} }
......
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册