Request for reviews (S): 6791852: assert(b->_nodes[insidx] == n,"got insidx set incorrectly")

Paul Hohensee Paul.Hohensee at Sun.COM
Fri Feb 6 11:03:17 PST 2009


I'd put #ifdef ASSERT around all the code in block.cpp to make sure the 
compiler
elides it for product and optimized vms.

The verification code in chaitin.cpp seems pretty similar in a lot of 
places.  Any way
to factor it?

You might change the code in live.cpp from

  if (!check->is_Proj() && !(check->is_Mach() ... ))

to

  if (check->is_Proj() || (check->is_Mach() ... ))

I.e., prefer positive rather than negative (use of '!') tests.  Easier 
on the brain. :)

Paul

Vladimir Kozlov wrote:
> http://cr.openjdk.java.net/~kvn/6791852/webrev.00
>
> Fixed 6791852: assert(b->_nodes[insidx] == n,"got insidx set 
> incorrectly")
>
> Problem:
> The code in PhaseChaitin::Split() in the part "Handle Crossing HRP 
> Boundry"
> expects that a new MachSpillCopy node is inserted before the current 
> node.
> After 6782232 fix it is not true if the current node is CreateEx.
>
> Solution:
> Remove the original fix for 6782232 in PhaseChaitin::insert_proj().
> Move the CreateEx up before each round of IFG construction to produce
> correct interference graph.
> Move verification checks in chaitin after IFG construction.
> Add additional check into PhaseCFG::verify().
> Fix check in PhaseChaitin::verify_base_ptrs().
>
> Reviewed by:
>
> Fix verified (y/n): y, bug's test case
>
> Other testing:
> JPRT, CTW (with -XX:+VerifyRegisterAllocator)
>



More information about the hotspot-compiler-dev mailing list