From 8ac48b746c5d9639dac928e8956ca127cae0e637 Mon Sep 17 00:00:00 2001 From: Mikhael Bogdanov Date: Wed, 26 Feb 2014 17:06:06 +0400 Subject: [PATCH] Closure assertions removal update --- .../jet/codegen/inline/MethodInliner.java | 34 ++++++------------- 1 file changed, 10 insertions(+), 24 deletions(-) diff --git a/compiler/backend/src/org/jetbrains/jet/codegen/inline/MethodInliner.java b/compiler/backend/src/org/jetbrains/jet/codegen/inline/MethodInliner.java index 5527d588ee3..2a544b9494e 100644 --- a/compiler/backend/src/org/jetbrains/jet/codegen/inline/MethodInliner.java +++ b/compiler/backend/src/org/jetbrains/jet/codegen/inline/MethodInliner.java @@ -359,7 +359,7 @@ public class MethodInliner { return null; } - private void removeClosureAssertions(MethodNode node) { + private static void removeClosureAssertions(MethodNode node) { AbstractInsnNode cur = node.instructions.getFirst(); while (cur != null && cur.getNext() != null) { AbstractInsnNode next = cur.getNext(); @@ -367,29 +367,15 @@ public class MethodInliner { MethodInsnNode methodInsnNode = (MethodInsnNode) next; if (methodInsnNode.name.equals("checkParameterIsNotNull") && methodInsnNode.owner.equals("jet/runtime/Intrinsics")) { AbstractInsnNode prev = cur.getPrevious(); - boolean delete = false; - if (prev.getOpcode() == Opcodes.INVOKESTATIC) { - //parameter boxing - AbstractInsnNode prePrevious = cur.getPrevious(); - if (prePrevious.getType() == AbstractInsnNode.VAR_INSN && - prePrevious.getOpcode() < Opcodes.ALOAD && - prePrevious.getOpcode() >= Opcodes.ILOAD) { - delete = true; - node.instructions.remove(prePrevious); - } - } else { - assert prev.getType() == AbstractInsnNode.VAR_INSN && prev.getOpcode() == Opcodes.ALOAD; - int varIndex = ((VarInsnNode) prev).var; - LambdaInfo closure = getLambda(varIndex); - delete = closure != null; - } - if (delete) { - node.instructions.remove(prev); - node.instructions.remove(cur); - cur = next.getNext(); - node.instructions.remove(next); - next = cur; - } + + assert cur.getOpcode() == Opcodes.LDC : "checkParameterIsNotNull should go after LDC but " + cur; + assert prev.getOpcode() == Opcodes.ALOAD : "checkParameterIsNotNull should be invoked on local var but " + prev; + + node.instructions.remove(prev); + node.instructions.remove(cur); + cur = next.getNext(); + node.instructions.remove(next); + next = cur; } } cur = next;