Store methodStartLabel in MethodContext

This commit is contained in:
Sergey Mashkov
2013-11-26 17:30:08 +04:00
committed by Andrey Breslav
parent e4382ff95b
commit cfbcbb80f5
2 changed files with 17 additions and 0 deletions
@@ -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)) {
@@ -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();
}
}