]> gerrit.simantics Code Review - simantics/platform.git/blob - 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
1 package org.simantics.scl.compiler.top;
2
3
4 public interface SCLCompilerConfiguration {
5
6     static final String KEY_PREFIX = "org.simantics.scl.compiler.";
7     
8     public static final boolean DEBUG = parseBoolean("debug", false);
9     public static final boolean ENABLE_TIMING = parseBoolean("enableTiming", false);
10     
11     public static final boolean SHOW_SSA_BEFORE_OPTIMIZATION        = parseBoolean("showSsaBeforeOptimization", false);
12     public static final boolean SHOW_SSA_BEFORE_LAMBDA_LIFTING      = parseBoolean("showSsaBeforeLambdaLifting", false);
13     public static final boolean SHOW_FINAL_SSA                      = parseBoolean("showFinalSsa", false);
14     public static final boolean SHOW_COMPILED_BYTECODE              = parseBoolean("showCompiledBytecode", false);
15     public static final boolean SHOW_DECOMPILED_BYTECODE            = parseBoolean("showDecompiledBytecode", false);
16     
17     public static final boolean SHOW_EXPRESSION_BEFORE_EVALUATION   = parseBoolean("showExpressionBeforeEvaluation", false);
18     public static final boolean SHOW_INTERPRETED_EXPRESSION         = parseBoolean("showInterpretedExpression", false);
19     
20     public static final boolean SHOW_COMPILED_RULES                 = parseBoolean("showCompiledRules", false);
21     
22     public static final boolean VALIDATE_AFTER_OPTIMIZATIONS        = parseBoolean("validateAfterOptimizations", false);
23     public static final boolean TRACE_CONSTRAINT_SOLVER             = parseBoolean("traceConstraintSolver", false);
24     public static final boolean PRINT_OPTIMIZATION_TRANSFORMATIONS  = parseBoolean("printOptimizationTransformations", false);
25     
26     public static final boolean NULL_CHECK_THREAD_LOCAL_VARIABLES   = parseBoolean("nullCheckThreadLocalVariables", false);
27     
28     public static final boolean TRACE_METHOD_CREATION               = parseBoolean("traceMethodCreation", false);
29     
30     public static final boolean TRACE_MODULE_UPDATE                 = parseBoolean("traceModuleUpdate", false);
31     
32     // Flags related to too long method sizes
33     public static final boolean TRACE_MAX_METHOD_SIZE               = parseBoolean("traceMaxMethodSize", false);
34     public static final boolean EVERY_RULE_ENFORCEMENT_IN_SEPARATE_METHOD = parseBoolean("everyRuleEnforcementInSeparateMethod", true);
35     public static final boolean EVERY_DATALOG_STRATUM_IN_SEPARATE_METHOD = parseBoolean("everyDatalogStratumInSeparateMethod", true);
36     
37     public static final boolean ALLOW_OVERLOADING = parseBoolean("allowOverloading", true);
38
39     public static boolean debugFilter(String name) {
40         return true;
41     }
42
43     static boolean parseBoolean(String property, boolean defaultValue) {
44         return defaultValue || Boolean.parseBoolean(System.getProperty(KEY_PREFIX + property));
45     }
46 }