JVM_IR KT-45446 don't erase captured var if it's dead code

This commit is contained in:
Dmitry Petrov
2021-03-17 10:23:27 +03:00
committed by TeamCityServer
parent 6bd34db725
commit 7fabc19326
9 changed files with 66 additions and 1 deletions
@@ -57,6 +57,8 @@ class CapturedVarsOptimizationMethodTransformer : MethodTransformer() {
override fun onUseAsTainted() {
hazard = true
}
fun canRewrite() = !hazard && initCallInsn != null
}
private class Transformer(private val internalClassName: String, private val methodNode: MethodNode) {
@@ -72,7 +74,7 @@ class CapturedVarsOptimizationMethodTransformer : MethodTransformer() {
assignLocalVars(frames)
for (refValue in refValues) {
if (!refValue.hazard) {
if (refValue.canRewrite()) {
rewriteRefValue(refValue)
}
}