From c8302fdf9c255253c4d92da72192868b7564d8cb Mon Sep 17 00:00:00 2001 From: Mikhael Bogdanov Date: Mon, 24 Feb 2014 17:54:49 +0400 Subject: [PATCH] Push arguments refactoring --- .../jet/codegen/ExpressionCodegen.java | 18 +----------------- .../jet/codegen/intrinsics/StupidSync.java | 11 ++++++++++- 2 files changed, 11 insertions(+), 18 deletions(-) diff --git a/compiler/backend/src/org/jetbrains/jet/codegen/ExpressionCodegen.java b/compiler/backend/src/org/jetbrains/jet/codegen/ExpressionCodegen.java index 9bf4427e93f..362bde601a8 100644 --- a/compiler/backend/src/org/jetbrains/jet/codegen/ExpressionCodegen.java +++ b/compiler/backend/src/org/jetbrains/jet/codegen/ExpressionCodegen.java @@ -2325,7 +2325,7 @@ public class ExpressionCodegen extends JetVisitor implem return false; } - private int pushMethodArguments(@NotNull ResolvedCall resolvedCall, List valueParameterTypes, CallGenerator callGenerator) { + public int pushMethodArguments(@NotNull ResolvedCall resolvedCall, List valueParameterTypes, CallGenerator callGenerator) { return pushMethodArguments(resolvedCall, valueParameterTypes, false, callGenerator); } @@ -2460,22 +2460,6 @@ public class ExpressionCodegen extends JetVisitor implem } } - public int pushMethodArguments(JetCallElement expression, List valueParameterTypes) { - ResolvedCall resolvedCall = - bindingContext.get(BindingContext.RESOLVED_CALL, expression.getCalleeExpression()); - if (resolvedCall != null) { - return pushMethodArguments(resolvedCall, valueParameterTypes, null); - } - else { - List args = expression.getValueArguments(); - for (int i = 0, argsSize = args.size(); i < argsSize; i++) { - ValueArgument arg = args.get(i); - gen(arg.getArgumentExpression(), valueParameterTypes.get(i)); - } - return 0; - } - } - @NotNull public Type expressionType(JetExpression expr) { return asmTypeOrVoid(bindingContext.get(EXPRESSION_TYPE, expr)); diff --git a/compiler/backend/src/org/jetbrains/jet/codegen/intrinsics/StupidSync.java b/compiler/backend/src/org/jetbrains/jet/codegen/intrinsics/StupidSync.java index 41e2824adb6..289be1ef3ae 100644 --- a/compiler/backend/src/org/jetbrains/jet/codegen/intrinsics/StupidSync.java +++ b/compiler/backend/src/org/jetbrains/jet/codegen/intrinsics/StupidSync.java @@ -23,8 +23,11 @@ import org.jetbrains.asm4.Type; import org.jetbrains.asm4.commons.InstructionAdapter; import org.jetbrains.jet.codegen.ExpressionCodegen; import org.jetbrains.jet.codegen.StackValue; +import org.jetbrains.jet.lang.descriptors.CallableDescriptor; import org.jetbrains.jet.lang.psi.JetCallExpression; import org.jetbrains.jet.lang.psi.JetExpression; +import org.jetbrains.jet.lang.resolve.BindingContext; +import org.jetbrains.jet.lang.resolve.calls.model.ResolvedCall; import java.util.Arrays; import java.util.List; @@ -43,7 +46,13 @@ public class StupidSync extends IntrinsicMethod { @Nullable List arguments, StackValue receiver ) { - codegen.pushMethodArguments((JetCallExpression) element, Arrays.asList(OBJECT_TYPE, FUNCTION0_TYPE)); + assert element != null : "Element should not be null"; + ResolvedCall resolvedCall = + codegen.getBindingContext().get(BindingContext.RESOLVED_CALL, ((JetCallExpression) element).getCalleeExpression()); + + assert resolvedCall != null : "Resolved call for " + element.getText() + " should be not null"; + + codegen.pushMethodArguments(resolvedCall, Arrays.asList(OBJECT_TYPE, FUNCTION0_TYPE), null); v.invokestatic("kotlin/jvm/internal/Intrinsics", "stupidSync", Type.getMethodDescriptor(OBJECT_TYPE, OBJECT_TYPE, FUNCTION0_TYPE)); return OBJECT_TYPE; }