< 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 >