X-Git-Url: http://wien.tomnetworks.com/gitweb/?a=blobdiff_plain;f=src%2Fvm%2Fbuiltin.h;h=c21a3c292864514e909295c33cea0ec034741320;hb=d75b6037acf17c342166b9c9bd6e657dfdd12cd9;hp=4ecbac38bdd8b19b608a097f45d844a5a2765058;hpb=64e879ca33600bf13fe0d5bec005a1df65573c76;p=cacao.git diff --git a/src/vm/builtin.h b/src/vm/builtin.h index 4ecbac38b..c21a3c292 100644 --- a/src/vm/builtin.h +++ b/src/vm/builtin.h @@ -1,9 +1,9 @@ -/* builtin.h - prototypes of builtin functions +/* vm/builtin.h - prototypes of builtin functions - 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. @@ -28,7 +28,7 @@ Changes: Edwin Steiner - $Id: builtin.h 1027 2004-04-26 15:53:01Z twisti $ + $Id: builtin.h 1735 2004-12-07 14:33:27Z twisti $ */ @@ -36,9 +36,17 @@ #ifndef _BUILTIN_H #define _BUILTIN_H +#include "arch.h" #include "config.h" -#include "toolbox/loging.h" -#include "threads/thread.h" +#include "toolbox/logging.h" + +#if defined(USE_THREADS) +# if defined(NATIVE_THREADS) +# include "threads/native/threads.h" +# else +# include "threads/green/threads.h" +# endif +#endif /* define infinity for floating point numbers */ @@ -151,11 +159,11 @@ s4 builtin_instanceof(java_objectheader *obj, classinfo *class); #define BUILTIN_instanceof (functionptr) builtin_instanceof s4 builtin_isanysubclass (classinfo *sub, classinfo *super); /* NOT AN OP */ -s4 builtin_isanysubclass_vftbl (vftbl *sub, vftbl *super); +s4 builtin_isanysubclass_vftbl (vftbl_t *sub, vftbl_t *super); /* NOT AN OP */ s4 builtin_checkcast(java_objectheader *obj, classinfo *class); /* NOT AN OP */ -s4 builtin_arrayinstanceof(java_objectheader *obj, vftbl *target); +s4 builtin_arrayinstanceof(java_objectheader *obj, vftbl_t *target); #define BUILTIN_arrayinstanceof (functionptr) builtin_arrayinstanceof #if defined(__I386__) @@ -164,21 +172,18 @@ s4 asm_builtin_arrayinstanceof(java_objectheader *obj, classinfo *class); /* XXX #define BUILTIN_arrayinstanceof (functionptr) asm_builtin_arrayinstanceof #endif -s4 builtin_checkarraycast(java_objectheader *obj, vftbl *target); +s4 builtin_checkarraycast(java_objectheader *obj, vftbl_t *target); /* NOT AN OP */ -s4 asm_builtin_checkarraycast(java_objectheader *obj, vftbl *target); +s4 asm_builtin_checkarraycast(java_objectheader *obj, vftbl_t *target); #define BUILTIN_checkarraycast (functionptr) asm_builtin_checkarraycast java_objectheader *builtin_throw_exception(java_objectheader *exception); /* NOT AN OP */ -java_objectheader *builtin_trace_exception(java_objectheader *_exceptionptr, - methodinfo *method, - int *pos, int line, int noindent); -/* NOT AN OP */ - -static inline java_objectheader **builtin_get_exceptionptrptr(); -/* NOT AN OP */ -static inline methodinfo **builtin_get_threadrootmethod(); +java_objectheader *builtin_trace_exception(java_objectheader *xptr, + methodinfo *m, + void *pos, + s4 line, + s4 noindent); /* NOT AN OP */ java_objectheader *builtin_new(classinfo *c); @@ -189,13 +194,13 @@ java_objectheader *asm_builtin_new(classinfo *c); #define BUILTIN_new (functionptr) builtin_new #endif -java_arrayheader *builtin_newarray(s4 size, vftbl *arrayvftbl); +java_arrayheader *builtin_newarray(s4 size, vftbl_t *arrayvftbl); #define BUILTIN_newarray (functionptr) builtin_newarray java_objectarray *builtin_anewarray(s4 size, classinfo *component); /* NOT AN OP */ #if defined(__I386__) -void asm_builtin_newarray(s4 size, vftbl *arrayvftbl); +void asm_builtin_newarray(s4 size, vftbl_t *arrayvftbl); #undef BUILTIN_newarray #define BUILTIN_newarray (functionptr) asm_builtin_newarray #endif @@ -216,7 +221,7 @@ java_intarray *builtin_newarray_int(s4 size); #define BUILTIN_newarray_int (functionptr) builtin_newarray_int java_longarray *builtin_newarray_long(s4 size); #define BUILTIN_newarray_long (functionptr) builtin_newarray_long -java_arrayheader *builtin_nmultianewarray(int n, vftbl *arrayvftbl, long *dims); +java_arrayheader *builtin_nmultianewarray(int n, vftbl_t *arrayvftbl, long *dims); /* java_arrayheader *builtin_nmultianewarray(int n, classinfo *arrayclass, long *dims); */ /* NOT AN OP */ @@ -227,25 +232,27 @@ void asm_builtin_aastore(java_objectarray *a, s4 index, java_objectheader *o); #ifdef TRACE_ARGS_NUM #if TRACE_ARGS_NUM == 6 -void builtin_trace_args(s8 a0, s8 a1, s8 a2, s8 a3, s8 a4, s8 a5, methodinfo *method); +void builtin_trace_args(s8 a0, s8 a1, s8 a2, s8 a3, s8 a4, s8 a5, methodinfo *m); /* NOT AN OP */ #else -void builtin_trace_args(s8 a0, s8 a1, s8 a2, s8 a3, s8 a4, s8 a5, s8 a6, s8 a7, methodinfo *method); +void builtin_trace_args(s8 a0, s8 a1, s8 a2, s8 a3, s8 a4, s8 a5, s8 a6, s8 a7, methodinfo *m); /* NOT AN OP */ #endif #endif -void builtin_displaymethodstart(methodinfo *method); +void builtin_displaymethodstart(methodinfo *m); /* NOT AN OP */ -void builtin_displaymethodstop(methodinfo *method, s8 l, double d, float f); +void builtin_displaymethodstop(methodinfo *m, s8 l, double d, float f); /* NOT AN OP */ void builtin_monitorenter(java_objectheader *o); /* NOT AN OP */ +void builtin_staticmonitorenter(classinfo *c); +/* NOT AN OP */ void asm_builtin_monitorenter(java_objectheader *o); #define BUILTIN_monitorenter (functionptr) asm_builtin_monitorenter -void builtin_monitorexit(java_objectheader *o); +void *builtin_monitorexit(java_objectheader *o); /* NOT AN OP */ -void asm_builtin_monitorexit(java_objectheader *o); +void *asm_builtin_monitorexit(java_objectheader *o); #define BUILTIN_monitorexit (functionptr) asm_builtin_monitorexit s4 builtin_idiv(s4 a, s4 b); @@ -373,25 +380,23 @@ inline float longBitsToDouble(s8 l); /* this is a wrapper for calls from asmpart */ java_objectheader **builtin_asm_get_exceptionptrptr(); +#if defined(USE_THREADS) && defined(NATIVE_THREADS) +static inline java_objectheader **builtin_get_exceptionptrptr(); +/* NOT AN OP */ +static inline methodinfo **builtin_get_threadrootmethod(); +/* NOT AN OP */ + inline java_objectheader **builtin_get_exceptionptrptr() { -#if defined(USE_THREADS) && defined(NATIVE_THREADS) return &THREADINFO->_exceptionptr; -#else - panic("builtin_get_exceptionptrptr should not be used in this configuration"); - return NULL; -#endif } inline methodinfo **builtin_get_threadrootmethod() { -#if defined(USE_THREADS) && defined(NATIVE_THREADS) return &THREADINFO->_threadrootmethod; -#else - panic("builting_get_threadrootmethod should not be used in this configuration"); - return NULL; -#endif } +#endif + /* returns the root method of a thread. this is used in asmpart.S and delivers the abort condition for the stack unwinding for getClassContext and getClassLoader. For the main thread this is the main function.