X-Git-Url: http://wien.tomnetworks.com/gitweb/?a=blobdiff_plain;f=src%2Fvm%2Fexceptions.h;h=cc9ff6bef110cfa22b2a7585c9049623edb02c5d;hb=da49fa899f1ba447e4ee376a87729e43fde8754c;hp=c30d0f4900970edd563cdcac6225871e0f92aa81;hpb=e63f9f8186618b00df9d4b02dd27ecf0cbbaee3b;p=cacao.git diff --git a/src/vm/exceptions.h b/src/vm/exceptions.h index c30d0f490..cc9ff6bef 100644 --- a/src/vm/exceptions.h +++ b/src/vm/exceptions.h @@ -1,9 +1,9 @@ -/* exceptions.h - exception related functions prototypes +/* src/vm/exceptions.h - exception related functions prototypes - Copyright (C) 1996, 1997, 1998, 1999, 2000, 2001, 2002, 2003 - R. Grafl, A. Krall, C. Kruegel, C. Oates, R. Obermaisser, - M. Probst, S. Ring, E. Steiner, C. Thalinger, D. Thuernbeck, - P. Tomsich, J. Wenninger + Copyright (C) 1996-2005 R. Grafl, A. Krall, C. Kruegel, C. Oates, + R. Obermaisser, M. Platter, M. Probst, S. Ring, E. Steiner, + C. Thalinger, D. Thuernbeck, P. Tomsich, C. Ullrich, J. Wenninger, + Institut f. Computersprachen - TU Wien This file is part of CACAO. @@ -26,7 +26,9 @@ Authors: Christian Thalinger - $Id: exceptions.h 1410 2004-08-17 13:01:24Z twisti $ + Changes: Edwin Steiner + + $Id: exceptions.h 3653 2005-11-11 11:16:42Z twisti $ */ @@ -34,103 +36,95 @@ #ifndef _EXCEPTIONS_H #define _EXCEPTIONS_H +#include "config.h" +#include "vm/types.h" -#include "global.h" -#include "nat/java_lang_String.h" -#include "nat/java_lang_Throwable.h" +#include "vm/global.h" +#include "native/include/java_lang_String.h" +#include "native/include/java_lang_Throwable.h" +#include "vm/builtin.h" +#include "vm/references.h" +#include "vm/method.h" -/* system exception classes required in cacao */ +#if defined(USE_THREADS) && defined(NATIVE_THREADS) +#define exceptionptr builtin_get_exceptionptrptr() +#else +#define exceptionptr &_no_threads_exceptionptr +#endif -extern classinfo *class_java_lang_Throwable; -extern classinfo *class_java_lang_Exception; -extern classinfo *class_java_lang_Error; -extern classinfo *class_java_lang_OutOfMemoryError; +#if !defined(USE_THREADS) || !defined(NATIVE_THREADS) +extern java_objectheader *_no_threads_exceptionptr; +#endif -/* exception/error super class */ +/* global variables ***********************************************************/ -extern char *string_java_lang_Throwable; +/* function prototypes ********************************************************/ -/* specify some exception strings for code generation */ +/* load and link exceptions used in the system */ -extern char *string_java_lang_ArithmeticException; -extern char *string_java_lang_ArithmeticException_message; -extern char *string_java_lang_ArrayIndexOutOfBoundsException; -extern char *string_java_lang_ArrayStoreException; -extern char *string_java_lang_ClassCastException; -extern char *string_java_lang_ClassNotFoundException; -extern char *string_java_lang_CloneNotSupportedException; -extern char *string_java_lang_Exception; -extern char *string_java_lang_IllegalArgumentException; -extern char *string_java_lang_IllegalMonitorStateException; -extern char *string_java_lang_IndexOutOfBoundsException; -extern char *string_java_lang_InterruptedException; -extern char *string_java_lang_NegativeArraySizeException; -extern char *string_java_lang_NoSuchFieldException; -extern char *string_java_lang_NoSuchMethodException; -extern char *string_java_lang_NullPointerException; +bool exceptions_init(void); -/* specify some error strings for code generation */ +/* exception throwing functions */ -extern char *string_java_lang_AbstractMethodError; -extern char *string_java_lang_ClassCircularityError; -extern char *string_java_lang_ClassFormatError; -extern char *string_java_lang_Error; -extern char *string_java_lang_ExceptionInInitializerError; -extern char *string_java_lang_IncompatibleClassChangeError; -extern char *string_java_lang_InternalError; -extern char *string_java_lang_LinkageError; -extern char *string_java_lang_NoClassDefFoundError; -extern char *string_java_lang_NoSuchFieldError; -extern char *string_java_lang_NoSuchMethodError; -extern char *string_java_lang_OutOfMemoryError; -extern char *string_java_lang_UnsupportedClassVersionError; -extern char *string_java_lang_VerifyError; -extern char *string_java_lang_VirtualMachineError; +void throw_exception(void); +void throw_exception_exit(void); +void throw_main_exception(void); +void throw_main_exception_exit(void); -/* function prototypes */ +void throw_cacao_exception_exit(const char *exception, + const char *message, ...); -/* load, link and compile exceptions used in the system */ +void exceptions_throw_outofmemory_exit(void); -void init_system_exceptions(); +/* initialize new exceptions */ -/* exception throwing functions */ +java_objectheader *new_exception(const char *classname); -void throw_exception(); -void throw_exception_exit(); +java_objectheader *new_exception_message(const char *classname, + const char *message); -void throw_main_exception(); -void throw_main_exception_exit(); +java_objectheader *new_exception_throwable(const char *classname, + java_lang_Throwable *cause); -void throw_cacao_exception_exit(char *exception, char *message); +java_objectheader *new_exception_utfmessage(const char *classname, + utf *message); +java_objectheader *new_exception_javastring(const char *classname, + java_lang_String *message); -/* initialize new exceptions */ - -java_objectheader *new_exception(char *classname); -java_objectheader *new_exception_message(char *classname, char *message); -java_objectheader *new_exception_throwable(char *classname, java_lang_Throwable *cause); -java_objectheader *new_exception_utfmessage(char *classname, utf *message); -java_objectheader *new_exception_javastring(char *classname, java_lang_String *message); -java_objectheader *new_exception_int(char *classname, s4 i); +java_objectheader *new_exception_int(const char *classname, s4 i); /* functions to generate compiler exceptions */ -java_objectheader *new_classformaterror(classinfo *c, char *message, ...); -java_objectheader *new_verifyerror(methodinfo *m, char *message); -java_objectheader *new_unsupportedclassversionerror(classinfo *c, char *message, ...); - -java_objectheader *new_arithmeticexception(); +java_objectheader *new_classformaterror(classinfo *c, const char *message, ...); +java_objectheader *new_classnotfoundexception(utf *name); +java_objectheader *new_noclassdeffounderror(utf *name); +java_objectheader *exceptions_new_nosuchmethoderror(classinfo *c, + utf *name, utf *desc); +java_objectheader *new_internalerror(const char *message, ...); +java_objectheader *new_verifyerror(methodinfo *m, const char *message, ...); +java_objectheader *new_unsupportedclassversionerror(classinfo *c, + const char *message, ...); + +java_objectheader *new_arithmeticexception(void); java_objectheader *new_arrayindexoutofboundsexception(s4 index); -java_objectheader *new_classcastexception(); -java_objectheader *new_negativearraysizeexception(); -java_objectheader *new_nullpointerexception(); +java_objectheader *new_arraystoreexception(void); +java_objectheader *new_classcastexception(void); +java_objectheader *new_illegalargumentexception(void); +java_objectheader *new_illegalmonitorstateexception(void); +java_objectheader *new_negativearraysizeexception(void); +java_objectheader *new_nullpointerexception(void); + +void classnotfoundexception_to_noclassdeffounderror(void); + +void exceptions_print_exception(java_objectheader *xptr); #endif /* _EXCEPTIONS_H */