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

Vladimir Kozlov vladimir.kozlov at oracle.com
Fri Jan 24 11:41:00 PST 2014


Good.

Thanks,
Vladimir

On 1/24/14 11:20 AM, Albert wrote:
> 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: {
>


More information about the hotspot-compiler-dev mailing list