JDK-6534152 : Escape analysis should split out unescaped obects as separate types
  • Type: Bug
  • Component: hotspot
  • Sub-Component: compiler
  • Affected Version: 6
  • Priority: P3
  • Status: Resolved
  • Resolution: Fixed
  • OS: generic
  • CPU: generic
  • Submitted: 2007-03-14
  • Updated: 2010-04-02
  • Resolved: 2007-05-24
The Version table provides details related to the release that this issue/RFE will be addressed.

Unresolved : Release in which this issue/RFE will be addressed.
Resolved: Release in which this issue/RFE has been resolved.
Fixed : Release in which this issue/RFE has been fixed. The release containing this fix may be available for download as an Early Access Release or a General Availability Release.

To download the current JDK release, click here.
JDK 6 JDK 7 Other
6u4Fixed 7Fixed hs10Fixed
Currently, escape analysis (EA) creates new types for unescaped objects and relies
on the compiler's optimization mechanisms to propagate the new types throughout the
IR nodes.  However because the optimizer is using the type information to perform
optimizations as the types are propagating, EA needs to be much too conservative
about creating the new types in order to prevent incorrect optimizations caused
by partially propagated inconsistent type information.  The conservative type
splitting also drastically reduces the possibility of completely eliminating the
allocation of unescaped objects.

A better solution would be for the EA pass to do the type propagation and graph
modifications.  This would significantly improve the optimizations possible because
no other optimizations are being done and because EA accumulates information which
improves the ability to do the type splitting.

EVALUATION This will be implemented by adding a pass at the end of escape analysis (EA) which: - identifies unescaped objects for which new types can be produced - propagating the types through the graph - updating the memory inputs of nodes to reflect the new types