[9] RFR(XXS): 8009738: compiler/6826736/Test.java times out on big machines (original) (raw)
Albert albert.noll at oracle.com
Fri Jan 24 05:50:35 PST 2014
- Previous message: RFR (S) 8032490: Remove -XX:+-UseOldInlining
- Next message: [9] RFR(XXS): 8009738: compiler/6826736/Test.java times out on big machines
- Messages sorted by: [ date ] [ thread ] [ subject ] [ author ]
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
#ifdef _LP64 if (Universe::is_narrow_oop_base(val)) { // Compiled code may produce decoded oop = narrow_oop_base/*oop val = *(oop *)value_addr;
@@ -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
- Previous message: RFR (S) 8032490: Remove -XX:+-UseOldInlining
- Next message: [9] RFR(XXS): 8009738: compiler/6826736/Test.java times out on big machines
- Messages sorted by: [ date ] [ thread ] [ subject ] [ author ]
More information about the hotspot-compiler-dev mailing list