[jit] Implement Vector.IsHardwareAccelerated () as an intrinsics even if SIMD is...
[mono-project.git] / docs / sources / mono-api-jitinternal.html
blobbf6650e0b43b071de2241d0fbc3cbd1d15e9e377
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_insert">mono_g_hash_table_insert</a></h4>
35 <h4><a name="api:mono_g_hash_table_lookup">mono_g_hash_table_lookup</a></h4>
36 <h4><a name="api:mono_g_hash_table_lookup_extended">mono_g_hash_table_lookup_extended</a></h4>
37 <h4><a name="api:mono_g_hash_table_remove">mono_g_hash_table_remove</a></h4>
38 <h4><a name="api:mono_g_hash_table_replace">mono_g_hash_table_replace</a></h4>
39 <h4><a name="api:mono_g_hash_table_size">mono_g_hash_table_size</a></h4>
42 <h3>Memory Pools</h3>
44 <p>Memory pools are a convenient way of tracking memory
45 allocations that are used for one specific task, they are also
46 faster than using the standard memory allocation procedures,
47 as they are designed to be used only by a single thread at a
48 time.
50 <p><tt>MonoMemPool</tt> objects are not thread safe, which
51 means that you should not share the objects across multiple
52 threads without providing proper locking around it (unlike
53 <tt>malloc</tt> and <tt>free</tt> which are thread safe).
55 <p>When a <tt>MonoMemPool</tt> is released with
56 <tt>mono_mempool_destroy</tt> all of the of the memory
57 allocated from that memory pool with
58 <tt>mono_mempool_alloc</tt> and <tt>mono_mempool_alloc0</tt>
59 is released.
61 <h4><a name="api:mono_mempool_new">mono_mempool_new</a></h4>
62 <h4><a name="api:mono_mempool_destroy">mono_mempool_destroy</a></h4>
63 <h4><a name="api:mono_mempool_alloc">mono_mempool_alloc</a></h4>
64 <h4><a name="api:mono_mempool_alloc0">mono_mempool_alloc0</a></h4>
65 <h4><a name="api:mono_mempool_invalidate">mono_mempool_invalidate</a></h4>
66 <h4><a name="api:mono_mempool_stats">mono_mempool_stats</a></h4>
67 <h4><a name="api:mono_mempool_contains_addr">mono_mempool_contains_addr</a></h4>
69 <h3>Bitsets</h3>
71 <p>MonoBitsets are a set of routines used to manipulate sets
72 of bits.
74 <h4><a name="api:mono_bitset_alloc_size">mono_bitset_alloc_size</a></h4>
75 <h4><a name="api:mono_bitset_clear">mono_bitset_clear</a></h4>
76 <h4><a name="api:mono_bitset_clear_all">mono_bitset_clear_all</a></h4>
77 <h4><a name="api:mono_bitset_clone">mono_bitset_clone</a></h4>
78 <h4><a name="api:mono_bitset_copyto">mono_bitset_copyto</a></h4>
79 <h4><a name="api:mono_bitset_count">mono_bitset_count</a></h4>
80 <h4><a name="api:mono_bitset_equal">mono_bitset_equal</a></h4>
81 <h4><a name="api:mono_bitset_find_first">mono_bitset_find_first</a></h4>
82 <h4><a name="api:mono_bitset_find_last">mono_bitset_find_last</a></h4>
83 <h4><a name="api:mono_bitset_find_start">mono_bitset_find_start</a></h4>
84 <h4><a name="api:mono_bitset_foreach">mono_bitset_foreach</a></h4>
85 <h4><a name="api:mono_bitset_free">mono_bitset_free</a></h4>
86 <h4><a name="api:mono_bitset_intersection">mono_bitset_intersection</a></h4>
87 <h4><a name="api:mono_bitset_invert">mono_bitset_invert</a></h4>
88 <h4><a name="api:mono_bitset_mem_new">mono_bitset_mem_new</a></h4>
89 <h4><a name="api:mono_bitset_new">mono_bitset_new</a></h4>
90 <h4><a name="api:mono_bitset_set">mono_bitset_set</a></h4>
91 <h4><a name="api:mono_bitset_set_all">mono_bitset_set_all</a></h4>
92 <h4><a name="api:mono_bitset_size">mono_bitset_size</a></h4>
93 <h4><a name="api:mono_bitset_sub">mono_bitset_sub</a></h4>
94 <h4><a name="api:mono_bitset_test">mono_bitset_test</a></h4>
95 <h4><a name="api:mono_bitset_test_bulk">mono_bitset_test_bulk</a></h4>
96 <h4><a name="api:mono_bitset_union">mono_bitset_union</a></h4>
97 <h4><a name="api:mono_bitset_find_first_unset">mono_bitset_find_first_unset</a></h4>
98 <h4><a name="api:mono_bitset_intersection_2">mono_bitset_intersection_2</a></h4>
100 <h3>JIT utilities</h3>
102 <h4><a name="api:mono_signbit_double">mono_signbit_double</a></h4>
103 <h4><a name="api:mono_signbit_float">mono_signbit_float</a></h4>
105 <h3>Function Pointers</h3>
107 <p>To wrap a function pointer into something that the Mono
108 runtime can consume, you should use the mono_create_ftnptr.
109 This is only important if you plan on running on the IA64
110 architecture. Otherwise you can just use the function
111 pointer address.
113 <h4><a name="api:mono_create_ftnptr">mono_create_ftnptr</a></h4>
116 <h2>Notification Interface</h2>
118 <p>This is an internal profiler interface. In general, users
119 would not be using this interface, but would be using the
120 profiler interface.
122 <p>These methods must be called to notify the profiler of an
123 event that must be recorded. Mono's JIT engine currently
124 calls these routines, but if you are extending Mono in some
125 way these are the methods that you might invoke to notify the
126 profiler of an event.
128 <h4><a name="api:mono_profiler_load">mono_profiler_load</a></h4>
129 <h4><a name="api:mono_profiler_allocation">mono_profiler_allocation</a></h4>
130 <h4><a name="api:mono_profiler_stat_hit">mono_profiler_stat_hit</a></h4>
131 <h4><a name="api:mono_profiler_thread_start">mono_profiler_thread_start</a></h4>
132 <h4><a name="api:mono_profiler_thread_end">mono_profiler_thread_end</a></h4>
133 <h4><a name="api:mono_profiler_appdomain_event">mono_profiler_appdomain_event</a></h4>
134 <h4><a name="api:mono_profiler_appdomain_loaded">mono_profiler_appdomain_loaded</a></h4>
135 <h4><a name="api:mono_profiler_assembly_event">mono_profiler_assembly_event</a></h4>
136 <h4><a name="api:mono_profiler_assembly_loaded">mono_profiler_assembly_loaded</a></h4>
137 <h4><a name="api:mono_profiler_class_event">mono_profiler_class_event</a></h4>
138 <h4><a name="api:mono_profiler_class_loaded">mono_profiler_class_loaded</a></h4>
139 <h4><a name="api:mono_profiler_code_transition">mono_profiler_code_transition</a></h4>
140 <h4><a name="api:mono_profiler_method_end_jit">mono_profiler_method_end_jit</a></h4>
141 <h4><a name="api:mono_profiler_method_enter">mono_profiler_method_enter</a></h4>
142 <h4><a name="api:mono_profiler_method_jit">mono_profiler_method_jit</a></h4>
143 <h4><a name="api:mono_profiler_method_leave">mono_profiler_method_leave</a></h4>
144 <h4><a name="api:mono_profiler_module_event">mono_profiler_module_event</a></h4>
145 <h4><a name="api:mono_profiler_module_loaded">mono_profiler_module_loaded</a></h4>
146 <h4><a name="api:mono_profiler_shutdown">mono_profiler_shutdown</a></h4>
147 <h4><a name="api:mono_profiler_startup">mono_profiler_startup</a></h4>
148 <h4><a name="api:mono_profiler_gc_event">mono_profiler_gc_event</a></h4>
149 <h4><a name="api:mono_profiler_gc_heap_resize">mono_profiler_gc_heap_resize</a></h4>
150 <h4><a name="api:mono_profiler_stat_hit">mono_profiler_stat_hit</a></h4>