From cfbcbb80f5418600a6d904db4a6d89d2b2a1d589 Mon Sep 17 00:00:00 2001 From: Sergey Mashkov Date: Tue, 26 Nov 2013 17:30:08 +0400 Subject: [PATCH] Store methodStartLabel in MethodContext --- .../org/jetbrains/jet/codegen/FunctionCodegen.java | 3 +++ .../jet/codegen/context/MethodContext.java | 14 ++++++++++++++ 2 files changed, 17 insertions(+) diff --git a/compiler/backend/src/org/jetbrains/jet/codegen/FunctionCodegen.java b/compiler/backend/src/org/jetbrains/jet/codegen/FunctionCodegen.java index e9a625208d8..49664de4fd8 100644 --- a/compiler/backend/src/org/jetbrains/jet/codegen/FunctionCodegen.java +++ b/compiler/backend/src/org/jetbrains/jet/codegen/FunctionCodegen.java @@ -284,6 +284,9 @@ public class FunctionCodegen extends ParentCodegenAwareImpl { frameMap.enter(parameter, typeMapper.mapType(parameter)); } + Label methodEntry = new Label(); + mv.visitLabel(methodEntry); + context.setMethodStartLabel(methodEntry); labelsForSharedVars.putAll(createSharedVarsForParameters(mv, functionDescriptor, frameMap)); if (!JetTypeMapper.isAccessor(functionDescriptor)) { diff --git a/compiler/backend/src/org/jetbrains/jet/codegen/context/MethodContext.java b/compiler/backend/src/org/jetbrains/jet/codegen/context/MethodContext.java index 3d65991849e..4fe4fdfd60c 100644 --- a/compiler/backend/src/org/jetbrains/jet/codegen/context/MethodContext.java +++ b/compiler/backend/src/org/jetbrains/jet/codegen/context/MethodContext.java @@ -18,17 +18,21 @@ package org.jetbrains.jet.codegen.context; import org.jetbrains.annotations.NotNull; import org.jetbrains.annotations.Nullable; +import org.jetbrains.asm4.Label; import org.jetbrains.jet.codegen.binding.MutableClosure; import org.jetbrains.jet.lang.resolve.java.AsmTypeConstants; import org.jetbrains.jet.codegen.OwnerKind; import org.jetbrains.jet.codegen.StackValue; import org.jetbrains.jet.codegen.state.GenerationState; +import org.jetbrains.jet.lang.descriptors.CallableDescriptor; import org.jetbrains.jet.lang.descriptors.DeclarationDescriptor; import org.jetbrains.jet.lang.descriptors.FunctionDescriptor; import org.jetbrains.jet.lang.descriptors.PropertyAccessorDescriptor; public class MethodContext extends CodegenContext { + private Label methodStartLabel; + public MethodContext( @NotNull FunctionDescriptor contextType, @NotNull OwnerKind contextKind, @@ -71,8 +75,18 @@ public class MethodContext extends CodegenContext { return getParentContext().getOuterExpression(prefix, false); } + @Nullable + public Label getMethodStartLabel() { + return methodStartLabel; + } + + public void setMethodStartLabel(@NotNull Label methodStartLabel) { + this.methodStartLabel = methodStartLabel; + } + @Override public String toString() { return "Method: " + getContextDescriptor(); } + }