Request for reviews (S): 6765180: Block::is_uncommon() gives wrong answer sometimes

Vladimir Kozlov Vladimir.Kozlov at Sun.COM
Wed Oct 29 11:37:44 PDT 2008


http://webrev.invokedynamic.info/kvn/6765180/index.html

Fixed 6765180: Block::is_uncommon() gives wrong answer sometimes

Problem:
Block::is_uncommon() checks only immediate block's predecessors
and does not check further which could give wrong answer since
it could be a chain of blocks started from an uncommon block.
As result an uncommon code could be placed in a middle of a hot code.

Solution:
- Add the flag Block::_is_uncommon and set it at the end of
   the global code motion. Check this flag when checking
   predecessors.
- Mark exception paths blocks as uncommon.
- Move uncommon_trap calls to the end of a method.

Additional fixes:
- Pin a SafePointScalarObject node to the control edge of
   the SafePoint node for which it was generated.
- Fix size's format in OutOfMemoryError message.

Reviewed by:
Fix verified (y/n): y, generated code

Other testing:
JPRT, refworkload



More information about the hotspot-compiler-dev mailing list