X-Git-Url: http://wien.tomnetworks.com/gitweb/?a=blobdiff_plain;f=src%2Fvm%2Fjit%2Fpatcher-common.hpp;h=684b41c13a8c28f846aa398237af6ea390da78bd;hb=735bdda890a385d1fa9cc532faadbbc96f2d1218;hp=72ed1ec0bf5a9948d0af08ef9de861bd9f633492;hpb=78b0c8fe95660a9fb633c72db39117fed67b536b;p=cacao.git diff --git a/src/vm/jit/patcher-common.hpp b/src/vm/jit/patcher-common.hpp index 72ed1ec0b..684b41c13 100644 --- a/src/vm/jit/patcher-common.hpp +++ b/src/vm/jit/patcher-common.hpp @@ -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. @@ -48,9 +48,10 @@ typedef struct patchref_t patchref_t; *******************************************************************************/ struct patchref_t { - ptrint mpc; /* absolute position in code segment */ - ptrint datap; /* absolute position in data segment */ - s4 disp; /* displacement of ref in the data segment */ + uintptr_t mpc; /* absolute position in code segment */ + uintptr_t datap; /* absolute position in data segment */ + int32_t disp; /* displacement of ref in the data segment */ + int32_t disp_mb; /* auxiliary code displacement (for membar) */ functionptr patcher; /* patcher function to call */ void* ref; /* reference passed */ uint32_t mcode; /* machine code to be patched back in */ @@ -71,7 +72,11 @@ void patcher_list_create(codeinfo *code); void patcher_list_reset(codeinfo *code); void patcher_list_free(codeinfo *code); -void patcher_add_patch_ref(jitdata *jd, functionptr patcher, void* ref, s4 disp); +#if !defined(NDEBUG) +void patcher_list_show(codeinfo *code); +#endif + +patchref_t *patcher_add_patch_ref(jitdata *jd, functionptr patcher, void* ref, s4 disp); void patcher_resolve(jitdata* jd); @@ -81,7 +86,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) ***************************/ @@ -114,6 +119,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);