]> gerrit.simantics Code Review - simantics/platform.git/blob - bundles/org.simantics.scl.compiler/src/org/simantics/scl/compiler/internal/codegen/utils/SSALambdaLiftingContext.java
Merged changes from feature/scl to master.
[simantics/platform.git] / bundles / org.simantics.scl.compiler / src / org / simantics / scl / compiler / internal / codegen / utils / SSALambdaLiftingContext.java
1 package org.simantics.scl.compiler.internal.codegen.utils;\r
2 \r
3 import org.simantics.scl.compiler.common.names.Name;\r
4 import org.simantics.scl.compiler.constants.SCLConstant;\r
5 import org.simantics.scl.compiler.errors.ErrorLog;\r
6 import org.simantics.scl.compiler.internal.codegen.ssa.SSAClosure;\r
7 import org.simantics.scl.compiler.internal.codegen.ssa.SSAModule;\r
8 \r
9 public class SSALambdaLiftingContext {\r
10     SSAModule module;\r
11     Name parentName;\r
12     int count;\r
13     ErrorLog errorLog;\r
14     \r
15     public SSALambdaLiftingContext(SSAModule module, ErrorLog errorLog) {\r
16         this.module = module;\r
17         this.errorLog = errorLog;\r
18     }\r
19 \r
20     public void setParentName(Name parentName) {\r
21         this.parentName = parentName;\r
22         this.count = 0;\r
23     }\r
24     \r
25     public Name createName() {\r
26         return Name.create(parentName.module, parentName.name + "$" + (++count));\r
27     }\r
28     \r
29     public void addConstant(SCLConstant constant) {\r
30         module.put(constant.getName(), constant);        \r
31     }\r
32 \r
33     public void validate() {\r
34         module.validate();        \r
35     }\r
36     \r
37     public ErrorLog getErrorLog() {\r
38         return errorLog;\r
39     }\r
40     \r
41     public void addClosure(SSAClosure closure) {\r
42         module.closuresToGenerate.add(closure);\r
43     }\r
44 }\r