1 #ifndef __MONO_CODEMAN_H__
2 #define __MONO_CODEMAN_H__
4 typedef struct _MonoCodeManager MonoCodeManager
;
6 MonoCodeManager
* mono_code_manager_new (void);
7 MonoCodeManager
* mono_code_manager_new_dynamic (void);
8 void mono_code_manager_destroy (MonoCodeManager
*cman
);
9 void mono_code_manager_invalidate (MonoCodeManager
*cman
);
10 void mono_code_manager_set_read_only (MonoCodeManager
*cman
);
12 void* mono_code_manager_reserve_align (MonoCodeManager
*cman
, int size
, int alignment
);
14 void* mono_code_manager_reserve (MonoCodeManager
*cman
, int size
);
15 void mono_code_manager_commit (MonoCodeManager
*cman
, void *data
, int size
, int newsize
);
16 int mono_code_manager_size (MonoCodeManager
*cman
, int *used_size
);
18 /* find the extra block allocated to resolve branches close to code */
19 typedef int (*MonoCodeManagerFunc
) (void *data
, int csize
, int size
, void *user_data
);
20 void mono_code_manager_foreach (MonoCodeManager
*cman
, MonoCodeManagerFunc func
, void *user_data
);
22 #if defined( __native_client_codegen__ ) && defined( __native_client__ )
24 #define kNaClBundleSize 32
25 #define kNaClBundleMask (kNaClBundleSize-1)
27 extern __thread
unsigned char **patch_source_base
;
28 extern __thread
unsigned char **patch_dest_base
;
29 extern __thread
int patch_current_depth
;
31 int nacl_is_code_address (void *target
);
32 void* nacl_code_manager_get_code_dest (MonoCodeManager
*cman
, void *data
);
33 void nacl_allow_target_modification (int val
);
34 void* nacl_modify_patch_target (unsigned char *target
);
35 void* nacl_inverse_modify_patch_target (unsigned char *target
);
36 #endif /* __native_client__ */
38 #endif /* __MONO_CODEMAN_H__ */