de.grogra.xl.vmx
Class AbruptCompletion.Nonlocal

java.lang.Object
  extended by java.lang.Throwable
      extended by java.lang.Error
          extended by de.grogra.xl.vmx.AbruptCompletion.Nonlocal
All Implemented Interfaces:
java.io.Serializable
Enclosing class:
AbruptCompletion

public static final class AbruptCompletion.Nonlocal
extends java.lang.Error

This class wraps an abrupt completion that has to be transferred (non-locally) to a statically containing routine invocation before Java's catching mechanism comes into play. It extends Error so that it is not catched and discarded by well-behaved Java programs (which would lead to improper behaviour of the non-local transfer mechanism).

Author:
Ole Kniemeyer
See Also:
Serialized Form

Method Summary
 AbruptCompletion getReason(Authorization auth)
          Returns the wrapped abrupt completion if the current frame of the VMXState corresponds to the frame that has been specified in VMXState.newNonlocal(int, AbruptCompletion, Authorization).
 
Methods inherited from class java.lang.Throwable
fillInStackTrace, getCause, getLocalizedMessage, getMessage, getStackTrace, initCause, printStackTrace, printStackTrace, printStackTrace, setStackTrace, toString
 
Methods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, wait, wait, wait
 

Method Detail

getReason

public AbruptCompletion getReason(Authorization auth)
Returns the wrapped abrupt completion if the current frame of the VMXState corresponds to the frame that has been specified in VMXState.newNonlocal(int, AbruptCompletion, Authorization). In this case, this instance is disposed and may be re-used by the VMXState. Otherwise, this instance is re-thrown in order to continue the non-local transfer of the reason.

Returns:
the wrapped abrupt completion