Consider removing PhaseStringOpts::remove_dead_nodes. The stringopts phase does manual gvn transformations to remove nodes that are going away. The reason for this is that escape analysis could not handle a partially collapsed graph produced by stringopts. We could check if that assumption is still valid and if these nodes would not be cleaned up by PhaseRemoveUseless and IGVN rounds before escape analysis. Code appears to be unchanged since JDK-6892658.
Testing seems to pass after removing these methods.
Testing seems to pass after removing these methods.