Skip to content

Commit 8cd4965

Browse files
author
Michael Bogdanov
committed
Generate local var table
1 parent 5c0a81f commit 8cd4965

File tree

4 files changed

+10
-4
lines changed

4 files changed

+10
-4
lines changed

compiler/backend/src/org/jetbrains/kotlin/codegen/inline/InlineCodegenUtil.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -63,7 +63,7 @@
6363
import static org.jetbrains.kotlin.resolve.DescriptorUtils.isTrait;
6464

6565
public class InlineCodegenUtil {
66-
public static final boolean GENERATE_SMAP = false;
66+
public static final boolean GENERATE_SMAP = true;
6767
public static final int API = Opcodes.ASM5;
6868
public static final String INVOKE = "invoke";
6969

compiler/backend/src/org/jetbrains/kotlin/codegen/inline/LocalVarRemapper.java

Lines changed: 7 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -97,9 +97,14 @@ public void visitIincInsn(int var, int increment, MethodVisitor mv) {
9797

9898
public void visitLocalVariable(String name, String desc, String signature, Label start, Label end, int index, MethodVisitor mv) {
9999
RemapInfo info = doRemap(index);
100+
//add entries only for shifted vars
100101
if (SHIFT == info.status) {
101-
//add entries only for shifted vars
102-
mv.visitLocalVariable(name, desc, signature, start, end, ((StackValue.Local) info.value).index);
102+
int newIndex = ((StackValue.Local) info.value).index;
103+
if (newIndex != 0 && "this".equals(name)) {
104+
/*skip additional this for now*/
105+
return;
106+
}
107+
mv.visitLocalVariable(name, desc, signature, start, end, newIndex);
103108
}
104109
}
105110

compiler/backend/src/org/jetbrains/kotlin/codegen/inline/MethodInliner.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -340,7 +340,7 @@ public void visitLineNumber(int line, @NotNull Label start) {
340340
public void visitLocalVariable(
341341
@NotNull String name, @NotNull String desc, String signature, @NotNull Label start, @NotNull Label end, int index
342342
) {
343-
if (isInliningLambda) {
343+
if (isInliningLambda || InlineCodegenUtil.GENERATE_SMAP) {
344344
super.visitLocalVariable(name, desc, signature, start, end, getNewIndex(index));
345345
}
346346
}

compiler/testData/checkLocalVariablesTable/inlineLambdaWithParam.kt

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -17,4 +17,5 @@ class A {
1717
// VARIABLE : NAME=l TYPE=I INDEX=3
1818
// VARIABLE : NAME=zzz TYPE=I INDEX=4
1919
// VARIABLE : NAME=l TYPE=I INDEX=3
20+
// VARIABLE : NAME=p TYPE=I INDEX=2
2021
// VARIABLE : NAME=this TYPE=LA; INDEX=0

0 commit comments

Comments
 (0)