X-Git-Url: https://gerrit.simantics.org/r/gitweb?a=blobdiff_plain;f=bundles%2Forg.simantics.scl.compiler%2Fsrc%2Forg%2Fsimantics%2Fscl%2Fcompiler%2Finternal%2Fcodegen%2Futils%2FSSASimplificationContext.java;fp=bundles%2Forg.simantics.scl.compiler%2Fsrc%2Forg%2Fsimantics%2Fscl%2Fcompiler%2Finternal%2Fcodegen%2Futils%2FSSASimplificationContext.java;h=2740a7866732e4435ff20c8c57cb7ccd718e9d91;hb=969bd23cab98a79ca9101af33334000879fb60c5;hp=0000000000000000000000000000000000000000;hpb=866dba5cd5a3929bbeae85991796acb212338a08;p=simantics%2Fplatform.git diff --git a/bundles/org.simantics.scl.compiler/src/org/simantics/scl/compiler/internal/codegen/utils/SSASimplificationContext.java b/bundles/org.simantics.scl.compiler/src/org/simantics/scl/compiler/internal/codegen/utils/SSASimplificationContext.java new file mode 100644 index 000000000..2740a7866 --- /dev/null +++ b/bundles/org.simantics.scl.compiler/src/org/simantics/scl/compiler/internal/codegen/utils/SSASimplificationContext.java @@ -0,0 +1,61 @@ +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(); + } +}