X-Git-Url: http://wien.tomnetworks.com/gitweb/?a=blobdiff_plain;f=src%2Fvm%2Fbuiltin.h;h=1859a497f4f88fe44f8affaf4afbf786ab6caeaf;hb=6afa05a15756bddf02e9750d18a5c1dd30784104;hp=7cd55a780eeabc4c21723be5e8b6f4bc82380305;hpb=1aa91ea3d479d508aaefd70324b59d219135bf13;p=cacao.git diff --git a/src/vm/builtin.h b/src/vm/builtin.h index 7cd55a780..1859a497f 100644 --- a/src/vm/builtin.h +++ b/src/vm/builtin.h @@ -1,9 +1,9 @@ /* src/vm/builtin.h - prototypes of builtin functions - 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 + Copyright (C) 1996-2005, 2006 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. @@ -19,17 +19,17 @@ You should have received a copy of the GNU General Public License along with this program; if not, write to the Free Software - Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA - 02111-1307, USA. + Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA + 02110-1301, USA. - Contact: cacao@complang.tuwien.ac.at + Contact: cacao@cacaojvm.org Authors: Reinhard Grafl Changes: Edwin Steiner Christian Thalinger - $Id: builtin.h 3562 2005-11-04 16:20:54Z twisti $ + $Id: builtin.h 5332 2006-09-05 19:38:28Z twisti $ */ @@ -42,12 +42,8 @@ #include "arch.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 +#if defined(ENABLE_THREADS) +# include "threads/native/threads.h" #endif #include "vm/jit/stacktrace.h" @@ -81,8 +77,13 @@ typedef struct builtintable_entry builtintable_entry; struct builtintable_entry { s4 opcode; /* opcode which is replaced */ functionptr fp; /* function pointer of builtin */ - char *descriptor; - char *name; + char *cclassname; /* char name of the class */ + char *cname; /* char name of the function */ + char *cdescriptor; /* char name of the descriptor */ + utf *classname; /* class of the function */ + utf *name; /* name of the function */ + utf *descriptor; /* descriptor of the function */ + bool checkexception; /* check for exception after return */ methoddesc *md; }; @@ -94,6 +95,8 @@ bool builtin_init(void); builtintable_entry *builtintable_get_internal(functionptr fp); builtintable_entry *builtintable_get_automatic(s4 opcode); +bool builtintable_replace_function(instruction *iptr); + /**********************************************************************/ /* BUILTIN FUNCTIONS */ @@ -133,7 +136,7 @@ s4 builtin_arrayinstanceof(java_objectheader *o, classinfo *targetclass); s4 builtin_arraycheckcast(java_objectheader *o, classinfo *targetclass); #define BUILTIN_arraycheckcast (functionptr) builtin_arraycheckcast -java_objectheader *builtin_throw_exception(java_objectheader *exception); +void *builtin_throw_exception(java_objectheader *exception); /* NOT AN OP */ java_objectheader *builtin_trace_exception(java_objectheader *xptr, methodinfo *m, @@ -171,7 +174,7 @@ java_arrayheader *builtin_multianewarray(int n, classinfo *arrayclass, long *dims); #define BUILTIN_multianewarray (functionptr) builtin_multianewarray -s4 builtin_canstore(java_objectarray *a, java_objectheader *o); +s4 builtin_canstore(java_objectarray *oa, java_objectheader *o); #define BUILTIN_canstore (functionptr) builtin_canstore #if defined(TRACE_ARGS_NUM) @@ -192,15 +195,6 @@ void builtin_trace_args(s8 a0, s8 a1, void builtin_displaymethodstop(methodinfo *m, s8 l, double d, float f); /* NOT AN OP */ -#if defined(USE_THREADS) -void builtin_monitorenter(java_objectheader *o); -#define BUILTIN_monitorenter (functionptr) builtin_monitorenter -void builtin_staticmonitorenter(classinfo *c); -#define BUILTIN_staticmonitorenter (functionptr) builtin_staticmonitorenter -void builtin_monitorexit(java_objectheader *o); -#define BUILTIN_monitorexit (functionptr) builtin_monitorexit -#endif - s4 builtin_idiv(s4 a, s4 b); #define BUILTIN_idiv (functionptr) builtin_idiv s4 builtin_irem(s4 a, s4 b); @@ -309,16 +303,15 @@ float builtin_d2f(double a); java_arrayheader *builtin_clone_array(void *env, java_arrayheader *o); /* NOT AN OP */ -/* this is a wrapper for calls from asmpart */ -java_objectheader **builtin_asm_get_exceptionptrptr(void); +bool builtin_arraycopy(java_arrayheader *src, s4 srcStart, + java_arrayheader *dest, s4 destStart, s4 len); +#define BUILTIN_arraycopy (functionptr) builtin_arraycopy -#if defined(USE_THREADS) && defined(NATIVE_THREADS) -static inline java_objectheader **builtin_get_exceptionptrptr(void); +s8 builtin_currenttimemillis(void); +#define BUILTIN_currenttimemillis (functionptr) builtin_currenttimemillis -inline java_objectheader **builtin_get_exceptionptrptr(void) -{ - return &THREADINFO->_exceptionptr; -} +#if defined(ENABLE_CYCLES_STATS) +void builtin_print_cycles_stats(FILE *file); #endif #endif /* _BUILTIN_H */