]> gerrit.simantics Code Review - simantics/platform.git/blobdiff - bundles/org.simantics.scl.compiler/src/org/simantics/scl/compiler/top/SCLCompilerConfiguration.java
Make it possible to debug SCL compiler in production builds
[simantics/platform.git] / bundles / org.simantics.scl.compiler / src / org / simantics / scl / compiler / top / SCLCompilerConfiguration.java
index 1331530dda6dfe5249fda811387f850d8022e6c4..5f45852e36c4e269df060017d72e153fc1204780 100644 (file)
@@ -3,39 +3,44 @@ package org.simantics.scl.compiler.top;
 
 public interface SCLCompilerConfiguration {
 
-    public static final boolean DEBUG = false;
-    public static final boolean ENABLE_TIMING = false;
+    static final String KEY_PREFIX = "org.simantics.scl.compiler.";
     
-    public static final boolean SHOW_SSA_BEFORE_OPTIMIZATION = false;
-    public static final boolean SHOW_SSA_BEFORE_LAMBDA_LIFTING = false;
-    public static final boolean SHOW_FINAL_SSA = false;
-    public static final boolean SHOW_COMPILED_BYTECODE = false;
-    public static final boolean SHOW_DECOMPILED_BYTECODE = false;
+    public static final boolean DEBUG = parseBoolean("debug", false);
+    public static final boolean ENABLE_TIMING = parseBoolean("enableTiming", false);
     
-    public static final boolean SHOW_EXPRESSION_BEFORE_EVALUATION = false;
-    public static final boolean SHOW_INTERPRETED_EXPRESSION = false;
+    public static final boolean SHOW_SSA_BEFORE_OPTIMIZATION        = parseBoolean("showSsaBeforeOptimization", false);
+    public static final boolean SHOW_SSA_BEFORE_LAMBDA_LIFTING      = parseBoolean("showSsaBeforeLambdaLifting", false);
+    public static final boolean SHOW_FINAL_SSA                      = parseBoolean("showFinalSsa", false);
+    public static final boolean SHOW_COMPILED_BYTECODE              = parseBoolean("showCompiledBytecode", false);
+    public static final boolean SHOW_DECOMPILED_BYTECODE            = parseBoolean("showDecompiledBytecode", false);
     
-    public static final boolean SHOW_COMPILED_RULES = false;
+    public static final boolean SHOW_EXPRESSION_BEFORE_EVALUATION   = parseBoolean("showExpressionBeforeEvaluation", false);
+    public static final boolean SHOW_INTERPRETED_EXPRESSION         = parseBoolean("showInterpretedExpression", false);
     
-    public static final boolean VALIDATE_AFTER_OPTIMIZATIONS = false;
-    public static final boolean TRACE_CONSTRAINT_SOLVER = false;
-    public static final boolean PRINT_OPTIMIZATION_TRANSFORMATIONS = false;
+    public static final boolean SHOW_COMPILED_RULES                 = parseBoolean("showCompiledRules", false);
     
-    public static final boolean NULL_CHECK_THREAD_LOCAL_VARIABLES = false;
+    public static final boolean VALIDATE_AFTER_OPTIMIZATIONS        = parseBoolean("validateAfterOptimizations", false);
+    public static final boolean TRACE_CONSTRAINT_SOLVER             = parseBoolean("traceConstraintSolver", false);
+    public static final boolean PRINT_OPTIMIZATION_TRANSFORMATIONS  = parseBoolean("printOptimizationTransformations", false);
     
-    public static final boolean TRACE_METHOD_CREATION = false;
+    public static final boolean NULL_CHECK_THREAD_LOCAL_VARIABLES   = parseBoolean("nullCheckThreadLocalVariables", false);
     
-    public static final boolean TRACE_MODULE_UPDATE = false;
+    public static final boolean TRACE_METHOD_CREATION               = parseBoolean("traceMethodCreation", false);
+    
+    public static final boolean TRACE_MODULE_UPDATE                 = parseBoolean("traceModuleUpdate", false);
     
     // Flags related to too long method sizes
-    public static final boolean TRACE_MAX_METHOD_SIZE = false;
-    public static final boolean EVERY_RULE_ENFORCEMENT_IN_SEPARATE_METHOD = true;
-    public static final boolean EVERY_DATALOG_STRATUM_IN_SEPARATE_METHOD = true;
+    public static final boolean TRACE_MAX_METHOD_SIZE               = parseBoolean("traceMaxMethodSize", false);
+    public static final boolean EVERY_RULE_ENFORCEMENT_IN_SEPARATE_METHOD = parseBoolean("everyRuleEnforcementInSeparateMethod", true);
+    public static final boolean EVERY_DATALOG_STRATUM_IN_SEPARATE_METHOD = parseBoolean("everyDatalogStratumInSeparateMethod", true);
     
-    public static final boolean ALLOW_OVERLOADING = true;
+    public static final boolean ALLOW_OVERLOADING = parseBoolean("allowOverloading", true);
 
     public static boolean debugFilter(String name) {
         return true;
     }
-    
+
+    static boolean parseBoolean(String property, boolean defaultValue) {
+        return defaultValue || Boolean.parseBoolean(System.getProperty(KEY_PREFIX + property));
+    }
 }