-package org.simantics.scl.compiler.internal.codegen.writer;\r
-\r
-import org.simantics.scl.compiler.internal.codegen.references.BoundVar;\r
-import org.simantics.scl.compiler.internal.codegen.ssa.SSABlock;\r
-import org.simantics.scl.compiler.internal.codegen.ssa.SSAFunction;\r
-import org.simantics.scl.compiler.internal.codegen.ssa.statements.LetFunctions;\r
-import org.simantics.scl.compiler.types.TVar;\r
-import org.simantics.scl.compiler.types.Type;\r
-\r
-public class RecursiveDefinitionWriter {\r
- ModuleWriter moduleWriter;\r
- LetFunctions let;\r
-\r
- public RecursiveDefinitionWriter(ModuleWriter moduleWriter, LetFunctions let) {\r
- this.moduleWriter = moduleWriter;\r
- this.let = let;\r
- }\r
-\r
- public CodeWriter createFunction(BoundVar target, TVar[] typeParameters, Type effect, Type returnType, Type[] parameterTypes) {\r
- SSAFunction function = new SSAFunction(typeParameters, effect, returnType);\r
- SSABlock block = new SSABlock(parameterTypes);\r
- function.addBlock(block);\r
- function.setTarget(target);\r
- \r
- let.addClosure(function);\r
- \r
- return new CodeWriter(moduleWriter, block);\r
- }\r
-\r
- public void setLocation(long loc) {\r
- let.setRecursiveGroupLocation(loc);\r
- }\r
-}\r
+package org.simantics.scl.compiler.internal.codegen.writer;
+
+import org.simantics.scl.compiler.internal.codegen.references.BoundVar;
+import org.simantics.scl.compiler.internal.codegen.ssa.SSABlock;
+import org.simantics.scl.compiler.internal.codegen.ssa.SSAFunction;
+import org.simantics.scl.compiler.internal.codegen.ssa.statements.LetFunctions;
+import org.simantics.scl.compiler.types.TVar;
+import org.simantics.scl.compiler.types.Type;
+
+public class RecursiveDefinitionWriter {
+ ModuleWriter moduleWriter;
+ LetFunctions let;
+
+ public RecursiveDefinitionWriter(ModuleWriter moduleWriter, LetFunctions let) {
+ this.moduleWriter = moduleWriter;
+ this.let = let;
+ }
+
+ public CodeWriter createFunction(BoundVar target, TVar[] typeParameters, Type effect, Type returnType, Type[] parameterTypes) {
+ SSAFunction function = new SSAFunction(typeParameters, effect, returnType);
+ SSABlock block = new SSABlock(parameterTypes);
+ function.addBlock(block);
+ function.setTarget(target);
+
+ let.addClosure(function);
+
+ return new CodeWriter(moduleWriter, block);
+ }
+
+ public void setLocation(long loc) {
+ let.setRecursiveGroupLocation(loc);
+ }
+}