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