* src/vm/jit/powerpc/linux/md-abi.c (md_param_alloc): Cleaned up
[cacao.git] / src / vm / jit / code.h
index 171b4dee7c538e98773ea7f825869c455d4c0f0d..f23c1e25ba228f3be0bde3527697be150a98a6a8 100644 (file)
@@ -1,4 +1,4 @@
-/* vm/jit/code.h - codeinfo struct for representing compiled code
+/* src/vm/jit/code.h - codeinfo struct for representing compiled code
 
    Copyright (C) 1996-2005, 2006 R. Grafl, A. Krall, C. Kruegel,
    C. Oates, R. Obermaisser, M. Platter, M. Probst, S. Ring,
@@ -26,7 +26,7 @@
 
    Authors: Edwin Steiner
 
-   Changes:
+   Changes: Christian Thalinger
 
    $Id$
 
 #ifndef _CODE_H
 #define _CODE_H
 
+/* forward typedefs ***********************************************************/
+
+typedef struct codeinfo codeinfo;
+
 #include "config.h"
 #include "vm/types.h"
 
 #include "vm/method.h"
 #include "vm/jit/replace.h"
 
-/* A `codeinfo` represents a particular realization of a method in     */
-/* machine code.                                                       */
+
+/* codeinfo *******************************************************************
+
+   A codeinfo represents a particular realization of a method in
+   machine code.
+
+*******************************************************************************/
 
 struct codeinfo {
-       methodinfo   *m;                /* method this is a realization of */
-       codeinfo     *prev;             /* previous codeinfo of this method*/
-       
+       methodinfo   *m;                    /* method this is a realization of    */
+       codeinfo     *prev;                 /* previous codeinfo of this method   */
+
+       u1            optlevel;             /* optimization level of this code    */
+       s4            basicblockcount;      /* number of basic blocks             */
+
        /* machine code */
-       s4            mcodelength;      /* length of generated machine code*/
-       u1           *mcode;            /* pointer to machine code         */
-       u1           *entrypoint;       /* machine code entry point        */
-       bool          isleafmethod;     /* does method call subroutines    */
-
-       /* replacement */
-       rplpoint     *rplpoints;        /* replacement points              */
-       int           rplpointcount;    /* number of replacement points    */
-
-       /* register allocation */
-       u1           *regalloc;         /* register index for each local   */
-                                       /* variable                        */
-
-       /* profiling */
-       u4            frequency;        /* number of method invocations    */
-       u4           *bbfrequency;
-       s8            cycles;           /* number of cpu cycles            */
+       u1           *mcode;                /* pointer to machine code            */
+       u1           *entrypoint;           /* machine code entry point           */
+       s4            mcodelength;          /* length of generated machine code   */
+
+       /* replacement */                                   
+       rplpoint     *rplpoints;            /* replacement points                 */
+       rplalloc     *regalloc;             /* register allocation info           */
+       s4            rplpointcount;        /* number of replacement points       */
+       s4            globalcount;          /* number of global allocations       */
+       s4            regalloccount;        /* number of total allocations        */
+       s4            memuse;               /* number of arg + local slots        */
+       u1            savedintcount;        /* number of callee saved int regs    */
+       u1            savedfltcount;        /* number of callee saved flt regs    */
+
+       u4            frequency;            /* number of method invocations       */
+       u4           *bbfrequency;                  
+       s8            cycles;               /* number of cpu cycles               */
 };
 
+
+/* function prototypes ********************************************************/
+
 codeinfo *code_codeinfo_new(methodinfo *m);
 void code_codeinfo_free(codeinfo *code);
 
+int code_get_sync_slot_count(codeinfo *code);
+int code_get_stack_frame_size(codeinfo *code);
+
 void code_free_code_of_method(methodinfo *m);
 
 #endif /* _CODE_H */
 
+
 /*
  * These are local overrides for various environment variables in Emacs.
  * Please do not remove this and leave it at the end of the file, where