CallReceiver calcType and put method identical simplification

This commit is contained in:
Mikhael Bogdanov
2014-03-21 11:46:22 +04:00
parent fd165f055f
commit ff4ff29d28
@@ -1125,37 +1125,22 @@ public abstract class StackValue {
CallableDescriptor descriptor = resolvedCall.getResultingDescriptor(); CallableDescriptor descriptor = resolvedCall.getResultingDescriptor();
if (thisObject.exists()) { if (receiverArgument.exists()) {
if (callableMethod != null) { if (callableMethod != null) {
if (receiverArgument.exists()) { return callableMethod.getReceiverClass();
return callableMethod.getReceiverClass();
}
else {
//noinspection ConstantConditions
return callableMethod.getThisType();
}
} }
else { else {
if (receiverArgument.exists()) { return codegen.typeMapper.mapType(descriptor.getReceiverParameter().getType());
return codegen.typeMapper.mapType(descriptor.getReceiverParameter().getType());
}
else {
return codegen.typeMapper.mapType(descriptor.getExpectedThisObject().getType());
}
} }
} } else if (thisObject.exists()) {
else { if (callableMethod != null) {
if (receiverArgument.exists()) { return callableMethod.getThisType();
if (callableMethod != null) {
return callableMethod.getReceiverClass();
}
else {
return codegen.typeMapper.mapType(descriptor.getReceiverParameter().getType());
}
} }
else { else {
return Type.VOID_TYPE; return codegen.typeMapper.mapType(descriptor.getExpectedThisObject().getType());
} }
} else {
return Type.VOID_TYPE;
} }
} }
@@ -1165,27 +1150,26 @@ public abstract class StackValue {
ReceiverValue thisObject = resolvedCall.getThisObject(); ReceiverValue thisObject = resolvedCall.getThisObject();
ReceiverValue receiverArgument = resolvedCall.getReceiverArgument(); ReceiverValue receiverArgument = resolvedCall.getReceiverArgument();
int depth;
if (thisObject.exists()) { if (thisObject.exists()) {
if (receiverArgument.exists()) { if (receiverArgument.exists()) {
if (callableMethod != null) { Type resultType = callableMethod != null ? callableMethod.getOwner() : codegen.typeMapper
codegen.generateFromResolvedCall(thisObject, callableMethod.getOwner()); .mapType(descriptor.getExpectedThisObject().getType());
}
else { codegen.generateFromResolvedCall(thisObject, resultType);
codegen.generateFromResolvedCall(thisObject, codegen.typeMapper
.mapType(descriptor.getExpectedThisObject().getType()));
}
if (putReceiverArgumentOnStack) {
genReceiver(v, receiverArgument, type, descriptor.getReceiverParameter(), 1);
}
} }
else { else {
genReceiver(v, thisObject, type, null, 0); genReceiver(v, thisObject, type, null, 0);
} }
depth = 1;
} }
else { else {
if (putReceiverArgumentOnStack && receiverArgument.exists()) { depth = 0;
genReceiver(v, receiverArgument, type, descriptor.getReceiverParameter(), 0); }
}
if (putReceiverArgumentOnStack && receiverArgument.exists()) {
genReceiver(v, receiverArgument, type, descriptor.getReceiverParameter(), depth);
} }
} }