Store methodStartLabel in MethodContext
This commit is contained in:
committed by
Andrey Breslav
parent
e4382ff95b
commit
cfbcbb80f5
@@ -284,6 +284,9 @@ public class FunctionCodegen extends ParentCodegenAwareImpl {
|
|||||||
frameMap.enter(parameter, typeMapper.mapType(parameter));
|
frameMap.enter(parameter, typeMapper.mapType(parameter));
|
||||||
}
|
}
|
||||||
|
|
||||||
|
Label methodEntry = new Label();
|
||||||
|
mv.visitLabel(methodEntry);
|
||||||
|
context.setMethodStartLabel(methodEntry);
|
||||||
labelsForSharedVars.putAll(createSharedVarsForParameters(mv, functionDescriptor, frameMap));
|
labelsForSharedVars.putAll(createSharedVarsForParameters(mv, functionDescriptor, frameMap));
|
||||||
|
|
||||||
if (!JetTypeMapper.isAccessor(functionDescriptor)) {
|
if (!JetTypeMapper.isAccessor(functionDescriptor)) {
|
||||||
|
|||||||
@@ -18,17 +18,21 @@ package org.jetbrains.jet.codegen.context;
|
|||||||
|
|
||||||
import org.jetbrains.annotations.NotNull;
|
import org.jetbrains.annotations.NotNull;
|
||||||
import org.jetbrains.annotations.Nullable;
|
import org.jetbrains.annotations.Nullable;
|
||||||
|
import org.jetbrains.asm4.Label;
|
||||||
import org.jetbrains.jet.codegen.binding.MutableClosure;
|
import org.jetbrains.jet.codegen.binding.MutableClosure;
|
||||||
import org.jetbrains.jet.lang.resolve.java.AsmTypeConstants;
|
import org.jetbrains.jet.lang.resolve.java.AsmTypeConstants;
|
||||||
import org.jetbrains.jet.codegen.OwnerKind;
|
import org.jetbrains.jet.codegen.OwnerKind;
|
||||||
import org.jetbrains.jet.codegen.StackValue;
|
import org.jetbrains.jet.codegen.StackValue;
|
||||||
import org.jetbrains.jet.codegen.state.GenerationState;
|
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.DeclarationDescriptor;
|
||||||
import org.jetbrains.jet.lang.descriptors.FunctionDescriptor;
|
import org.jetbrains.jet.lang.descriptors.FunctionDescriptor;
|
||||||
import org.jetbrains.jet.lang.descriptors.PropertyAccessorDescriptor;
|
import org.jetbrains.jet.lang.descriptors.PropertyAccessorDescriptor;
|
||||||
|
|
||||||
public class MethodContext extends CodegenContext {
|
public class MethodContext extends CodegenContext {
|
||||||
|
|
||||||
|
private Label methodStartLabel;
|
||||||
|
|
||||||
public MethodContext(
|
public MethodContext(
|
||||||
@NotNull FunctionDescriptor contextType,
|
@NotNull FunctionDescriptor contextType,
|
||||||
@NotNull OwnerKind contextKind,
|
@NotNull OwnerKind contextKind,
|
||||||
@@ -71,8 +75,18 @@ public class MethodContext extends CodegenContext {
|
|||||||
return getParentContext().getOuterExpression(prefix, false);
|
return getParentContext().getOuterExpression(prefix, false);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@Nullable
|
||||||
|
public Label getMethodStartLabel() {
|
||||||
|
return methodStartLabel;
|
||||||
|
}
|
||||||
|
|
||||||
|
public void setMethodStartLabel(@NotNull Label methodStartLabel) {
|
||||||
|
this.methodStartLabel = methodStartLabel;
|
||||||
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public String toString() {
|
public String toString() {
|
||||||
return "Method: " + getContextDescriptor();
|
return "Method: " + getContextDescriptor();
|
||||||
}
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user