Minor. Extract method

This commit is contained in:
Denis Zharkov
2017-01-14 15:43:44 +03:00
parent f024f14c1e
commit 8cf8e0fce0
@@ -2853,16 +2853,8 @@ public class ExpressionCodegen extends KtVisitor<StackValue, StackValue> impleme
@NotNull ArgumentGenerator argumentGenerator
) {
boolean isSuspensionPoint = CoroutineCodegenUtilKt.isSuspensionPointInStateMachine(resolvedCall, bindingContext);
if (isSuspensionPoint) {
// Inline markers are used to spill the stack before coroutine suspension
addInlineMarker(v, true);
}
boolean isConstructor = resolvedCall.getResultingDescriptor() instanceof ConstructorDescriptor;
if (!isConstructor) { // otherwise already
receiver = StackValue.receiver(resolvedCall, receiver, this, callableMethod);
receiver.put(receiver.type, v);
callableMethod.afterReceiverGeneration(v);
}
putReceiverAndInlineMarkerIfNeeded(callableMethod, resolvedCall, receiver, isSuspensionPoint, isConstructor);
callGenerator.processAndPutHiddenParameters(false);
@@ -2913,6 +2905,25 @@ public class ExpressionCodegen extends KtVisitor<StackValue, StackValue> impleme
}
}
private void putReceiverAndInlineMarkerIfNeeded(
@NotNull Callable callableMethod,
@NotNull ResolvedCall<?> resolvedCall,
@NotNull StackValue receiver,
boolean isSuspensionPoint,
boolean isConstructor
) {
if (isSuspensionPoint) {
// Inline markers are used to spill the stack before coroutine suspension
addInlineMarker(v, true);
}
if (!isConstructor) { // otherwise already
receiver = StackValue.receiver(resolvedCall, receiver, this, callableMethod);
receiver.put(receiver.type, v);
callableMethod.afterReceiverGeneration(v);
}
}
@NotNull
private CallGenerator getOrCreateCallGenerator(
@NotNull CallableDescriptor descriptor,