blob: 92ad10c75a4dc1aa11d3e1cfa8e76446760af15b [file] [log] [blame]
/*
* 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();
}
}