From 5740d99233d559ef2dc3f0377e565ca52558c405 Mon Sep 17 00:00:00 2001 From: Mikhael Bogdanov Date: Wed, 12 Feb 2014 11:58:35 +0400 Subject: [PATCH] Properly index new variables after method inline --- .../src/org/jetbrains/jet/codegen/asm/InlineAdapter.java | 7 +++++++ .../src/org/jetbrains/jet/codegen/asm/MethodInliner.java | 1 - 2 files changed, 7 insertions(+), 1 deletion(-) 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;