* Removed all Id tags.
[cacao.git] / src / vm / jit / code.h
index 60ad5147e9d3d7877d3e61a0a48e6e4a0272e8a1..206d1a5ea10a720649442a719aade61e0d7b07d9 100644 (file)
@@ -1,6 +1,6 @@
 /* src/vm/jit/code.h - codeinfo struct for representing compiled code
 
-   Copyright (C) 1996-2005, 2006 R. Grafl, A. Krall, C. Kruegel,
+   Copyright (C) 1996-2005, 2006, 2007 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
    Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA
    02110-1301, USA.
 
-   Contact: cacao@cacaojvm.org
-
-   Authors: Edwin Steiner
-            Christian Thalinger
-
-   $Id$
-
 */
 
 
 
 /* forward typedefs ***********************************************************/
 
-typedef struct codeinfo codeinfo;
-
 #include "config.h"
 #include "vm/types.h"
 
+#include "toolbox/list.h"
+
 #include "vm/global.h"
-#include "vm/method.h"
+
 #include "vm/jit/replace.h"
 
+#include "vmcore/method.h"
+
 
 /* constants ******************************************************************/
 
@@ -78,11 +73,13 @@ struct codeinfo {
        u1           *entrypoint;           /* machine code entry point           */
        s4            mcodelength;          /* length of generated machine code   */
 
+       /* patcher list */
+       list_t       *patchers;
+
        /* replacement */                                   
 #if defined(ENABLE_REPLACEMENT)
        rplpoint     *rplpoints;            /* replacement points                 */
        rplalloc     *regalloc;             /* register allocation info           */
-       u1           *replacementstubs;     /* beginning of replacement stubs     */
        s4            rplpointcount;        /* number of replacement points       */
        s4            globalcount;          /* number of global allocations       */
        s4            regalloccount;        /* number of total allocations        */
@@ -90,12 +87,17 @@ struct codeinfo {
        s4            stackframesize;       /* size of the stackframe in slots    */
        u1            savedintcount;        /* number of callee saved int regs    */
        u1            savedfltcount;        /* number of callee saved flt regs    */
+# if defined(HAS_ADDRESS_REGISTER_FILE)
+       u1            savedadrcount;        /* number of callee saved adr regs    */
+# endif
        u1           *savedmcode;           /* saved code under patches           */
-#endif /* defined(ENABLE_REPLACEMENT) */
+#endif
 
+#if defined(ENABLE_PROFILING)
        u4            frequency;            /* number of method invocations       */
        u4           *bbfrequency;                  
        s8            cycles;               /* number of cpu cycles               */
+#endif
 };
 
 
@@ -120,9 +122,10 @@ void code_codeinfo_free(codeinfo *code);
 
 codeinfo *code_find_codeinfo_for_pc(u1 *pc);
 
+methodinfo *code_get_methodinfo_for_pv(u1 *pv);
+
 #if defined(ENABLE_REPLACEMENT)
 int code_get_sync_slot_count(codeinfo *code);
-int code_get_stack_frame_size(codeinfo *code);
 #endif /* defined(ENABLE_REPLACEMENT) */
 
 void code_free_code_of_method(methodinfo *m);