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