]> gerrit.simantics Code Review - simantics/platform.git/blob
2740a7866732e4435ff20c8c57cb7ccd718e9d91
[simantics/platform.git] /
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.environment.Environment;
6 import org.simantics.scl.compiler.internal.codegen.ssa.SSAModule;
7 import org.simantics.scl.compiler.top.SCLCompilerConfiguration;
8
9 public class SSASimplificationContext {
10     SSAModule module;
11     Environment environment;
12     boolean modified = false;
13     public static int modiId = 0;
14     int phase;
15     
16     public SSASimplificationContext(SSAModule module, Environment environment, int phase) {
17         this.module = module;
18         this.environment = environment;
19         this.phase = phase;
20     }
21
22     public void markModified(String description) {
23         if(SCLCompilerConfiguration.PRINT_OPTIMIZATION_TRANSFORMATIONS)
24             System.out.println("(" + modiId + ") DID " + description);
25         modified = true;
26         if(SCLCompilerConfiguration.VALIDATE_AFTER_OPTIMIZATIONS)
27             module.validate();
28         ++ modiId;
29     }
30
31     public boolean didModify() {
32         return modified;
33     }
34     
35     public Environment getEnvironment() {
36         return environment;
37     }
38     
39     public int getPhase() {
40         return phase;
41     }
42
43     static int tempNameCount = 0;
44     
45     public void addConstant(SCLConstant constant) {
46         module.put(constant.getName(), constant);        
47     }
48     
49     public SCLConstant removeConstant(Name name) {
50         return module.remove(name);
51     }
52     
53     public void printConstant(Name name) {
54         System.out.println("--- " + name + " ---------------------------");
55         System.out.println(module.get(name));
56     }
57
58     public void validate() {
59         module.validate();
60     }
61 }