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);
- // 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_MODULE_UPDATE = parseBoolean("traceModuleUpdate", false);
- public static final boolean ALLOW_OVERLOADING = true;
+ // Flags related to too long method sizes
+ 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 = 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));
+ }
}