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