1 /** 2 * \file 3 */ 4 5 #ifndef __MONO_CODEMAN_H__ 6 #define __MONO_CODEMAN_H__ 7 8 #include <mono/utils/mono-publib.h> 9 10 typedef struct _MonoCodeManager MonoCodeManager; 11 12 typedef struct { 13 void (*chunk_new) (void *chunk, int size); 14 void (*chunk_destroy) (void *chunk); 15 } MonoCodeManagerCallbacks; 16 17 MONO_API MonoCodeManager* mono_code_manager_new (void); 18 MONO_API MonoCodeManager* mono_code_manager_new_dynamic (void); 19 MONO_API void mono_code_manager_destroy (MonoCodeManager *cman); 20 MONO_API void mono_code_manager_invalidate (MonoCodeManager *cman); 21 MONO_API void mono_code_manager_set_read_only (MonoCodeManager *cman); 22 23 MONO_API void* mono_code_manager_reserve_align (MonoCodeManager *cman, int size, int alignment); 24 25 MONO_API void* mono_code_manager_reserve (MonoCodeManager *cman, int size); 26 MONO_API void mono_code_manager_commit (MonoCodeManager *cman, void *data, int size, int newsize); 27 MONO_API int mono_code_manager_size (MonoCodeManager *cman, int *used_size); 28 MONO_API void mono_code_manager_init (void); 29 MONO_API void mono_code_manager_cleanup (void); 30 MONO_API void mono_code_manager_install_callbacks (MonoCodeManagerCallbacks* callbacks); 31 32 /* find the extra block allocated to resolve branches close to code */ 33 typedef int (*MonoCodeManagerFunc) (void *data, int csize, int size, void *user_data); 34 void mono_code_manager_foreach (MonoCodeManager *cman, MonoCodeManagerFunc func, void *user_data); 35 36 #endif /* __MONO_CODEMAN_H__ */ 37 38