[9] RFR(XXS): 8009738: compiler/6826736/Test.java times out on big machines
Albert
albert.noll at oracle.com
Fri Jan 24 05:50:35 PST 2014
Hi,
could I get reviews for this small patch?
Bug: https://bugs.openjdk.java.net/browse/JDK-8009738
webrev: http://cr.openjdk.java.net/~anoll/8009738/webrev.00/
<http://cr.openjdk.java.net/%7Eanoll/8009728/webrev.00/>
Problem: test times out on big machines
Solution: add -Xmx256m -XX:ParallelGCThreads=4 to @run command (as
described in the bug description).
I verified that the old bug is still triggered with the added flags by
undoing the
changes (except for asserts) that where committed with
https://bugs.openjdk.java.net/browse/JDK-6826736 .
The test does not complete, since and fails with an assert:
# A fatal error has been detected by the Java Runtime Environment:
#
# Internal Error (/export/anoll/latest/src/share/vm/compiler/oopMap.cpp:438), pid=24776, tid=140280127788800
# assert(Universe::heap()->is_in_or_null(*loc)) failed: found non oop pointer
A rough performance evaluation on a 32-core linux (64-bit) system shows
that the execution time
of the test goes down to ~40 seconds. Without the suggested changes, the
execution time is around
9 minutes on the same machine.
Best,
Albert
These changes trigger the assert described above:
--- old/src/share/vm/compiler/oopMap.cpp 2014-01-24
14:46:14.370474128 +0100
+++ new/src/share/vm/compiler/oopMap.cpp 2014-01-24
14:46:14.302474129 +0100
@@ -392,14 +392,15 @@
oop *base_loc =
fr->oopmapreg_to_location(omv.content_reg(), reg_map);
oop *derived_loc = loc;
oop val = *base_loc;
- if (val == (oop)NULL || Universe::is_narrow_oop_base(val)) {
+ derived_oop_fn(base_loc, derived_loc);
+ /*if (val == (oop)NULL || Universe::is_narrow_oop_base(val)) {
// Ignore NULL oops and decoded NULL narrow oops which
// equal to Universe::narrow_oop_base when a narrow oop
// implicit null check is used in compiled code.
// The narrow_oop_base could be NULL or be the address
// of the page below heap depending on compressed oops mode.
} else
- derived_oop_fn(base_loc, derived_loc);
+ derived_oop_fn(base_loc, derived_loc);*/
}
oms.next();
} while (!oms.is_done());
@@ -414,7 +415,7 @@
oop* loc = fr->oopmapreg_to_location(omv.reg(),reg_map);
if ( loc != NULL ) {
if ( omv.type() == OopMapValue::oop_value ) {
- oop val = *loc;
+ /* oop val = *loc;
if (val == (oop)NULL || Universe::is_narrow_oop_base(val)) {
// Ignore NULL oops and decoded NULL narrow oops which
// equal to Universe::narrow_oop_base when a narrow oop
@@ -422,7 +423,7 @@
// The narrow_oop_base could be NULL or be the address
// of the page below heap depending on compressed oops mode.
continue;
- }
+ }*/
#ifdef ASSERT
if ((((uintptr_t)loc & (sizeof(*loc)-1)) != 0) ||
!Universe::heap()->is_in_or_null(*loc)) {
--- old/src/share/vm/runtime/stackValue.cpp 2014-01-24
14:46:14.374474128 +0100
+++ new/src/share/vm/runtime/stackValue.cpp 2014-01-24
14:46:14.302474129 +0100
@@ -108,7 +108,8 @@
}
#endif
case Location::oop: {
- oop val = *(oop *)value_addr;
+ Handle h(*(oop *)value_addr); // Wrap a handle around the oop
+ /*oop val = *(oop *)value_addr;
#ifdef _LP64
if (Universe::is_narrow_oop_base(val)) {
// Compiled code may produce decoded oop = narrow_oop_base
@@ -118,7 +119,7 @@
val = (oop)NULL;
}
#endif
- Handle h(val); // Wrap a handle around the oop
+ Handle h(val); // Wrap a handle around the oop*/
return new StackValue(h);
}
case Location::addr: {
-------------- next part --------------
An HTML attachment was scrubbed...
URL: http://mail.openjdk.java.net/pipermail/hotspot-compiler-dev/attachments/20140124/d2cee8d5/attachment.html
More information about the hotspot-compiler-dev
mailing list