/* * This file is part of the Jikes RVM project (http://jikesrvm.org). * * This file is licensed to You under the Eclipse Public License (EPL); * You may not use this file except in compliance with the License. You * may obtain a copy of the License at * * http://www.opensource.org/licenses/eclipse-1.0.php * * See the COPYRIGHT.txt file distributed with this work for information * regarding copyright ownership. */ package org.mmtk.vm; import org.vmmagic.pragma.Uninterruptible; @Uninterruptible public abstract class Assert { /** * Logs a message and traceback, then exits. * * @param message the string to log */ public abstract void fail(String message); /** * Checks that the given condition is true. If it is not, this * method does a traceback and exits. All calls to this method * must be guarded by <code>VM.VERIFY_ASSERTIONS</code>. * * @param cond the condition to be checked */ public abstract void _assert(boolean cond); /** * Checks that the given condition is true. If it is not, this * method prints a message, does a traceback and exits. All calls * to this method must be guarded by <code>VM.VERIFY_ASSERTIONS</code>. * * @param cond the condition to be checked * @param message the message to print */ public abstract void _assert(boolean cond, String message); /** * Print a stack trace */ public abstract void dumpStack(); /** * Checks if the virtual machine is running. This value changes, so * the call-through to the VM must be a method. In Jikes RVM, just * returns VM.runningVM. * * @return <code>true</code> if the virtual machine is running */ public abstract boolean runningVM(); /* * NOTE: The following methods must be implemented by subclasses of this * class, but are internal to the VM<->MM interface glue, so are never * called by MMTk users. */ /** @return true if assertions should be verified */ protected abstract boolean getVerifyAssertionsConstant(); /* * NOTE: This method should not be called by anything other than the * reflective mechanisms in org.mmtk.vm.VM, and is not implemented by * subclasses. * * This hack exists only to allow us to declare getVerifyAssertions() as * a protected method. */ static boolean verifyAssertionsTrapdoor(Assert a) { return a.getVerifyAssertionsConstant(); } }