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

Vladimir Kozlov vladimir.kozlov at oracle.com
Fri Jan 24 06:53:13 PST 2014


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