Request for reviews first part EA update (M):

Vladimir Kozlov Vladimir.Kozlov at Sun.COM
Thu Feb 28 18:34:10 PST 2008


Here are first changes for Escape Analysis.
This is a preparation for the EA scalar replacement optimization
and problems fixes.

It passed PRT with EA switched off (current default).
I will run tonight with EA on.

Thanks,
Vladimir

--------------------------------------------------------------------------------------------
http://webrev.invokedynamic.info/kvn/6667605/index.html

Fixed 6667605: Escape Analysis: always inline java constructors with EA

Problem:
A java constructor should be inlined to scalar replace the allocation with EA.

Solution:
Inline Java constructors when EA is on.
Also replace duplicated code in PhaseGVN::transform() with the call
to transform_no_reclaim(n) (I want to do this for several years already :) ).

--------------------------------------------------------------------------------------------
http://webrev.invokedynamic.info/kvn/6667610/index.html

Fixed 6667610: Escape Analysis: retry compilation without EA if it fails

Problem:
During split unique types EA could exceed nodes limit and fail the method compilation.

Solution:
Retry the compilation without EA.

--------------------------------------------------------------------------------------------
http://webrev.invokedynamic.info/kvn/6667612/index.html

Fixed 6667612: Escape Analysis: disable loop cloning if it has a scalar replaceable allocation

Problem:
Cloning an allocation will not allow scalar replacement since memory operations
could not be associated with one allocation, the unique type data is invalid
after such cloning.

Solution:
Do not clone a loop with a scalar replaceable allocation
Also use 1 instead of 'true' for bitfields assignment.

--------------------------------------------------------------------------------------------
http://webrev.invokedynamic.info/kvn/6667615/index.html

Fixed 6667615: Escape Analysis: extend MDO to cache arguments escape state

Problem:
EA uses byte code escape analyzer to determine the escape state of allocations passed
as arguments to a not inlined call. bcEscapeAnalyzer looks recursively on the method's
bytecode and bytecode of called methods. It is expensive to do this in each call site.

Solution:
Use MDO to cache arguments escape state.

--------------------------------------------------------------------------------------------
http://webrev.invokedynamic.info/kvn/6667620/index.html

Fixed 6667620: Escape Analysis: fix deoptimization for scalar replaced objects

Problem:
Deoptimization code for reallocation and relocking
scalar replaced objects has to be fixed.



More information about the hotspot-compiler-dev mailing list