JVM traverse nodes in reverse order in 'findSafelyReachableReturns'
This commit is contained in:
committed by
teamcityserver
parent
f080dbb78c
commit
6c2d93bb8b
+3
-3
@@ -159,8 +159,8 @@ internal class MethodNodeExaminer(
|
|||||||
* @return indices of safely reachable returns for each instruction in the method node
|
* @return indices of safely reachable returns for each instruction in the method node
|
||||||
*/
|
*/
|
||||||
private fun findSafelyReachableReturns(): Array<Set<Int>?> {
|
private fun findSafelyReachableReturns(): Array<Set<Int>?> {
|
||||||
val insns = methodNode.instructions
|
val insns = methodNode.instructions.toArray()
|
||||||
val reachableReturnsIndices = Array(insns.size()) init@{ index ->
|
val reachableReturnsIndices = Array(insns.size) init@{ index ->
|
||||||
val insn = insns[index]
|
val insn = insns[index]
|
||||||
|
|
||||||
if (insn.opcode == Opcodes.ARETURN && !insn.isAreturnAfterSafeUnitInstance()) {
|
if (insn.opcode == Opcodes.ARETURN && !insn.isAreturnAfterSafeUnitInstance()) {
|
||||||
@@ -182,7 +182,7 @@ internal class MethodNodeExaminer(
|
|||||||
var changed: Boolean
|
var changed: Boolean
|
||||||
do {
|
do {
|
||||||
changed = false
|
changed = false
|
||||||
for (index in 0 until insns.size()) {
|
for (index in insns.indices.reversed()) {
|
||||||
if (insns[index].opcode == Opcodes.ARETURN) continue
|
if (insns[index].opcode == Opcodes.ARETURN) continue
|
||||||
|
|
||||||
@Suppress("RemoveExplicitTypeArguments")
|
@Suppress("RemoveExplicitTypeArguments")
|
||||||
|
|||||||
Reference in New Issue
Block a user