SGen: Fix parsing of default-allowance-ratio
[mono-project.git] / docs / sources / mono-api-jitinternal.html
blob769af814dfe93f8c9be2f550ae28cb31bcdfe3fc
1 <h2>Internal Runtime Utility Functions</h2>
3 <h3>SHA1 Signatures</h3>
5 <h4><a name="api:mono_sha1_init">mono_sha1_init</a></h4>
6 <h4><a name="api:mono_sha1_update">mono_sha1_update</a></h4>
7 <h4><a name="api:mono_sha1_get_digest_from_file">mono_sha1_get_digest_from_file</a></h4>
8 <h4><a name="api:mono_sha1_get_digest">mono_sha1_get_digest</a></h4>
9 <h4><a name="api:mono_sha1_final">mono_sha1_final</a></h4>
11 <h3>MD5 Signatures</h3>
13 <h4><a name="api:mono_md5_init">mono_md5_init</a></h4>
14 <h4><a name="api:mono_md5_update">mono_md5_update</a></h4>
15 <h4><a name="api:mono_md5_get_digest_from_file">mono_md5_get_digest_from_file</a></h4>
16 <h4><a name="api:mono_md5_get_digest">mono_md5_get_digest</a></h4>
17 <h4><a name="api:mono_md5_final">mono_md5_final</a></h4>
19 <h4><a name="api:mono_digest_get_public_token">mono_digest_get_public_token</a></h4>
21 <h3>Hashtables</h3>
23 <p><tt>GHashTable</tt> is used when you need to store object
24 references into a hashtable, objects stored in a
25 <tt>MonoGHashTable</tt> are properly tracked by the garbage
26 collector.
28 <p>The <tt>MonoGHashTable</tt> data type has the same API as
29 the GLIB.
31 <h4><a name="api:mono_g_hash_table_destroy">mono_g_hash_table_destroy</a></h4>
32 <h4><a name="api:mono_g_hash_table_foreach">mono_g_hash_table_foreach</a></h4>
33 <h4><a name="api:mono_g_hash_table_foreach_remove">mono_g_hash_table_foreach_remove</a></h4>
34 <h4><a name="api:mono_g_hash_table_foreach_steal">mono_g_hash_table_foreach_steal</a></h4>
35 <h4><a name="api:mono_g_hash_table_insert">mono_g_hash_table_insert</a></h4>
36 <h4><a name="api:mono_g_hash_table_lookup">mono_g_hash_table_lookup</a></h4>
37 <h4><a name="api:mono_g_hash_table_lookup_extended">mono_g_hash_table_lookup_extended</a></h4>
38 <h4><a name="api:mono_g_hash_table_new">mono_g_hash_table_new</a></h4>
39 <h4><a name="api:mono_g_hash_table_new_full">mono_g_hash_table_new_full</a></h4>
40 <h4><a name="api:mono_g_hash_table_remap">mono_g_hash_table_remap</a></h4>
41 <h4><a name="api:mono_g_hash_table_remove">mono_g_hash_table_remove</a></h4>
42 <h4><a name="api:mono_g_hash_table_replace">mono_g_hash_table_replace</a></h4>
43 <h4><a name="api:mono_g_hash_table_size">mono_g_hash_table_size</a></h4>
44 <h4><a name="api:mono_g_hash_table_steal">mono_g_hash_table_steal</a></h4>
47 <h3>Memory Pools</h3>
49 <p>Memory pools are a convenient way of tracking memory
50 allocations that are used for one specific task, they are also
51 faster than using the standard memory allocation procedures,
52 as they are designed to be used only by a single thread at a
53 time.
55 <p><tt>MonoMemPool</tt> objects are not thread safe, which
56 means that you should not share the objects across multiple
57 threads without providing proper locking around it (unlike
58 <tt>malloc</tt> and <tt>free</tt> which are thread safe).
60 <p>When a <tt>MonoMemPool</tt> is released with
61 <tt>mono_mempool_destroy</tt> all of the of the memory
62 allocated from that memory pool with
63 <tt>mono_mempool_alloc</tt> and <tt>mono_mempool_alloc0</tt>
64 is released.
66 <h4><a name="api:mono_mempool_new">mono_mempool_new</a></h4>
67 <h4><a name="api:mono_mempool_destroy">mono_mempool_destroy</a></h4>
68 <h4><a name="api:mono_mempool_alloc">mono_mempool_alloc</a></h4>
69 <h4><a name="api:mono_mempool_alloc0">mono_mempool_alloc0</a></h4>
70 <h4><a name="api:mono_mempool_empty">mono_mempool_empty</a></h4>
71 <h4><a name="api:mono_mempool_invalidate">mono_mempool_invalidate</a></h4>
72 <h4><a name="api:mono_mempool_stats">mono_mempool_stats</a></h4>
73 <h4><a name="api:mono_mempool_contains_addr">mono_mempool_contains_addr</a></h4>
75 <h3>Bitsets</h3>
77 <p>MonoBitsets are a set of routines used to manipulate sets
78 of bits.
80 <h4><a name="api:mono_bitset_alloc_size">mono_bitset_alloc_size</a></h4>
81 <h4><a name="api:mono_bitset_clear">mono_bitset_clear</a></h4>
82 <h4><a name="api:mono_bitset_clear_all">mono_bitset_clear_all</a></h4>
83 <h4><a name="api:mono_bitset_clone">mono_bitset_clone</a></h4>
84 <h4><a name="api:mono_bitset_copyto">mono_bitset_copyto</a></h4>
85 <h4><a name="api:mono_bitset_count">mono_bitset_count</a></h4>
86 <h4><a name="api:mono_bitset_equal">mono_bitset_equal</a></h4>
87 <h4><a name="api:mono_bitset_find_first">mono_bitset_find_first</a></h4>
88 <h4><a name="api:mono_bitset_find_last">mono_bitset_find_last</a></h4>
89 <h4><a name="api:mono_bitset_find_start">mono_bitset_find_start</a></h4>
90 <h4><a name="api:mono_bitset_foreach">mono_bitset_foreach</a></h4>
91 <h4><a name="api:mono_bitset_free">mono_bitset_free</a></h4>
92 <h4><a name="api:mono_bitset_intersection">mono_bitset_intersection</a></h4>
93 <h4><a name="api:mono_bitset_invert">mono_bitset_invert</a></h4>
94 <h4><a name="api:mono_bitset_mem_new">mono_bitset_mem_new</a></h4>
95 <h4><a name="api:mono_bitset_new">mono_bitset_new</a></h4>
96 <h4><a name="api:mono_bitset_set">mono_bitset_set</a></h4>
97 <h4><a name="api:mono_bitset_set_all">mono_bitset_set_all</a></h4>
98 <h4><a name="api:mono_bitset_size">mono_bitset_size</a></h4>
99 <h4><a name="api:mono_bitset_sub">mono_bitset_sub</a></h4>
100 <h4><a name="api:mono_bitset_test">mono_bitset_test</a></h4>
101 <h4><a name="api:mono_bitset_test_bulk">mono_bitset_test_bulk</a></h4>
102 <h4><a name="api:mono_bitset_union">mono_bitset_union</a></h4>
103 <h4><a name="api:mono_bitset_find_first_unset">mono_bitset_find_first_unset</a></h4>
104 <h4><a name="api:mono_bitset_intersection_2">mono_bitset_intersection_2</a></h4>
106 <h3>JIT utilities</h3>
108 <h4><a name="api:mono_signbit_double">mono_signbit_double</a></h4>
109 <h4><a name="api:mono_signbit_float">mono_signbit_float</a></h4>
111 <h3>Function Pointers</h3>
113 <p>To wrap a function pointer into something that the Mono
114 runtime can consume, you should use the mono_create_ftnptr.
115 This is only important if you plan on running on the IA64
116 architecture. Otherwise you can just use the function
117 pointer address.
119 <h4><a name="api:mono_create_ftnptr">mono_create_ftnptr</a></h4>
122 <h2>Notification Interface</h2>
124 <p>This is an internal profiler interface. In general, users
125 would not be using this interface, but would be using the
126 profiler interface.
128 <p>These methods must be called to notify the profiler of an
129 event that must be recorded. Mono's JIT engine currently
130 calls these routines, but if you are extending Mono in some
131 way these are the methods that you might invoke to notify the
132 profiler of an event.
134 <h4><a name="api:mono_profiler_load">mono_profiler_load</a></h4>
135 <h4><a name="api:mono_profiler_allocation">mono_profiler_allocation</a></h4>
136 <h4><a name="api:mono_profiler_stat_hit">mono_profiler_stat_hit</a></h4>
137 <h4><a name="api:mono_profiler_thread_start">mono_profiler_thread_start</a></h4>
138 <h4><a name="api:mono_profiler_thread_end">mono_profiler_thread_end</a></h4>
139 <h4><a name="api:mono_profiler_appdomain_event">mono_profiler_appdomain_event</a></h4>
140 <h4><a name="api:mono_profiler_appdomain_loaded">mono_profiler_appdomain_loaded</a></h4>
141 <h4><a name="api:mono_profiler_assembly_event">mono_profiler_assembly_event</a></h4>
142 <h4><a name="api:mono_profiler_assembly_loaded">mono_profiler_assembly_loaded</a></h4>
143 <h4><a name="api:mono_profiler_class_event">mono_profiler_class_event</a></h4>
144 <h4><a name="api:mono_profiler_class_loaded">mono_profiler_class_loaded</a></h4>
145 <h4><a name="api:mono_profiler_code_transition">mono_profiler_code_transition</a></h4>
146 <h4><a name="api:mono_profiler_method_end_jit">mono_profiler_method_end_jit</a></h4>
147 <h4><a name="api:mono_profiler_method_enter">mono_profiler_method_enter</a></h4>
148 <h4><a name="api:mono_profiler_method_jit">mono_profiler_method_jit</a></h4>
149 <h4><a name="api:mono_profiler_method_leave">mono_profiler_method_leave</a></h4>
150 <h4><a name="api:mono_profiler_module_event">mono_profiler_module_event</a></h4>
151 <h4><a name="api:mono_profiler_module_loaded">mono_profiler_module_loaded</a></h4>
152 <h4><a name="api:mono_profiler_shutdown">mono_profiler_shutdown</a></h4>
153 <h4><a name="api:mono_profiler_startup">mono_profiler_startup</a></h4>
154 <h4><a name="api:mono_profiler_gc_event">mono_profiler_gc_event</a></h4>
155 <h4><a name="api:mono_profiler_gc_heap_resize">mono_profiler_gc_heap_resize</a></h4>
156 <h4><a name="api:mono_profiler_gc_event">mono_profiler_gc_event</a></h4>
157 <h4><a name="api:mono_profiler_gc_heap_resize">mono_profiler_gc_heap_resize</a></h4>
158 <h4><a name="api:mono_profiler_stat_hit">mono_profiler_stat_hit</a></h4>