Currently, the Bytecode Escape Estimator used by escape analysis does
a very conservative analysis. In particular, it does not track values on the
execution stack across block boundaries or arguments stored to another local
variable. The analysis should be improved to perform this tracking.
I have improved the Bytecode Escape Estimator to do this tracking. I have
also added improved tracking of whether a method returns a newly allocated
As part of this work, I needed to improve the block analysis. There are now
3 places where this analysis is done. I have extracted this into a new
class ciMethodBlocks which allows the analysis to be shared by all 3 places.