All Downloads are FREE. Search and download functionalities are using the official Maven repository.

e.s.java.lang.Throwable Maven / Gradle / Ivy

There is a newer version: 0.9.6
Show newest version
package e.s.java.lang;

import i.RuntimeAssertionError;

/**
 * All the exceptions in the guest environment need to be wrapped by something which is _actually_ a java.lang.Throwable.
 * When we need to look up the wrapper for a given type, we will prepend "e." to its qualified name.
 * Hence, this is the root of that entire hierarchy since all exceptions eventually reach back to "java.lang.Throwable".
 * 
 * NOTE:  The java.lang.* exception types have 3 occurrences, and this should be explained:
 * -"java.lang.*" - These are the real types and are only generated by the JVM.  We wrap them with a shadow object, as soon as we can.
 * -"org.aion.avm.java.lang.*" - These are shadow objects which we actually pass around and which can be accessed by the guest code.
 * -"e.java.lang.*" - These are just temporary wrappers of the shadow objects which only exist to satisfy
 * throw/catch semantics.
 * Only the "org.aion.avm.java.lang.*" instances are ever touched by user code.
 * 
 * The sub-classes of this are generated, since all sub-classes contain just the single unwrappable object.
 */
public class Throwable extends java.lang.Throwable {
    private static final long serialVersionUID = 1L;

    private final Object wrapped;

    public Throwable(Object wrapped) {
        // There is no way that this should be created with a null.
        RuntimeAssertionError.assertTrue(null != wrapped);
        this.wrapped = wrapped;
    }

    public Object unwrap() {
        return this.wrapped;
    }
}




© 2015 - 2025 Weber Informatics LLC | Privacy Policy