< prev index next >
src/jdk.internal.vm.compiler/share/classes/org.graalvm.compiler.debug/src/org/graalvm/compiler/debug/Assertions.java
Print this page
@@ -20,21 +20,43 @@
* or visit www.oracle.com if you need additional information or have any
* questions.
*/
package org.graalvm.compiler.debug;
+import org.graalvm.compiler.options.Option;
+import org.graalvm.compiler.options.OptionKey;
+import org.graalvm.compiler.options.OptionType;
+import org.graalvm.compiler.options.OptionValues;
+
/**
* Utility for query whether assertions are enabled.
*/
public class Assertions {
/**
* Determines if assertions are enabled. Strictly speaking, this may only be true for the
* {@link Assertions} class but we assume assertions are enabled/disabled for Graal as a whole.
*/
- public static final boolean ENABLED = assertionsEnabled();
-
- private static boolean assertionsEnabled() {
+ public static boolean assertionsEnabled() {
boolean enabled = false;
assert (enabled = true) == true;
return enabled;
}
+
+ /**
+ * Determines if detailed assertions are enabled. This requires that the normal assertions are
+ * also enabled.
+ *
+ * @param values the current OptionValues that might define a value for DetailAsserts.
+ */
+ public static boolean detailedAssertionsEnabled(OptionValues values) {
+ return assertionsEnabled() && Options.DetailedAsserts.getValue(values);
+ }
+
+ // @formatter:off
+ public static class Options {
+
+ @Option(help = "Enable expensive assertions. (Require normal assertions enabled)", type = OptionType.Debug)
+ public static final OptionKey<Boolean> DetailedAsserts = new OptionKey<>(true);
+
+ }
+ // @formatter:on
}
< prev index next >