]> gerrit.simantics Code Review - simantics/platform.git/blobdiff - bundles/org.simantics.scl.compiler/src/org/simantics/scl/compiler/internal/codegen/ssa/SSAModule.java
Merged changes from feature/scl to master.
[simantics/platform.git] / bundles / org.simantics.scl.compiler / src / org / simantics / scl / compiler / internal / codegen / ssa / SSAModule.java
index 9ca2303c00be9a349984721707ebd7d46144491d..e0dbf214f3a8a9a32c2adcec8c2feb98ab7ae225 100644 (file)
@@ -23,8 +23,6 @@ import org.simantics.scl.compiler.internal.codegen.utils.SSALambdaLiftingContext
 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;
@@ -32,7 +30,8 @@ import gnu.trove.procedure.TObjectProcedure;
 
 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);
@@ -169,14 +168,17 @@ public class SSAModule {
         });
 
         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);
     }
     
     /**
@@ -193,7 +195,7 @@ public class SSAModule {
         });        
     }
     
-    public void addStaticField(Tuple2 tuple) {
+    public void addStaticField(StaticField tuple) {
        staticFields.add(tuple);
     }