/* src/vm/method.h - method functions header
- 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.
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: Christian Thalinger
- $Id: method.h 3969 2005-12-21 00:07:23Z twisti $
+ $Id: method.h 4421 2006-02-04 00:04:41Z edwin $
*/
struct methodinfo { /* method structure */
java_objectheader header; /* we need this in jit's monitorenter */
- s4 flags; /* ACC flags */
- utf *name; /* name of method */
- utf *descriptor; /* JavaVM descriptor string of method */
- methoddesc *parseddesc; /* parsed descriptor */
-
- s4 returntype; /* only temporary valid, return type */
- classinfo *returnclass; /* pointer to classinfo for the rtn type */ /*XTA*/
-
- s4 paramcount; /* only temporary valid, parameter count */
- u1 *paramtypes; /* only temporary valid, parameter types */
- classinfo **paramclass; /* pointer to classinfo for a parameter */ /*XTA*/
-
- bool isleafmethod; /* does method call subroutines */
-
- classinfo *class; /* class, the method belongs to */
- s4 vftblindex; /* index of method in virtual function */
+ s4 flags; /* ACC flags */
+ utf *name; /* name of method */
+ utf *descriptor; /* JavaVM descriptor string of method */
+ methoddesc *parseddesc; /* parsed descriptor */
+
+ bool isleafmethod; /* does method call subroutines */
+
+ classinfo *class; /* class, the method belongs to */
+ s4 vftblindex; /* index of method in virtual function */
/* table (if it is a virtual method) */
- s4 maxstack; /* maximum stack depth of method */
- s4 maxlocals; /* maximum number of local variables */
- s4 jcodelength; /* length of JavaVM code */
- u1 *jcode; /* pointer to JavaVM code */
-
- s4 basicblockcount; /* number of basic blocks */
- basicblock *basicblocks; /* points to basic block array */
- s4 *basicblockindex; /* a table which contains for every byte */
+ s4 maxstack; /* maximum stack depth of method */
+ s4 maxlocals; /* maximum number of local variables */
+ s4 jcodelength; /* length of JavaVM code */
+ u1 *jcode; /* pointer to JavaVM code */
+
+ s4 basicblockcount; /* number of basic blocks */
+ basicblock *basicblocks; /* points to basic block array */
+ s4 *basicblockindex; /* a table which contains for every byte */
/* of JavaVM code a basic block index if */
/* at this byte is the start of a basic */
/* block */
- s4 instructioncount; /* number of JavaVM instructions */
- instruction *instructions; /* points to intermediate code instr. */
+ s4 instructioncount; /* number of JavaVM instructions */
+ instruction *instructions; /* points to intermediate code instr. */
- s4 stackcount; /* number of stack elements */
- stackelement *stack; /* points to intermediate code instr. */
+ s4 stackcount; /* number of stack elements */
+ stackelement *stack; /* points to stack elements */
- s4 exceptiontablelength;/* exceptiontable length */
+ s4 exceptiontablelength; /* exceptiontable length */
exceptiontable *exceptiontable; /* the exceptiontable */
- u2 thrownexceptionscount;/* number of exceptions attribute */
+ u2 thrownexceptionscount; /* number of exceptions attribute */
classref_or_classinfo *thrownexceptions; /* except. a method may throw */
- u2 linenumbercount; /* number of linenumber attributes */
- lineinfo *linenumbers; /* array of lineinfo items */
+ u2 linenumbercount; /* number of linenumber attributes */
+ lineinfo *linenumbers; /* array of lineinfo items */
int c_debug_nr; /* a counter to number all BB with an */
/* unique value */
- u1 *stubroutine; /* stub for compiling or calling natives */
- s4 mcodelength; /* legth of generated machine code */
- u1 *mcode; /* pointer to machine code */
- u1 *entrypoint; /* entry point in machine code */
-
- /*rtainfo rta;*/
- xtainfo *xta;
-
- bool methodXTAparsed; /* true if xta parsed */
- s4 methodUsed; /* marked (might be used later) /not used /used */
- s4 monoPoly; /* call is mono or poly or unknown */ /*RT stats */
- /* should # method def'd and used be kept after static parse (will it be used?) */
- s4 subRedefs;
- s4 subRedefsUsed;
- s4 nativelyoverloaded; /* used in header.c and only valid there */
+ u1 *stubroutine; /* stub for compiling or calling natives */
+ s4 mcodelength; /* length of generated machine code */
+ u1 *mcode; /* pointer to machine code */
+ u1 *entrypoint; /* entry point in machine code */
#if defined(ENABLE_LSRA)
- s4 maxlifetimes; /* helper for lsra */
+ s4 maxlifetimes; /* helper for lsra */
#endif
+
+ u4 frequency; /* number of method invocations */
+ u4 *bbfrequency;
+
+ s8 cycles; /* number of cpu cycles */
};
void method_free(methodinfo *m);
bool method_canoverwrite(methodinfo *m, methodinfo *old);
-void method_display(methodinfo *m);
-void method_display_w_class(methodinfo *m);
-
-void method_descriptor2types(methodinfo *m);
+#if !defined(NDEBUG)
+void method_printflags(methodinfo *m);
+void method_print(methodinfo *m);
+void method_println(methodinfo *m);
+#endif
#endif /* _METHOD_H */
* c-basic-offset: 4
* tab-width: 4
* End:
+ * vim:noexpandtab:sw=4:ts=4:
*/