X-Git-Url: http://wien.tomnetworks.com/gitweb/?a=blobdiff_plain;f=src%2Fvm%2Fjit%2Fpatcher-common.hpp;h=e51582d72eda21f94793df501417af814b576151;hb=a40fe595d0cfe6c65922418de174200ce4873633;hp=7a10d4d22cf278dadb0fb84425ab15672169308f;hpb=f24e856e3c43a10dcc8581fd5ddbdda200d63aba;p=cacao.git diff --git a/src/vm/jit/patcher-common.hpp b/src/vm/jit/patcher-common.hpp index 7a10d4d22..e51582d72 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. @@ -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 ****************************************************************** @@ -52,18 +48,14 @@ struct cached_ref_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 */ 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,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); @@ -123,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); @@ -198,10 +197,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