--- /dev/null
+package org.simantics.scl.compiler.internal.codegen.utils;
+
+import org.simantics.scl.compiler.common.names.Name;
+import org.simantics.scl.compiler.constants.SCLConstant;
+import org.simantics.scl.compiler.environment.Environment;
+import org.simantics.scl.compiler.internal.codegen.ssa.SSAModule;
+import org.simantics.scl.compiler.top.SCLCompilerConfiguration;
+
+public class SSASimplificationContext {
+ SSAModule module;
+ Environment environment;
+ boolean modified = false;
+ public static int modiId = 0;
+ int phase;
+
+ public SSASimplificationContext(SSAModule module, Environment environment, int phase) {
+ this.module = module;
+ this.environment = environment;
+ this.phase = phase;
+ }
+
+ public void markModified(String description) {
+ if(SCLCompilerConfiguration.PRINT_OPTIMIZATION_TRANSFORMATIONS)
+ System.out.println("(" + modiId + ") DID " + description);
+ modified = true;
+ if(SCLCompilerConfiguration.VALIDATE_AFTER_OPTIMIZATIONS)
+ module.validate();
+ ++ modiId;
+ }
+
+ public boolean didModify() {
+ return modified;
+ }
+
+ public Environment getEnvironment() {
+ return environment;
+ }
+
+ public int getPhase() {
+ return phase;
+ }
+
+ static int tempNameCount = 0;
+
+ public void addConstant(SCLConstant constant) {
+ module.put(constant.getName(), constant);
+ }
+
+ public SCLConstant removeConstant(Name name) {
+ return module.remove(name);
+ }
+
+ public void printConstant(Name name) {
+ System.out.println("--- " + name + " ---------------------------");
+ System.out.println(module.get(name));
+ }
+
+ public void validate() {
+ module.validate();
+ }
+}