JvmDeclarationOrigin used in FunctionCodegen.generateMethod()

This commit is contained in:
Andrey Breslav
2014-05-27 21:05:17 +04:00
parent 0413f90bec
commit 03a0a6d17a
5 changed files with 17 additions and 17 deletions
@@ -162,7 +162,7 @@ public class ClosureCodegen extends ParentCodegenAware {
generateBridge(cv, typeMapper.mapSignature(erasedInterfaceFunction).getAsmMethod(), jvmMethodSignature.getAsmMethod()); generateBridge(cv, typeMapper.mapSignature(erasedInterfaceFunction).getAsmMethod(), jvmMethodSignature.getAsmMethod());
FunctionCodegen fc = new FunctionCodegen(context, cv, state, getParentCodegen()); FunctionCodegen fc = new FunctionCodegen(context, cv, state, getParentCodegen());
fc.generateMethod(fun, jvmMethodSignature, funDescriptor, strategy); fc.generateMethod(OtherOrigin(fun, funDescriptor), jvmMethodSignature, funDescriptor, strategy);
this.constructor = generateConstructor(cv, superClassAsmType); this.constructor = generateConstructor(cv, superClassAsmType);
@@ -100,7 +100,8 @@ public class FunctionCodegen extends ParentCodegenAware {
JvmMethodSignature method = typeMapper.mapSignature(functionDescriptor, kind); JvmMethodSignature method = typeMapper.mapSignature(functionDescriptor, kind);
if (kind != OwnerKind.TRAIT_IMPL || function.hasBody()) { if (kind != OwnerKind.TRAIT_IMPL || function.hasBody()) {
generateMethod(function, method, functionDescriptor, generateMethod(OtherOrigin(function, functionDescriptor),
method, functionDescriptor,
new FunctionGenerationStrategy.FunctionDefault(state, functionDescriptor, function)); new FunctionGenerationStrategy.FunctionDefault(state, functionDescriptor, function));
} }
@@ -109,7 +110,7 @@ public class FunctionCodegen extends ParentCodegenAware {
} }
public void generateMethod( public void generateMethod(
@Nullable PsiElement origin, @NotNull JvmDeclarationOrigin origin,
@NotNull JvmMethodSignature jvmSignature, @NotNull JvmMethodSignature jvmSignature,
@NotNull FunctionDescriptor functionDescriptor, @NotNull FunctionDescriptor functionDescriptor,
@NotNull FunctionGenerationStrategy strategy @NotNull FunctionGenerationStrategy strategy
@@ -118,7 +119,7 @@ public class FunctionCodegen extends ParentCodegenAware {
} }
public void generateMethod( public void generateMethod(
@Nullable PsiElement origin, @NotNull JvmDeclarationOrigin origin,
@NotNull JvmMethodSignature jvmSignature, @NotNull JvmMethodSignature jvmSignature,
@NotNull FunctionDescriptor functionDescriptor, @NotNull FunctionDescriptor functionDescriptor,
@NotNull MethodContext methodContext, @NotNull MethodContext methodContext,
@@ -127,7 +128,7 @@ public class FunctionCodegen extends ParentCodegenAware {
OwnerKind methodContextKind = methodContext.getContextKind(); OwnerKind methodContextKind = methodContext.getContextKind();
Method asmMethod = jvmSignature.getAsmMethod(); Method asmMethod = jvmSignature.getAsmMethod();
MethodVisitor mv = v.newMethod(OtherOrigin(origin, functionDescriptor), MethodVisitor mv = v.newMethod(origin,
getMethodAsmFlags(functionDescriptor, methodContextKind), getMethodAsmFlags(functionDescriptor, methodContextKind),
asmMethod.getName(), asmMethod.getName(),
asmMethod.getDescriptor(), asmMethod.getDescriptor(),
@@ -163,7 +164,7 @@ public class FunctionCodegen extends ParentCodegenAware {
generateMethodBody(mv, functionDescriptor, methodContext, jvmSignature, strategy, getParentCodegen()); generateMethodBody(mv, functionDescriptor, methodContext, jvmSignature, strategy, getParentCodegen());
endVisit(mv, null, origin); endVisit(mv, null, origin.getElement());
methodContext.recordSyntheticAccessorIfNeeded(functionDescriptor, bindingContext); methodContext.recordSyntheticAccessorIfNeeded(functionDescriptor, bindingContext);
@@ -786,7 +786,7 @@ public class ImplementationBodyCodegen extends ClassBodyCodegen {
@Override @Override
public void generateComponentFunction(@NotNull FunctionDescriptor function, @NotNull final ValueParameterDescriptor parameter) { public void generateComponentFunction(@NotNull FunctionDescriptor function, @NotNull final ValueParameterDescriptor parameter) {
functionCodegen.generateMethod(myClass, typeMapper.mapSignature(function), function, new FunctionGenerationStrategy() { functionCodegen.generateMethod(OtherOrigin(myClass, function), typeMapper.mapSignature(function), function, new FunctionGenerationStrategy() {
@Override @Override
public void generateBody( public void generateBody(
@NotNull MethodVisitor mv, @NotNull MethodVisitor mv,
@@ -812,7 +812,7 @@ public class ImplementationBodyCodegen extends ClassBodyCodegen {
final Type thisDescriptorType = typeMapper.mapType(descriptor); final Type thisDescriptorType = typeMapper.mapType(descriptor);
functionCodegen.generateMethod(myClass, methodSignature, function, new FunctionGenerationStrategy() { functionCodegen.generateMethod(OtherOrigin(myClass, function), methodSignature, function, new FunctionGenerationStrategy() {
@Override @Override
public void generateBody( public void generateBody(
@NotNull MethodVisitor mv, @NotNull MethodVisitor mv,
@@ -941,7 +941,7 @@ public class ImplementationBodyCodegen extends ClassBodyCodegen {
FunctionDescriptor bridge = (FunctionDescriptor) entry.getValue(); FunctionDescriptor bridge = (FunctionDescriptor) entry.getValue();
final FunctionDescriptor original = (FunctionDescriptor) entry.getKey(); final FunctionDescriptor original = (FunctionDescriptor) entry.getKey();
functionCodegen.generateMethod( functionCodegen.generateMethod(
null, typeMapper.mapSignature(bridge), bridge, OtherOrigin(original), typeMapper.mapSignature(bridge), bridge,
new FunctionGenerationStrategy.CodegenBased<FunctionDescriptor>(state, bridge) { new FunctionGenerationStrategy.CodegenBased<FunctionDescriptor>(state, bridge) {
@Override @Override
public void doGenerateBody(@NotNull ExpressionCodegen codegen, @NotNull JvmMethodSignature signature) { public void doGenerateBody(@NotNull ExpressionCodegen codegen, @NotNull JvmMethodSignature signature) {
@@ -957,7 +957,7 @@ public class ImplementationBodyCodegen extends ClassBodyCodegen {
PropertyGetterDescriptor getter = bridge.getGetter(); PropertyGetterDescriptor getter = bridge.getGetter();
assert getter != null; assert getter != null;
functionCodegen.generateMethod(null, typeMapper.mapSignature(getter), getter, functionCodegen.generateMethod(OtherOrigin(original.getGetter()), typeMapper.mapSignature(getter), getter,
new FunctionGenerationStrategy.CodegenBased<PropertyGetterDescriptor>(state, getter) { new FunctionGenerationStrategy.CodegenBased<PropertyGetterDescriptor>(state, getter) {
@Override @Override
public void doGenerateBody(@NotNull ExpressionCodegen codegen, @NotNull JvmMethodSignature signature) { public void doGenerateBody(@NotNull ExpressionCodegen codegen, @NotNull JvmMethodSignature signature) {
@@ -983,7 +983,7 @@ public class ImplementationBodyCodegen extends ClassBodyCodegen {
PropertySetterDescriptor setter = bridge.getSetter(); PropertySetterDescriptor setter = bridge.getSetter();
assert setter != null; assert setter != null;
functionCodegen.generateMethod(null, typeMapper.mapSignature(setter), setter, functionCodegen.generateMethod(OtherOrigin(original.getSetter()), typeMapper.mapSignature(setter), setter,
new FunctionGenerationStrategy.CodegenBased<PropertySetterDescriptor>(state, setter) { new FunctionGenerationStrategy.CodegenBased<PropertySetterDescriptor>(state, setter) {
@Override @Override
public void doGenerateBody(@NotNull ExpressionCodegen codegen, @NotNull JvmMethodSignature signature) { public void doGenerateBody(@NotNull ExpressionCodegen codegen, @NotNull JvmMethodSignature signature) {
@@ -1137,7 +1137,7 @@ public class ImplementationBodyCodegen extends ClassBodyCodegen {
assert constructorDescriptor != null : "Constructor not found for class: " + descriptor; assert constructorDescriptor != null : "Constructor not found for class: " + descriptor;
final JvmMethodSignature constructorSignature = typeMapper.mapSignature(constructorDescriptor); final JvmMethodSignature constructorSignature = typeMapper.mapSignature(constructorDescriptor);
functionCodegen.generateMethod(myClass, constructorSignature, constructorDescriptor, constructorContext, functionCodegen.generateMethod(OtherOrigin(myClass, constructorDescriptor), constructorSignature, constructorDescriptor, constructorContext,
new FunctionGenerationStrategy.CodegenBased<ConstructorDescriptor>(state, constructorDescriptor) { new FunctionGenerationStrategy.CodegenBased<ConstructorDescriptor>(state, constructorDescriptor) {
@NotNull @NotNull
@Override @Override
@@ -1449,7 +1449,7 @@ public class ImplementationBodyCodegen extends ClassBodyCodegen {
private void generateDelegationToTraitImpl(@NotNull final FunctionDescriptor traitFun, @NotNull FunctionDescriptor inheritedFun) { private void generateDelegationToTraitImpl(@NotNull final FunctionDescriptor traitFun, @NotNull FunctionDescriptor inheritedFun) {
functionCodegen.generateMethod( functionCodegen.generateMethod(
descriptorToDeclaration(bindingContext, traitFun), OtherOrigin(descriptorToDeclaration(bindingContext, traitFun), traitFun),
typeMapper.mapSignature(inheritedFun), typeMapper.mapSignature(inheritedFun),
inheritedFun, inheritedFun,
new FunctionGenerationStrategy.CodegenBased<FunctionDescriptor>(state, inheritedFun) { new FunctionGenerationStrategy.CodegenBased<FunctionDescriptor>(state, inheritedFun) {
@@ -60,8 +60,7 @@ import org.jetbrains.org.objectweb.asm.Type;
import java.util.*; import java.util.*;
import static org.jetbrains.jet.codegen.AsmUtil.asmDescByFqNameWithoutInnerClasses; import static org.jetbrains.jet.codegen.AsmUtil.asmDescByFqNameWithoutInnerClasses;
import static org.jetbrains.jet.codegen.CodegenPackage.PackageFacade; import static org.jetbrains.jet.codegen.CodegenPackage.*;
import static org.jetbrains.jet.codegen.CodegenPackage.PackagePart;
import static org.jetbrains.jet.descriptors.serialization.NameSerializationUtil.createNameResolver; import static org.jetbrains.jet.descriptors.serialization.NameSerializationUtil.createNameResolver;
import static org.jetbrains.jet.lang.resolve.java.PackageClassUtils.getPackageClassFqName; import static org.jetbrains.jet.lang.resolve.java.PackageClassUtils.getPackageClassFqName;
import static org.jetbrains.org.objectweb.asm.Opcodes.*; import static org.jetbrains.org.objectweb.asm.Opcodes.*;
@@ -166,7 +165,7 @@ public class PackageCodegen {
if (member instanceof DeserializedSimpleFunctionDescriptor) { if (member instanceof DeserializedSimpleFunctionDescriptor) {
DeserializedSimpleFunctionDescriptor function = (DeserializedSimpleFunctionDescriptor) member; DeserializedSimpleFunctionDescriptor function = (DeserializedSimpleFunctionDescriptor) member;
JvmMethodSignature signature = state.getTypeMapper().mapSignature(function, OwnerKind.PACKAGE); JvmMethodSignature signature = state.getTypeMapper().mapSignature(function, OwnerKind.PACKAGE);
memberCodegen.functionCodegen.generateMethod(null, signature, function, memberCodegen.functionCodegen.generateMethod(OtherOrigin(function), signature, function,
new FunctionGenerationStrategy() { new FunctionGenerationStrategy() {
@Override @Override
public void generateBody( public void generateBody(
@@ -303,7 +303,7 @@ public class PropertyCodegen {
} }
JvmMethodSignature signature = typeMapper.mapSignature(accessorDescriptor, kind); JvmMethodSignature signature = typeMapper.mapSignature(accessorDescriptor, kind);
functionCodegen.generateMethod(accessor != null ? accessor : p, signature, accessorDescriptor, strategy); functionCodegen.generateMethod(OtherOrigin(accessor != null ? accessor : p, accessorDescriptor), signature, accessorDescriptor, strategy);
} }
private static int indexOfDelegatedProperty(@NotNull JetProperty property) { private static int indexOfDelegatedProperty(@NotNull JetProperty property) {