package org.simantics.scl.compiler.constants.generic; import org.cojen.classfile.TypeDesc; import org.objectweb.asm.Label; import org.simantics.scl.compiler.constants.FunctionValue; import org.simantics.scl.compiler.internal.codegen.continuations.Cont; import org.simantics.scl.compiler.internal.codegen.references.IVal; import org.simantics.scl.compiler.internal.codegen.references.Val; import org.simantics.scl.compiler.internal.codegen.types.JavaReferenceValidator; import org.simantics.scl.compiler.internal.codegen.utils.Constants; import org.simantics.scl.compiler.internal.codegen.utils.MethodBuilder; import org.simantics.scl.compiler.types.TVar; import org.simantics.scl.compiler.types.Type; /** * This class represents a call to a Java method as an SCL function value. * It is instantiated by the {@link org.simantics.scl.compiler.compilation.Elaboration.matchType(MethodRef, Type)} method. */ public class CallJava extends FunctionValue { StackItem[] stackItems; MethodRef methodRef; OutputFilter filter; public CallJava(TVar[] typeParameters, Type effect, Type returnType, Type[] parameterTypes, StackItem[] stackItems, MethodRef methodRef, OutputFilter filter) { super(typeParameters, effect, returnType, parameterTypes); if(stackItems == null) { stackItems = new StackItem[parameterTypes.length]; for(int i=0;i