Request for reviews (S): 6680665: bytecode Escape Analyzer produces incorrect escape information for methods without oop arguments

Vladimir Kozlov Vladimir.Kozlov at Sun.COM
Wed Mar 26 17:35:24 PDT 2008


I want this for HS12 (if approved).

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

Fixed 6680665: bytecode Escape Analyzer produces incorrect escape information for methods without oop arguments

Problem:
bcEscapeAnalyzer does not analyze methods with no oop arguments.
If such method returns an object bcEscapeAnalyzer always says
that an object is new non-escaping allocated object.

In the failed test cases the methods are accessors for a static
fields oop (which obviously global escape). And the caller method
has synchronization on this field. But during compilation locks
were removed since EA says the returned object does not escape.

Also bcEscapeAnalyzer doesn't save all escape information in MDO.
As result sequential calls to bcEscapeAnalyzer for the same method
will return incorrect information even when the original was correct.

Solution:
Use pessimistic escape information for methods which were not analyzed.
Analyze methods which returns oop. Save all escape information in MDO.

Also I moved duplicated dump code to BCEscapeAnalyzer::dump().

Reviewed by:
Fix verified (y/n): y, failed test cases.

Other testing:
JPRT




More information about the hotspot-compiler-dev mailing list