* src/vm/jit/trap.cpp (trap_handle): Adapted to support "reusable trap points".
[cacao.git] / src / vm / jit / patcher-common.hpp
index 7a10d4d22cf278dadb0fb84425ab15672169308f..3f488809e74e7e37e5cf46d8b294dd526654ba80 100644 (file)
@@ -1,6 +1,6 @@
 /* src/vm/jit/patcher-common.hpp - architecture independent code patching stuff
 
-   Copyright (C) 2007, 2008
+   Copyright (C) 2007, 2008, 2009
    CACAOVM - Verein zur Foerderung der freien virtuellen Maschine CACAO
 
    This file is part of CACAO.
@@ -28,7 +28,6 @@
 
 /* forward typedefs ***********************************************************/
 
-typedef struct cachedref_t cachedref_t;
 typedef struct patchref_t patchref_t;
 
 #include "config.h"
@@ -40,9 +39,6 @@ typedef struct patchref_t patchref_t;
 
 #include "vm/jit/jit.hpp"
 
-#if defined (ENABLE_JITCACHE)
-struct cached_ref_t;
-#endif
 
 /* patchref_t ******************************************************************
 
@@ -59,11 +55,6 @@ struct patchref_t {
        void*        ref;           /* reference passed                           */
        uint32_t     mcode;         /* machine code to be patched back in         */
        bool         done;          /* XXX preliminary: patch already applied?    */
-#if defined (ENABLE_JITCACHE)
-       cachedref_t  *attached_ref;
-                                                               /* cached reference which must be resolved    *
-                                                                * patcher has been run.                      */
-#endif
 };
 
 
@@ -80,6 +71,10 @@ void patcher_list_create(codeinfo *code);
 void patcher_list_reset(codeinfo *code);
 void patcher_list_free(codeinfo *code);
 
+#if !defined(NDEBUG)
+void patcher_list_show(codeinfo *code);
+#endif
+
 void patcher_add_patch_ref(jitdata *jd, functionptr patcher, void* ref, s4 disp);
 
 void patcher_resolve(jitdata* jd);
@@ -90,7 +85,7 @@ bool patcher_is_patched_at(void* pc);
 // MD function.
 bool patcher_is_valid_trap_instruction_at(void* pc);
 
-java_handle_t *patcher_handler(u1 *pc);
+bool patcher_handler(u1 *pc);
 
 
 /* empty patcher (just patches back original mcode) ***************************/
@@ -123,6 +118,9 @@ bool patcher_resolve_classref_to_flags(patchref_t *pr);
 bool patcher_resolve_native_function(patchref_t *pr);
 #define PATCHER_resolve_native_function (functionptr) patcher_resolve_native_function
 
+bool patcher_breakpoint(patchref_t *pr);
+#define PATCHER_breakpoint (functionptr) patcher_breakpoint
+
 /* old patcher functions */
 
 bool patcher_get_putstatic(patchref_t *pr);
@@ -198,10 +196,6 @@ bool patcher_instanceof_class(patchref_t *pr);
 
 #endif /* defined(__I386__) */
 
-#if defined (__ARM__)
-void patch_md(s4 md_patch, ptrint dest, void* ref);
-#endif /* defined(__ARM__) */
-
 #ifdef __cplusplus
 } // extern "C"
 #endif