import org.simantics.scl.compiler.internal.codegen.utils.SSASimplificationContext;
import org.simantics.scl.compiler.internal.codegen.utils.SSAValidationContext;
import org.simantics.scl.compiler.top.SCLCompilerConfiguration;
-import org.simantics.scl.compiler.types.Type;
-import org.simantics.scl.runtime.tuple.Tuple2;
import gnu.trove.map.hash.THashMap;
import gnu.trove.procedure.TObjectObjectProcedure;
public class SSAModule {
THashMap<Name, SCLConstant> functions = new THashMap<Name, SCLConstant>();
- ArrayList<Tuple2> staticFields = new ArrayList<Tuple2>();
+ ArrayList<StaticField> staticFields = new ArrayList<StaticField>();
+ public ArrayList<SSAClosure> closuresToGenerate = new ArrayList<SSAClosure>();
public void put(Name name, SCLConstant function) {
functions.put(name, function);
});
JavaTypeTranslator javaTypeTranslator = moduleBuilder.getJavaTypeTranslator();
- for(Tuple2 tuple : staticFields) {
- classFile.addField(Opcodes.ACC_PUBLIC | Opcodes.ACC_STATIC, (String)tuple.c0,
- javaTypeTranslator.toTypeDesc((Type)tuple.c1));
+ for(StaticField tuple : staticFields) {
+ classFile.addField(Opcodes.ACC_PUBLIC | Opcodes.ACC_STATIC, tuple.name,
+ javaTypeTranslator.toTypeDesc(tuple.type));
}
classFile.addDefaultConstructor();
moduleBuilder.addClass(classFile);
+
+ for(SSAClosure closure : closuresToGenerate)
+ closure.generateCode(moduleBuilder);
}
/**
});
}
- public void addStaticField(Tuple2 tuple) {
+ public void addStaticField(StaticField tuple) {
staticFields.add(tuple);
}