diff --git a/compiler/backend/src/org/jetbrains/jet/codegen/asm/InlineAdapter.java b/compiler/backend/src/org/jetbrains/jet/codegen/asm/InlineAdapter.java index b76fb851df0..fefe4828bdf 100644 --- a/compiler/backend/src/org/jetbrains/jet/codegen/asm/InlineAdapter.java +++ b/compiler/backend/src/org/jetbrains/jet/codegen/asm/InlineAdapter.java @@ -32,6 +32,8 @@ public class InlineAdapter extends InstructionAdapter { private final List blocks = new ArrayList(); + private int nextLocalIndexBeforeInline = -1; + public InlineAdapter(MethodVisitor mv, int localsSize) { super(mv); nextLocalIndex = localsSize; @@ -62,6 +64,11 @@ public class InlineAdapter extends InstructionAdapter { public void setInlining(boolean isInlining) { this.isInlining = isInlining; + if (isInlining) { + nextLocalIndexBeforeInline = nextLocalIndex; + } else { + nextLocalIndex = nextLocalIndexBeforeInline; + } } @Override diff --git a/compiler/backend/src/org/jetbrains/jet/codegen/asm/MethodInliner.java b/compiler/backend/src/org/jetbrains/jet/codegen/asm/MethodInliner.java index 5da946457e9..4b01f69cc43 100644 --- a/compiler/backend/src/org/jetbrains/jet/codegen/asm/MethodInliner.java +++ b/compiler/backend/src/org/jetbrains/jet/codegen/asm/MethodInliner.java @@ -104,7 +104,6 @@ public class MethodInliner { final Iterator iterator = constructorInvocationList.iterator(); - //TODO add reset to counter InlineAdapter inliner = new InlineAdapter(resultNode, parameters.totalSize()) { private ConstructorInvocation invocation;