import org.simantics.scl.compiler.internal.codegen.types.JavaTypeTranslator;
import org.simantics.scl.compiler.top.SCLCompilerConfiguration;
import org.simantics.scl.compiler.types.Type;
import org.simantics.scl.compiler.internal.codegen.types.JavaTypeTranslator;
import org.simantics.scl.compiler.top.SCLCompilerConfiguration;
import org.simantics.scl.compiler.types.Type;
public void addClass(ClassBuilder cb) {
byte[] bytecode = cb.finishClass();
classes.put(cb.getClassName(), bytecode);
public void addClass(ClassBuilder cb) {
byte[] bytecode = cb.finishClass();
classes.put(cb.getClassName(), bytecode);
ClassBuilder classBuilder;
if(remainingArity <= Constants.MAX_FUNCTION_PARAMETER_COUNT) {
if(SCLCompilerConfiguration.TRACE_METHOD_CREATION)
ClassBuilder classBuilder;
if(remainingArity <= Constants.MAX_FUNCTION_PARAMETER_COUNT) {
if(SCLCompilerConfiguration.TRACE_METHOD_CREATION)
classBuilder = new ClassBuilder(this, Opcodes.ACC_PUBLIC, className, MethodBuilderBase.getClassName(Constants.FUNCTION_IMPL[remainingArity]));
classBuilder.setSourceFile("_SCL_Closure");
classBuilder = new ClassBuilder(this, Opcodes.ACC_PUBLIC, className, MethodBuilderBase.getClassName(Constants.FUNCTION_IMPL[remainingArity]));
classBuilder.setSourceFile("_SCL_Closure");
classBuilder = new ClassBuilder(this, Opcodes.ACC_PUBLIC, className, MethodBuilderBase.getClassName(Constants.FUNCTION_N_IMPL));
classBuilder.setSourceFile("_SCL_Closure");
classBuilder = new ClassBuilder(this, Opcodes.ACC_PUBLIC, className, MethodBuilderBase.getClassName(Constants.FUNCTION_N_IMPL));
classBuilder.setSourceFile("_SCL_Closure");
- MethodBuilderBase mb = classBuilder.addConstructor(Opcodes.ACC_PUBLIC, Arrays.copyOf(parameterTypes, knownParametersCount));
+ MethodBuilderBase mb = classBuilder.addConstructorBase(Opcodes.ACC_PUBLIC, Arrays.copyOf(parameterTypes, knownParametersCount));
mb.loadThis();
mb.loadConstant(remainingArity);
mb.invokeConstructor(MethodBuilderBase.getClassName(Constants.FUNCTION_N_IMPL), new TypeDesc[] { TypeDesc.INT });
mb.loadThis();
mb.loadConstant(remainingArity);
mb.invokeConstructor(MethodBuilderBase.getClassName(Constants.FUNCTION_N_IMPL), new TypeDesc[] { TypeDesc.INT });