From 2de0b2a9ef2a3f6acb7f932e8c30d73ca44601b9 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Mika=C3=ABl=20Peltier?= Date: Fri, 16 Feb 2018 11:52:14 +0100 Subject: [PATCH] Cleaning into RedundantGotoMethodTransformer - Use val when it is possible - Use filterIsIstance - Replace takeif + ?.let by an if instruction --- .../optimization/RedundantGotoMethodTransformer.kt | 11 ++++++----- 1 file changed, 6 insertions(+), 5 deletions(-) diff --git a/compiler/backend/src/org/jetbrains/kotlin/codegen/optimization/RedundantGotoMethodTransformer.kt b/compiler/backend/src/org/jetbrains/kotlin/codegen/optimization/RedundantGotoMethodTransformer.kt index 64b66397124..813693b1ac2 100644 --- a/compiler/backend/src/org/jetbrains/kotlin/codegen/optimization/RedundantGotoMethodTransformer.kt +++ b/compiler/backend/src/org/jetbrains/kotlin/codegen/optimization/RedundantGotoMethodTransformer.kt @@ -43,9 +43,9 @@ class RedundantGotoMethodTransformer : MethodTransformer() { */ override fun transform(internalClassName: String, methodNode: MethodNode) { val insns = methodNode.instructions.toArray().apply { reverse() } - var insnsToRemove = arrayListOf() + val insnsToRemove = arrayListOf() val currentLabels = hashSetOf() - var labelsToReplace = hashMapOf() + val labelsToReplace = hashMapOf() var pendingGoto: JumpInsnNode? = null for (insn in insns) { @@ -72,7 +72,7 @@ class RedundantGotoMethodTransformer : MethodTransformer() { // Rewrite branch instructions. if (!labelsToReplace.isEmpty()) { - insns.filter { it is JumpInsnNode }.forEach { rewriteLabelIfNeeded(it as JumpInsnNode, labelsToReplace) } + insns.filterIsInstance().forEach { rewriteLabelIfNeeded(it, labelsToReplace) } } for (insnToRemove in insnsToRemove) { @@ -84,9 +84,10 @@ class RedundantGotoMethodTransformer : MethodTransformer() { jumpInsn: JumpInsnNode, labelsToReplace: HashMap ) { - getLastTargetJumpInsn(jumpInsn, labelsToReplace).takeIf { it.label != jumpInsn.label }?.let { + val lastTargetLabel = getLastTargetJumpInsn(jumpInsn, labelsToReplace).label + if (lastTargetLabel != jumpInsn.label) { // Do not remove the old label because it can be used to define a local variable range. - jumpInsn.label = it.label + jumpInsn.label = lastTargetLabel } }