[JVM] Fix shrinking of local range for dead variables.

Coroutine transform would occasionally *extend* the range of a
local instead of shrinking it (if the next suspension point
is after the end point for the local). That leads to the local
variable table having a local that covers code where it is not
defined. That is invalid and leads to D8 removing the locals
table from the code.
This commit is contained in:
Mads Ager
2021-04-09 09:37:17 +02:00
committed by TeamCityServer
parent ebdbcbb7b6
commit b27a109a1e
9 changed files with 62 additions and 1 deletions
@@ -1329,7 +1329,7 @@ private fun updateLvtAccordingToLiveness(method: MethodNode, isForNamedFunction:
variable.desc,
variable.signature,
variable.start,
nextSuspensionPointStartLabel(variable.start),
min(variable.end, nextSuspensionPointStartLabel(variable.start)),
variable.index
)
)