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