1 package org.simantics.scl.compiler.top;
4 public interface SCLCompilerConfiguration {
6 static final String KEY_PREFIX = "org.simantics.scl.compiler.";
8 public static final boolean DEBUG = parseBoolean("debug", false);
9 public static final boolean ENABLE_TIMING = parseBoolean("enableTiming", false);
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);
17 public static final boolean SHOW_EXPRESSION_BEFORE_EVALUATION = parseBoolean("showExpressionBeforeEvaluation", false);
18 public static final boolean SHOW_INTERPRETED_EXPRESSION = parseBoolean("showInterpretedExpression", false);
20 public static final boolean SHOW_COMPILED_RULES = parseBoolean("showCompiledRules", false);
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);
26 public static final boolean NULL_CHECK_THREAD_LOCAL_VARIABLES = parseBoolean("nullCheckThreadLocalVariables", false);
28 public static final boolean TRACE_METHOD_CREATION = parseBoolean("traceMethodCreation", false);
30 public static final boolean TRACE_MODULE_UPDATE = parseBoolean("traceModuleUpdate", false);
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);
37 public static final boolean ALLOW_OVERLOADING = parseBoolean("allowOverloading", true);
39 public static boolean debugFilter(String name) {
43 static boolean parseBoolean(String property, boolean defaultValue) {
44 return defaultValue || Boolean.parseBoolean(System.getProperty(KEY_PREFIX + property));