[9] RFR(XXS): 8009738: compiler/6826736/Test.java times out on big machines

Albert albert.noll at oracle.com
Fri Jan 24 11:20:57 PST 2014


Hi Vladimir,

thanks for looking at the patch and catching the error.
Here is the corrected version.

http://cr.openjdk.java.net/~anoll/8009738/webrev.01/ 
<http://cr.openjdk.java.net/%7Eanoll/8009738/webrev.01/>

Best,
Albert

On 01/24/2014 03:53 PM, Vladimir Kozlov wrote:
> Albert,
>
> You made typo: -Xms256m instead of -Xmx256m
> You limit only young gen.
>
> Thanks,
> Vladimir
>
> On 1/24/14 5:50 AM, Albert wrote:
>> 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/e74728e0/attachment-0001.html 


More information about the hotspot-compiler-dev mailing list