2 * jit.h - General definitions for JIT back-ends.
4 * Copyright (C) 2004 Southern Storm Software, Pty Ltd.
5 * Copyright (C) 2016 Ketmar Dark
7 * The libjit library is free software: you can redistribute it and/or
8 * modify it under the terms of the GNU Lesser General Public License
9 * as published by the Free Software Foundation, either version 2.1 of
10 * the License, or (at your option) any later version.
12 * The libjit library is distributed in the hope that it will be useful,
13 * but WITHOUT ANY WARRANTY; without even the implied warranty of
14 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
15 * Lesser General Public License for more details.
17 * You should have received a copy of the GNU Lesser General Public
18 * License along with the libjit library. If not, see
19 * <http://www.gnu.org/licenses/>.
22 {$INCLUDE libjit_opts.inc}
28 jit_sbyte
= ShortInt; pjit_sbyte
= ^jit_sbyte
;
29 jit_ubyte
= Byte; pjit_ubyte
= ^jit_ubyte
;
30 jit_short
= SmallInt; pjit_short
= ^jit_short
;
31 jit_ushort
= Word; pjit_ushort
= ^jit_ushort
;
32 jit_int
= LongInt; pjit_int
= ^jit_int
;
33 jit_uint
= LongWord; pjit_uint
= ^jit_uint
;
34 // "native" types (should prolly be 8 bytes on 64-bit arch)
35 //jit_nint = PtrInt; pjit_nint = ^jit_nint; // "native"
36 //jit_nuint = PtrUInt; pjit_nuint = ^jit_nuint; // "native"
37 jit_long
= Int64; pjit_long
= ^jit_long
;
38 jit_ulong
= UInt64; pjit_ulong
= ^jit_ulong
;
39 jit_float32
= Single; pjit_float32
= ^jit_float32
;
40 jit_float64
= Double; pjit_float64
= ^jit_float64
;
41 jit_nfloat
= Extended
; pjit_nfloat
= ^jit_nfloat
; //k8: seems to be the same for x86; i think that FPC's `Extended` is C's `long double`
42 jit_ptr
= Pointer; pjit_ptr
= ^jit_ptr
;
44 {$DEFINE JIT_NATIVE_INT32}
45 jit_nint
= LongInt; pjit_nint
= ^jit_nint
; // "native"
46 jit_nuint
= LongWord; pjit_nuint
= ^jit_nuint
; // "native"
47 {$ELSEIF DEFINED(CPU64)}
48 {$UNDEF JIT_NATIVE_INT32}
49 jit_nint
= Int64; pjit_nint
= ^jit_nint
; // "native"
50 jit_nuint
= UInt64; pjit_nuint
= ^jit_nuint
; // "native"
52 {$ERROR unknown CPU bitness}
56 jit_min_int
= jit_int(jit_int(1) shl (sizeof(jit_int
)*8-1));
57 jit_max_int
= jit_int(jit_int(not jit_min_int
));
58 jit_max_uint
= jit_uint(not (jit_uint(0)));
59 jit_min_long
= jit_long(jit_long(1) shl (sizeof(jit_long
)*8-1));
60 jit_max_long
= jit_long(not jit_min_long
);
61 jit_max_ulong
= jit_ulong(not (jit_ulong(0)));
64 * Opaque structure that represents a context.
66 type jit_context_t
= Pointer;
69 * Opaque structure that represents a function.
71 type jit_function_t
= Pointer;
74 * Opaque structure that represents a block.
76 type jit_block_t
= Pointer;
79 * Opaque structure that represents an instruction.
81 type jit_insn_t
= Pointer;
84 * Opaque structure that represents a value.
86 type jit_value_t
= Pointer;
87 type pjit_value_t
= ^jit_value_t
;
90 * Opaque structure that represents a type descriptor.
92 type jit_type_t
= Pointer;
93 type pjit_type_t
= ^jit_type_t
;
96 * Opaque type that represents an exception stack trace.
98 type jit_stack_trace_t
= Pointer;
101 * Block label identifier.
103 type jit_label_t
= jit_nuint
;
104 type pjit_label_t
= ^jit_label_t
;
107 * Value that represents an undefined label.
109 const jit_label_undefined
= jit_label_t(not (jit_uint(0)));
112 * Value that represents an undefined offset.
114 const JIT_NO_OFFSET
= jit_uint(not (jit_uint(0)));
117 * Function that is used to free user-supplied metadata.
119 type jit_meta_free_func
= procedure (data
: Pointer); libraryLibJITDecl
;
122 * Function that is used to compile a function on demand.
123 * Returns zero if the compilation process failed for some reason.
125 type jit_on_demand_func
= function (func
: jit_function_t
): Integer; libraryLibJITDecl
; //FIXME: should this be `jit_int` instead for x64?
128 * Function that is used to control on demand compilation.
129 * Typically, it should take care of the context locking and unlocking,
130 * calling function's on demand compiler, and final compilation.
132 type jit_on_demand_driver_func
= function (func
: jit_function_t
): Pointer; libraryLibJITDecl
;
135 function jit_context_create (): jit_context_t
; libraryLibJITDecl
;
136 procedure jit_context_destroy (context
: jit_context_t
); libraryLibJITDecl
;
138 procedure jit_context_build_start (context
: jit_context_t
); libraryLibJITDecl
;
139 procedure jit_context_build_end (context
: jit_context_t
); libraryLibJITDecl
;
141 procedure jit_context_set_on_demand_driver (context
: jit_context_t
; driver
: jit_on_demand_driver_func
); libraryLibJITDecl
;
143 //moved down;procedure jit_context_set_memory_manager (context: jit_context_t; manager: jit_memory_manager_t); libraryLibJITDecl;
145 function jit_context_set_meta (context
: jit_context_t
; type_
: Integer; data
: Pointer; free_data
: jit_meta_free_func
): Integer; libraryLibJITDecl
;
146 function jit_context_set_meta_numeric (context
: jit_context_t
; type_
: Integer; data
: jit_nuint
): Integer; libraryLibJITDecl
;
147 function jit_context_get_meta (context
: jit_context_t
; type_
: Integer): Pointer; libraryLibJITDecl
;
148 function jit_context_get_meta_numeric (context
: jit_context_t
; type_
: Integer): jit_nuint
; libraryLibJITDecl
;
149 procedure jit_context_free_meta (context
: jit_context_t
; type_
: Integer); libraryLibJITDecl
;
152 * Standard meta values for builtin configurable options.
154 const JIT_OPTION_CACHE_LIMIT
= 10000;
155 const JIT_OPTION_CACHE_PAGE_SIZE
= 10001;
156 const JIT_OPTION_PRE_COMPILE
= 10002;
157 const JIT_OPTION_DONT_FOLD
= 10003;
158 const JIT_OPTION_POSITION_INDEPENDENT
= 10004;
159 const JIT_OPTION_CACHE_MAX_PAGE_FACTOR
= 10005;
163 * Prototype for closure functions.
165 type jit_closure_func
= procedure (signature
: jit_type_t
; result_
: Pointer; args
: PPointer; user_data
: Pointer); libraryLibJITDecl
;
168 * Opaque type for accessing vararg parameters on closures.
170 type jit_closure_va_list_t
= Pointer;
173 * External function declarations.
175 procedure jit_apply (signature
: jit_type_t
; func
: Pointer; args
: PPointer; num_fixed_args
: LongWord; return_value
: Pointer); libraryLibJITDecl
;
176 procedure jit_apply_raw (signature
: jit_type_t
; func
: Pointer; args
: Pointer; return_value
: Pointer); libraryLibJITDecl
;
177 function jit_raw_supported (signature
: jit_type_t
): Integer; libraryLibJITDecl
;
179 function jit_closure_create (context
: jit_context_t
; signature
: jit_type_t
; func
: jit_closure_func
; user_data
: Pointer): Pointer; libraryLibJITDecl
;
181 function jit_closure_va_get_nint (va
: jit_closure_va_list_t
): jit_nint
; libraryLibJITDecl
;
182 function jit_closure_va_get_nuint (va
: jit_closure_va_list_t
): jit_nuint
; libraryLibJITDecl
;
183 function jit_closure_va_get_long (va
: jit_closure_va_list_t
): jit_long
; libraryLibJITDecl
;
184 function jit_closure_va_get_ulong (va
: jit_closure_va_list_t
): jit_ulong
; libraryLibJITDecl
;
185 function jit_closure_va_get_float32 (va
: jit_closure_va_list_t
): jit_float32
; libraryLibJITDecl
;
186 function jit_closure_va_get_float64 (va
: jit_closure_va_list_t
): jit_float64
; libraryLibJITDecl
;
187 function jit_closure_va_get_nfloat (va
: jit_closure_va_list_t
): jit_nfloat
; libraryLibJITDecl
;
188 function jit_closure_va_get_ptr (va
: jit_closure_va_list_t
): Pointer; libraryLibJITDecl
;
189 procedure jit_closure_va_get_struct (va
: jit_closure_va_list_t
; buf
: Pointer; type_
: jit_type_t
); libraryLibJITDecl
;
191 function jit_block_get_function (block
: jit_block_t
): jit_function_t
; libraryLibJITDecl
;
192 function jit_block_get_context (block
: jit_block_t
): jit_context_t
; libraryLibJITDecl
;
193 function jit_block_get_label (block
: jit_block_t
): jit_label_t
; libraryLibJITDecl
;
194 function jit_block_get_next_label (block
: jit_block_t
; label_
: jit_label_t
): jit_label_t
; libraryLibJITDecl
;
195 function jit_block_next (func
: jit_function_t
; previous
: jit_block_t
): jit_block_t
; libraryLibJITDecl
;
196 function jit_block_previous (func
: jit_function_t
; previous
: jit_block_t
): jit_block_t
; libraryLibJITDecl
;
197 function jit_block_from_label (func
: jit_function_t
; label_
: jit_label_t
): jit_block_t
; libraryLibJITDecl
;
198 function jit_block_set_meta (block
: jit_block_t
; type_
: Integer; data
: Pointer; free_data
: jit_meta_free_func
): Integer; libraryLibJITDecl
;
199 function jit_block_get_meta (block
: jit_block_t
; type_
: Integer): Pointer; libraryLibJITDecl
;
200 procedure jit_block_free_meta (block
: jit_block_t
; type_
: Integer); libraryLibJITDecl
;
201 function jit_block_is_reachable (block
: jit_block_t
): Integer; libraryLibJITDecl
;
202 function jit_block_ends_in_dead (block
: jit_block_t
): Integer; libraryLibJITDecl
;
203 function jit_block_current_is_dead (func
: jit_function_t
): Integer; libraryLibJITDecl
;
205 type jit_debugger_t
= Pointer;
206 type jit_debugger_thread_id_t
= jit_nint
;
207 type jit_debugger_breakpoint_id_t
= jit_nint
;
209 type jit_debugger_event_t
= record
211 thread
: jit_debugger_thread_id_t
;
212 function_
: jit_function_t
;
215 id
: jit_debugger_breakpoint_id_t
;
216 trace
: jit_stack_trace_t
;
218 type pjit_debugger_event_t
= ^jit_debugger_event_t
;
220 const JIT_DEBUGGER_TYPE_QUIT
= 0;
221 const JIT_DEBUGGER_TYPE_HARD_BREAKPOINT
= 1;
222 const JIT_DEBUGGER_TYPE_SOFT_BREAKPOINT
= 2;
223 const JIT_DEBUGGER_TYPE_USER_BREAKPOINT
= 3;
224 const JIT_DEBUGGER_TYPE_ATTACH_THREAD
= 4;
225 const JIT_DEBUGGER_TYPE_DETACH_THREAD
= 5;
227 type jit_debugger_breakpoint_info
= record
229 thread
: jit_debugger_thread_id_t
;
230 function_
: jit_function_t
;
234 type jit_debugger_breakpoint_info_t
= ^jit_debugger_breakpoint_info
;
236 const JIT_DEBUGGER_FLAG_THREAD
= (1 shl 0);
237 const JIT_DEBUGGER_FLAG_FUNCTION
= (1 shl 1);
238 const JIT_DEBUGGER_FLAG_DATA1
= (1 shl 2);
239 const JIT_DEBUGGER_FLAG_DATA2
= (1 shl 3);
241 const JIT_DEBUGGER_DATA1_FIRST
= 10000;
242 const JIT_DEBUGGER_DATA1_LINE
= 10000;
243 const JIT_DEBUGGER_DATA1_ENTER
= 10001;
244 const JIT_DEBUGGER_DATA1_LEAVE
= 10002;
245 const JIT_DEBUGGER_DATA1_THROW
= 10003;
247 type jit_debugger_hook_func
= procedure (func
: jit_function_t
; data1
: jit_nint
; data2
: jit_nint
); libraryLibJITDecl
;
249 function jit_debugging_possible (): Integer; libraryLibJITDecl
;
251 function jit_debugger_create (context
: jit_context_t
): jit_debugger_t
; libraryLibJITDecl
;
252 procedure jit_debugger_destroy (dbg
: jit_debugger_t
); libraryLibJITDecl
;
254 function jit_debugger_get_context (dbg
: jit_debugger_t
): jit_context_t
; libraryLibJITDecl
;
255 function jit_debugger_from_context (context
: jit_context_t
): jit_debugger_t
; libraryLibJITDecl
;
257 function jit_debugger_get_self (dbg
: jit_debugger_t
): jit_debugger_thread_id_t
; libraryLibJITDecl
;
258 function jit_debugger_get_thread (dbg
: jit_debugger_t
; const native_thread
: Pointer): jit_debugger_thread_id_t
; libraryLibJITDecl
;
259 function jit_debugger_get_native_thread (dbg
: jit_debugger_t
; thread
: jit_debugger_thread_id_t
; native_thread
: Pointer): Integer; libraryLibJITDecl
;
260 procedure jit_debugger_set_breakable (dbg
: jit_debugger_t
; const native_thread
: Pointer; flag
: Integer); libraryLibJITDecl
;
262 procedure jit_debugger_attach_self (dbg
: jit_debugger_t
; stop_immediately
: Integer); libraryLibJITDecl
;
263 procedure jit_debugger_detach_self (dbg
: jit_debugger_t
); libraryLibJITDecl
;
265 function jit_debugger_wait_event (dbg
: jit_debugger_t
; event
: pjit_debugger_event_t
; timeout
: jit_int
): Integer; libraryLibJITDecl
;
267 function jit_debugger_add_breakpoint (dbg
: jit_debugger_t
; info
: jit_debugger_breakpoint_info_t
): jit_debugger_breakpoint_id_t
; libraryLibJITDecl
;
268 procedure jit_debugger_remove_breakpoint (dbg
: jit_debugger_t
; id
: jit_debugger_breakpoint_id_t
); libraryLibJITDecl
;
269 procedure jit_debugger_remove_all_breakpoints (dbg
: jit_debugger_t
); libraryLibJITDecl
;
271 function jit_debugger_is_alive (dbg
: jit_debugger_t
; thread
: jit_debugger_thread_id_t
): Integer; libraryLibJITDecl
;
272 function jit_debugger_is_running (dbg
: jit_debugger_t
; thread
: jit_debugger_thread_id_t
): Integer; libraryLibJITDecl
;
273 procedure jit_debugger_run (dbg
: jit_debugger_t
; thread
: jit_debugger_thread_id_t
); libraryLibJITDecl
;
274 procedure jit_debugger_step (dbg
: jit_debugger_t
; thread
: jit_debugger_thread_id_t
); libraryLibJITDecl
;
275 procedure jit_debugger_next (dbg
: jit_debugger_t
; thread
: jit_debugger_thread_id_t
); libraryLibJITDecl
;
276 procedure jit_debugger_finish (dbg
: jit_debugger_t
; thread
: jit_debugger_thread_id_t
); libraryLibJITDecl
;
278 procedure jit_debugger_break (dbg
: jit_debugger_t
); libraryLibJITDecl
;
280 procedure jit_debugger_quit (dbg
: jit_debugger_t
); libraryLibJITDecl
;
282 function jit_debugger_set_hook (context
: jit_context_t
; hook
: jit_debugger_hook_func
): jit_debugger_hook_func
; libraryLibJITDecl
;
286 * Opaque types that represent a loaded ELF binary in read or write mode.
288 type jit_readelf_t
= Pointer;
289 type jit_writeelf_t
= Pointer;
290 type pjit_readelf_t
= ^jit_readelf_t
;
293 * Flags for "jit_readelf_open".
295 const JIT_READELF_FLAG_FORCE
= (1 shl 0); (* Force file to load *)
296 const JIT_READELF_FLAG_DEBUG
= (1 shl 1); (* Print debugging information *)
299 * Result codes from "jit_readelf_open".
301 const JIT_READELF_OK
= 0; (* File was opened successfully *)
302 const JIT_READELF_CANNOT_OPEN
= 1; (* Could not open the file *)
303 const JIT_READELF_NOT_ELF
= 2; (* Not an ELF-format binary *)
304 const JIT_READELF_WRONG_ARCH
= 3; (* Wrong architecture for local system *)
305 const JIT_READELF_BAD_FORMAT
= 4; (* ELF file, but badly formatted *)
306 const JIT_READELF_MEMORY
= 5; (* Insufficient memory to load the file *)
309 * External function declarations.
311 function jit_readelf_open (readelf
: pjit_readelf_t
; const filename
: PAnsiChar; flags
: Integer): Integer; libraryLibJITDecl
;
312 procedure jit_readelf_close (readelf
: jit_readelf_t
); libraryLibJITDecl
;
313 function jit_readelf_get_name (readelf
: jit_readelf_t
): PAnsiChar; libraryLibJITDecl
; // const
314 function jit_readelf_get_symbol (readelf
: jit_readelf_t
; const name
: PAnsiChar): Pointer; libraryLibJITDecl
;
315 function jit_readelf_get_section (readelf
: jit_readelf_t
; const name
: PAnsiChar; size
: pjit_nuint
): Pointer; libraryLibJITDecl
;
316 function jit_readelf_get_section_by_type (readelf
: jit_readelf_t
; type_
: jit_int
; size
: pjit_nuint
): Pointer; libraryLibJITDecl
;
317 function jit_readelf_map_vaddr (readelf
: jit_readelf_t
; vaddr
: jit_nuint
): Pointer; libraryLibJITDecl
;
318 function jit_readelf_num_needed (readelf
: jit_readelf_t
): LongWord; libraryLibJITDecl
;
319 function jit_readelf_get_needed (readelf
: jit_readelf_t
; index
: LongWord): PAnsiChar; libraryLibJITDecl
; // const
320 procedure jit_readelf_add_to_context (readelf
: jit_readelf_t
; context
: jit_context_t
); libraryLibJITDecl
;
321 function jit_readelf_resolve_all (context
: jit_context_t
; print_failures
: Integer): Integer; libraryLibJITDecl
;
322 function jit_readelf_register_symbol (context
: jit_context_t
; const name
: PAnsiChar; value
: Pointer; after
: Integer): Integer; libraryLibJITDecl
;
324 function jit_writeelf_create (const library_name
: PAnsiChar): jit_writeelf_t
; libraryLibJITDecl
;
325 procedure jit_writeelf_destroy (writeelf
: jit_writeelf_t
); libraryLibJITDecl
;
326 function jit_writeelf_write (writeelf
: jit_writeelf_t
; const filename
: PAnsiChar): Integer; libraryLibJITDecl
;
327 function jit_writeelf_add_function (writeelf
: jit_writeelf_t
; func
: jit_function_t
; const name
: PAnsiChar): Integer; libraryLibJITDecl
;
328 function jit_writeelf_add_needed (writeelf
: jit_writeelf_t
; const library_name
: PAnsiChar): Integer; libraryLibJITDecl
;
329 function jit_writeelf_write_section (writeelf
: jit_writeelf_t
; const name
: PAnsiChar; type_
: jit_int
; const buf
: Pointer; len
: LongWord; discardable
: Integer): Integer; libraryLibJITDecl
;
332 * Builtin exception type codes, and result values for intrinsic functions.
334 const JIT_RESULT_OK
= (1);
335 const JIT_RESULT_OVERFLOW
= (0);
336 const JIT_RESULT_ARITHMETIC
= (-1);
337 const JIT_RESULT_DIVISION_BY_ZERO
= (-2);
338 const JIT_RESULT_COMPILE_ERROR
= (-3);
339 const JIT_RESULT_OUT_OF_MEMORY
= (-4);
340 const JIT_RESULT_NULL_REFERENCE
= (-5);
341 const JIT_RESULT_NULL_FUNCTION
= (-6);
342 const JIT_RESULT_CALLED_NESTED
= (-7);
343 const JIT_RESULT_OUT_OF_BOUNDS
= (-8);
344 const JIT_RESULT_UNDEFINED_LABEL
= (-9);
345 const JIT_RESULT_MEMORY_FULL
= (-10000);
348 * Exception handling function for builtin exceptions.
350 type jit_exception_func
= function (exception_type
: Integer): Pointer; libraryLibJITDecl
;
353 * External function declarations.
355 function jit_exception_get_last (): Pointer; libraryLibJITDecl
;
356 function jit_exception_get_last_and_clear (): Pointer; libraryLibJITDecl
;
357 procedure jit_exception_set_last (object_
: Pointer); libraryLibJITDecl
;
358 procedure jit_exception_clear_last (); libraryLibJITDecl
;
359 procedure jit_exception_throw (object_
: Pointer); libraryLibJITDecl
;
360 procedure jit_exception_builtin (exception_type
: Integer); libraryLibJITDecl
;
361 function jit_exception_set_handler (handler
: jit_exception_func
): jit_exception_func
; libraryLibJITDecl
;
362 function jit_exception_get_handler (): jit_exception_func
; libraryLibJITDecl
;
363 function jit_exception_get_stack_trace (): jit_stack_trace_t
; libraryLibJITDecl
;
364 function jit_stack_trace_get_size (trace
: jit_stack_trace_t
): LongWord; libraryLibJITDecl
;
365 function jit_stack_trace_get_function (context
: jit_context_t
; trace
: jit_stack_trace_t
; posn
: LongWord): jit_function_t
; libraryLibJITDecl
;
366 function jit_stack_trace_get_pc (trace
: jit_stack_trace_t
; posn
: LongWord): Pointer; libraryLibJITDecl
;
367 function jit_stack_trace_get_offset (context
: jit_context_t
; trace
: jit_stack_trace_t
; posn
: LongWord): LongWord; libraryLibJITDecl
;
368 procedure jit_stack_trace_free (trace
: jit_stack_trace_t
); libraryLibJITDecl
;
371 (* Optimization levels *)
372 const JIT_OPTLEVEL_NONE
= 0;
373 const JIT_OPTLEVEL_NORMAL
= 1;
375 function jit_function_create (context
: jit_context_t
; signature
: jit_type_t
): jit_function_t
; libraryLibJITDecl
;
376 function jit_function_create_nested (context
: jit_context_t
; signature
: jit_type_t
; parent
: jit_function_t
): jit_function_t
; libraryLibJITDecl
;
377 procedure jit_function_abandon (func
: jit_function_t
); libraryLibJITDecl
;
378 function jit_function_get_context (func
: jit_function_t
): jit_context_t
; libraryLibJITDecl
;
379 function jit_function_get_signature (func
: jit_function_t
): jit_type_t
; libraryLibJITDecl
;
380 function jit_function_set_meta (func
: jit_function_t
; type_
: Integer; data
: Pointer; free_data
: jit_meta_free_func
; build_only
: Integer): Integer; libraryLibJITDecl
;
381 function jit_function_get_meta (func
: jit_function_t
; type_
: Integer): Pointer; libraryLibJITDecl
;
382 procedure jit_function_free_meta (func
: jit_function_t
; type_
: Integer); libraryLibJITDecl
;
383 function jit_function_next (context
: jit_context_t
; prev
: jit_function_t
): jit_function_t
; libraryLibJITDecl
;
384 function jit_function_previous (context
: jit_context_t
; prev
: jit_function_t
): jit_function_t
; libraryLibJITDecl
;
385 function jit_function_get_entry (func
: jit_function_t
): jit_block_t
; libraryLibJITDecl
;
386 function jit_function_get_current (func
: jit_function_t
): jit_block_t
; libraryLibJITDecl
;
387 function jit_function_get_nested_parent (func
: jit_function_t
): jit_function_t
; libraryLibJITDecl
;
388 function jit_function_compile (func
: jit_function_t
): Integer; libraryLibJITDecl
;
389 function jit_function_is_compiled (func
: jit_function_t
): Integer; libraryLibJITDecl
;
390 procedure jit_function_set_recompilable (func
: jit_function_t
); libraryLibJITDecl
;
391 procedure jit_function_clear_recompilable (func
: jit_function_t
); libraryLibJITDecl
;
392 function jit_function_is_recompilable (func
: jit_function_t
): Integer; libraryLibJITDecl
;
393 function jit_function_compile_entry (func
: jit_function_t
; entry_point
: PPointer): Integer; libraryLibJITDecl
;
394 procedure jit_function_setup_entry (func
: jit_function_t
; entry_point
: Pointer); libraryLibJITDecl
;
395 function jit_function_to_closure (func
: jit_function_t
): Pointer; libraryLibJITDecl
;
396 function jit_function_from_closure (context
: jit_context_t
; closure
: Pointer): jit_function_t
; libraryLibJITDecl
;
397 function jit_function_from_pc (context
: jit_context_t
; pc
: Pointer; handler
: PPointer): jit_function_t
; libraryLibJITDecl
;
398 function jit_function_to_vtable_pointer (func
: jit_function_t
): Pointer; libraryLibJITDecl
;
399 function jit_function_from_vtable_pointer (context
: jit_context_t
; vtable_pointer
: Pointer): jit_function_t
; libraryLibJITDecl
;
400 procedure jit_function_set_on_demand_compiler (func
: jit_function_t
; on_demand
: jit_on_demand_func
); libraryLibJITDecl
;
401 function jit_function_get_on_demand_compiler (func
: jit_function_t
): jit_on_demand_func
; libraryLibJITDecl
;
402 function jit_function_apply (func
: jit_function_t
; args
: PPointer; return_area
: Pointer): Integer; libraryLibJITDecl
;
403 function jit_function_apply_vararg (func
: jit_function_t
; signature
: jit_type_t
; args
: PPointer; return_area
: Pointer): Integer; libraryLibJITDecl
;
404 procedure jit_function_set_optimization_level (func
: jit_function_t
; level
: LongWord); libraryLibJITDecl
;
405 function jit_function_get_optimization_level (func
: jit_function_t
): LongWord; libraryLibJITDecl
;
406 function jit_function_get_max_optimization_level (): LongWord; libraryLibJITDecl
;
407 function jit_function_reserve_label (func
: jit_function_t
): jit_label_t
; libraryLibJITDecl
;
408 function jit_function_labels_equal (func
: jit_function_t
; label_
: jit_label_t
; label2
: jit_label_t
): Integer; libraryLibJITDecl
;
411 procedure jit_init (); libraryLibJITDecl
;
413 function jit_uses_interpreter (): Integer; libraryLibJITDecl
;
415 function jit_supports_threads (): Integer; libraryLibJITDecl
;
417 function jit_supports_virtual_memory (): Integer; libraryLibJITDecl
;
419 function jit_supports_closures (): Integer; libraryLibJITDecl
;
421 function jit_get_closure_size (): LongWord; libraryLibJITDecl
;
422 function jit_get_closure_alignment (): LongWord; libraryLibJITDecl
;
423 function jit_get_trampoline_size (): LongWord; libraryLibJITDecl
;
424 function jit_get_trampoline_alignment (): LongWord; libraryLibJITDecl
;
428 * Descriptor for an intrinsic function.
430 type jit_intrinsic_descr_t
= record
431 return_type
: jit_type_t
;
432 ptr_result_type
: jit_type_t
;
433 arg1_type
: jit_type_t
;
434 arg2_type
: jit_type_t
;
436 type pjit_intrinsic_descr_t
= ^jit_intrinsic_descr_t
;
439 * Structure for iterating over the instructions in a block.
440 * This should be treated as opaque.
442 type jit_insn_iter_t
= record
446 type pjit_insn_iter_t
= ^jit_insn_iter_t
;
449 * Flags for "jit_insn_call" and friends.
451 const JIT_CALL_NOTHROW
= (1 shl 0);
452 const JIT_CALL_NORETURN
= (1 shl 1);
453 const JIT_CALL_TAIL
= (1 shl 2);
455 function jit_insn_get_opcode (insn
: jit_insn_t
): Integer; libraryLibJITDecl
;
456 function jit_insn_get_dest (insn
: jit_insn_t
): jit_value_t
; libraryLibJITDecl
;
457 function jit_insn_get_value1 (insn
: jit_insn_t
): jit_value_t
; libraryLibJITDecl
;
458 function jit_insn_get_value2 (insn
: jit_insn_t
): jit_value_t
; libraryLibJITDecl
;
459 function jit_insn_get_label (insn
: jit_insn_t
): jit_label_t
; libraryLibJITDecl
;
460 function jit_insn_get_function (insn
: jit_insn_t
): jit_function_t
; libraryLibJITDecl
;
461 function jit_insn_get_native (insn
: jit_insn_t
): Pointer; libraryLibJITDecl
;
462 function jit_insn_get_name (insn
: jit_insn_t
): PAnsiChar; libraryLibJITDecl
; // const
463 function jit_insn_get_signature (insn
: jit_insn_t
): jit_type_t
; libraryLibJITDecl
;
464 function jit_insn_dest_is_value (insn
: jit_insn_t
): Integer; libraryLibJITDecl
;
466 function jit_insn_label (func
: jit_function_t
; label_
: pjit_label_t
): Integer; libraryLibJITDecl
;
467 function jit_insn_label_tight (func
: jit_function_t
; label_
: pjit_label_t
): Integer; libraryLibJITDecl
;
468 function jit_insn_new_block (func
: jit_function_t
): Integer; libraryLibJITDecl
;
469 function jit_insn_load (func
: jit_function_t
; value
: jit_value_t
): jit_value_t
; libraryLibJITDecl
;
470 function jit_insn_dup (func
: jit_function_t
; value
: jit_value_t
): jit_value_t
; libraryLibJITDecl
;
471 function jit_insn_store (func
: jit_function_t
; dest
: jit_value_t
; value
: jit_value_t
): Integer; libraryLibJITDecl
;
472 function jit_insn_load_relative (func
: jit_function_t
; value
: jit_value_t
; offset
: jit_nint
; type_
: jit_type_t
): jit_value_t
; libraryLibJITDecl
;
473 function jit_insn_store_relative (func
: jit_function_t
; dest
: jit_value_t
; offset
: jit_nint
; value
: jit_value_t
): Integer; libraryLibJITDecl
;
474 function jit_insn_add_relative (func
: jit_function_t
; value
: jit_value_t
; offset
: jit_nint
): jit_value_t
; libraryLibJITDecl
;
475 function jit_insn_load_elem (func
: jit_function_t
; base_addr
: jit_value_t
; index
: jit_value_t
; elem_type
: jit_type_t
): jit_value_t
; libraryLibJITDecl
;
476 function jit_insn_load_elem_address (func
: jit_function_t
; base_addr
: jit_value_t
; index
: jit_value_t
; elem_type
: jit_type_t
): jit_value_t
; libraryLibJITDecl
;
477 function jit_insn_store_elem (func
: jit_function_t
; base_addr
: jit_value_t
; index
: jit_value_t
; value
: jit_value_t
): Integer; libraryLibJITDecl
;
478 function jit_insn_check_null (func
: jit_function_t
; value
: jit_value_t
): Integer; libraryLibJITDecl
;
479 function jit_insn_nop (func
: jit_function_t
): Integer; libraryLibJITDecl
;
481 function jit_insn_add (func
: jit_function_t
; value1
: jit_value_t
; value2
: jit_value_t
): jit_value_t
; libraryLibJITDecl
;
482 function jit_insn_add_ovf (func
: jit_function_t
; value1
: jit_value_t
; value2
: jit_value_t
): jit_value_t
; libraryLibJITDecl
;
483 function jit_insn_sub (func
: jit_function_t
; value1
: jit_value_t
; value2
: jit_value_t
): jit_value_t
; libraryLibJITDecl
;
484 function jit_insn_sub_ovf (func
: jit_function_t
; value1
: jit_value_t
; value2
: jit_value_t
): jit_value_t
; libraryLibJITDecl
;
485 function jit_insn_mul (func
: jit_function_t
; value1
: jit_value_t
; value2
: jit_value_t
): jit_value_t
; libraryLibJITDecl
;
486 function jit_insn_mul_ovf (func
: jit_function_t
; value1
: jit_value_t
; value2
: jit_value_t
): jit_value_t
; libraryLibJITDecl
;
487 function jit_insn_div (func
: jit_function_t
; value1
: jit_value_t
; value2
: jit_value_t
): jit_value_t
; libraryLibJITDecl
;
488 function jit_insn_rem (func
: jit_function_t
; value1
: jit_value_t
; value2
: jit_value_t
): jit_value_t
; libraryLibJITDecl
;
489 function jit_insn_rem_ieee (func
: jit_function_t
; value1
: jit_value_t
; value2
: jit_value_t
): jit_value_t
; libraryLibJITDecl
;
490 function jit_insn_neg (func
: jit_function_t
; value1
: jit_value_t
): jit_value_t
; libraryLibJITDecl
;
491 function jit_insn_and (func
: jit_function_t
; value1
: jit_value_t
; value2
: jit_value_t
): jit_value_t
; libraryLibJITDecl
;
492 function jit_insn_or (func
: jit_function_t
; value1
: jit_value_t
; value2
: jit_value_t
): jit_value_t
; libraryLibJITDecl
;
493 function jit_insn_xor (func
: jit_function_t
; value1
: jit_value_t
; value2
: jit_value_t
): jit_value_t
; libraryLibJITDecl
;
494 function jit_insn_not (func
: jit_function_t
; value1
: jit_value_t
): jit_value_t
; libraryLibJITDecl
;
495 function jit_insn_shl (func
: jit_function_t
; value1
: jit_value_t
; value2
: jit_value_t
): jit_value_t
; libraryLibJITDecl
;
496 function jit_insn_shr (func
: jit_function_t
; value1
: jit_value_t
; value2
: jit_value_t
): jit_value_t
; libraryLibJITDecl
;
497 function jit_insn_ushr (func
: jit_function_t
; value1
: jit_value_t
; value2
: jit_value_t
): jit_value_t
; libraryLibJITDecl
;
498 function jit_insn_sshr (func
: jit_function_t
; value1
: jit_value_t
; value2
: jit_value_t
): jit_value_t
; libraryLibJITDecl
;
499 function jit_insn_eq (func
: jit_function_t
; value1
: jit_value_t
; value2
: jit_value_t
): jit_value_t
; libraryLibJITDecl
;
500 function jit_insn_ne (func
: jit_function_t
; value1
: jit_value_t
; value2
: jit_value_t
): jit_value_t
; libraryLibJITDecl
;
501 function jit_insn_lt (func
: jit_function_t
; value1
: jit_value_t
; value2
: jit_value_t
): jit_value_t
; libraryLibJITDecl
;
502 function jit_insn_le (func
: jit_function_t
; value1
: jit_value_t
; value2
: jit_value_t
): jit_value_t
; libraryLibJITDecl
;
503 function jit_insn_gt (func
: jit_function_t
; value1
: jit_value_t
; value2
: jit_value_t
): jit_value_t
; libraryLibJITDecl
;
504 function jit_insn_ge (func
: jit_function_t
; value1
: jit_value_t
; value2
: jit_value_t
): jit_value_t
; libraryLibJITDecl
;
505 function jit_insn_cmpl (func
: jit_function_t
; value1
: jit_value_t
; value2
: jit_value_t
): jit_value_t
; libraryLibJITDecl
;
506 function jit_insn_cmpg (func
: jit_function_t
; value1
: jit_value_t
; value2
: jit_value_t
): jit_value_t
; libraryLibJITDecl
;
507 function jit_insn_to_bool (func
: jit_function_t
; value1
: jit_value_t
): jit_value_t
; libraryLibJITDecl
;
508 function jit_insn_to_not_bool (func
: jit_function_t
; value1
: jit_value_t
): jit_value_t
; libraryLibJITDecl
;
509 function jit_insn_acos (func
: jit_function_t
; value1
: jit_value_t
): jit_value_t
; libraryLibJITDecl
;
510 function jit_insn_asin (func
: jit_function_t
; value1
: jit_value_t
): jit_value_t
; libraryLibJITDecl
;
511 function jit_insn_atan (func
: jit_function_t
; value1
: jit_value_t
): jit_value_t
; libraryLibJITDecl
;
512 function jit_insn_atan2 (func
: jit_function_t
; value1
: jit_value_t
; value2
: jit_value_t
): jit_value_t
; libraryLibJITDecl
;
513 function jit_insn_ceil (func
: jit_function_t
; value1
: jit_value_t
): jit_value_t
; libraryLibJITDecl
;
514 function jit_insn_cos (func
: jit_function_t
; value1
: jit_value_t
): jit_value_t
; libraryLibJITDecl
;
515 function jit_insn_cosh (func
: jit_function_t
; value1
: jit_value_t
): jit_value_t
; libraryLibJITDecl
;
516 function jit_insn_exp (func
: jit_function_t
; value1
: jit_value_t
): jit_value_t
; libraryLibJITDecl
;
517 function jit_insn_floor (func
: jit_function_t
; value1
: jit_value_t
): jit_value_t
; libraryLibJITDecl
;
518 function jit_insn_log (func
: jit_function_t
; value1
: jit_value_t
): jit_value_t
; libraryLibJITDecl
;
519 function jit_insn_log10 (func
: jit_function_t
; value1
: jit_value_t
): jit_value_t
; libraryLibJITDecl
;
520 function jit_insn_pow (func
: jit_function_t
; value1
: jit_value_t
; value2
: jit_value_t
): jit_value_t
; libraryLibJITDecl
;
521 function jit_insn_rint (func
: jit_function_t
; value1
: jit_value_t
): jit_value_t
; libraryLibJITDecl
;
522 function jit_insn_round (func
: jit_function_t
; value1
: jit_value_t
): jit_value_t
; libraryLibJITDecl
;
523 function jit_insn_sin (func
: jit_function_t
; value1
: jit_value_t
): jit_value_t
; libraryLibJITDecl
;
524 function jit_insn_sinh (func
: jit_function_t
; value1
: jit_value_t
): jit_value_t
; libraryLibJITDecl
;
525 function jit_insn_sqrt (func
: jit_function_t
; value1
: jit_value_t
): jit_value_t
; libraryLibJITDecl
;
526 function jit_insn_tan (func
: jit_function_t
; value1
: jit_value_t
): jit_value_t
; libraryLibJITDecl
;
527 function jit_insn_tanh (func
: jit_function_t
; value1
: jit_value_t
): jit_value_t
; libraryLibJITDecl
;
528 function jit_insn_trunc (func
: jit_function_t
; value1
: jit_value_t
): jit_value_t
; libraryLibJITDecl
;
529 function jit_insn_is_nan (func
: jit_function_t
; value1
: jit_value_t
): jit_value_t
; libraryLibJITDecl
;
530 function jit_insn_is_finite (func
: jit_function_t
; value1
: jit_value_t
): jit_value_t
; libraryLibJITDecl
;
531 function jit_insn_is_inf (func
: jit_function_t
; value1
: jit_value_t
): jit_value_t
; libraryLibJITDecl
;
532 function jit_insn_abs (func
: jit_function_t
; value1
: jit_value_t
): jit_value_t
; libraryLibJITDecl
;
533 function jit_insn_min (func
: jit_function_t
; value1
: jit_value_t
; value2
: jit_value_t
): jit_value_t
; libraryLibJITDecl
;
534 function jit_insn_max (func
: jit_function_t
; value1
: jit_value_t
; value2
: jit_value_t
): jit_value_t
; libraryLibJITDecl
;
535 function jit_insn_sign (func
: jit_function_t
; value1
: jit_value_t
): jit_value_t
; libraryLibJITDecl
;
536 function jit_insn_branch (func
: jit_function_t
; label_
: pjit_label_t
): Integer; libraryLibJITDecl
;
537 function jit_insn_branch_if (func
: jit_function_t
; value
: jit_value_t
; label_
: pjit_label_t
): Integer; libraryLibJITDecl
;
538 function jit_insn_branch_if_not (func
: jit_function_t
; value
: jit_value_t
; label_
: pjit_label_t
): Integer; libraryLibJITDecl
;
539 function jit_insn_jump_table (func
: jit_function_t
; value
: jit_value_t
; labels
: pjit_label_t
; num_labels
: LongWord): Integer; libraryLibJITDecl
;
540 function jit_insn_address_of (func
: jit_function_t
; value1
: jit_value_t
): jit_value_t
; libraryLibJITDecl
;
541 function jit_insn_address_of_label (func
: jit_function_t
; label_
: pjit_label_t
): jit_value_t
; libraryLibJITDecl
;
542 function jit_insn_convert (func
: jit_function_t
; value
: jit_value_t
; type_
: jit_type_t
; overflow_check
: Integer): jit_value_t
; libraryLibJITDecl
;
544 function jit_insn_call (func
: jit_function_t
; const name
: PAnsiChar; jit_func
: jit_function_t
; signature
: jit_type_t
; args
: pjit_value_t
; num_args
: LongWord; flags
: Integer): jit_value_t
; libraryLibJITDecl
;
545 function jit_insn_call_indirect (func
: jit_function_t
; value
: jit_value_t
; signature
: jit_type_t
; args
: pjit_value_t
; num_args
: LongWord; flags
: Integer): jit_value_t
; libraryLibJITDecl
;
546 function jit_insn_call_indirect_vtable (func
: jit_function_t
; value
: jit_value_t
; signature
: jit_type_t
; args
: pjit_value_t
; num_args
: LongWord; flags
: Integer): jit_value_t
; libraryLibJITDecl
;
547 function jit_insn_call_native (func
: jit_function_t
; const name
: PAnsiChar; native_func
: Pointer; signature
: jit_type_t
; args
: pjit_value_t
; num_args
: LongWord; flags
: Integer): jit_value_t
; libraryLibJITDecl
;
548 function jit_insn_call_intrinsic (func
: jit_function_t
; const name
: PAnsiChar; intrinsic_func
: Pointer; const descriptor
: pjit_intrinsic_descr_t
; arg1
: jit_value_t
; arg2
: jit_value_t
): jit_value_t
; libraryLibJITDecl
;
549 function jit_insn_incoming_reg (func
: jit_function_t
; value
: jit_value_t
; reg
: Integer): Integer; libraryLibJITDecl
;
550 function jit_insn_incoming_frame_posn (func
: jit_function_t
; value
: jit_value_t
; frame_offset
: jit_nint
): Integer; libraryLibJITDecl
;
551 function jit_insn_outgoing_reg (func
: jit_function_t
; value
: jit_value_t
; reg
: Integer): Integer; libraryLibJITDecl
;
552 function jit_insn_outgoing_frame_posn (func
: jit_function_t
; value
: jit_value_t
; frame_offset
: jit_nint
): Integer; libraryLibJITDecl
;
553 function jit_insn_return_reg (func
: jit_function_t
; value
: jit_value_t
; reg
: Integer): Integer; libraryLibJITDecl
;
554 function jit_insn_setup_for_nested (func
: jit_function_t
; nested_level
: Integer; reg
: Integer): Integer; libraryLibJITDecl
;
555 function jit_insn_flush_struct (func
: jit_function_t
; value
: jit_value_t
): Integer; libraryLibJITDecl
;
556 function jit_insn_import (func
: jit_function_t
; value
: jit_value_t
): jit_value_t
; libraryLibJITDecl
;
557 function jit_insn_push (func
: jit_function_t
; value
: jit_value_t
): Integer; libraryLibJITDecl
;
558 function jit_insn_push_ptr (func
: jit_function_t
; value
: jit_value_t
; type_
: jit_type_t
): Integer; libraryLibJITDecl
;
559 function jit_insn_set_param (func
: jit_function_t
; value
: jit_value_t
; offset
: jit_nint
): Integer; libraryLibJITDecl
;
560 function jit_insn_set_param_ptr (func
: jit_function_t
; value
: jit_value_t
; type_
: jit_type_t
; offset
: jit_nint
): Integer; libraryLibJITDecl
;
561 function jit_insn_push_return_area_ptr (func
: jit_function_t
): Integer; libraryLibJITDecl
;
562 function jit_insn_pop_stack (func
: jit_function_t
; num_items
: jit_nint
): Integer; libraryLibJITDecl
;
563 function jit_insn_defer_pop_stack (func
: jit_function_t
; num_items
: jit_nint
): Integer; libraryLibJITDecl
;
564 function jit_insn_flush_defer_pop (func
: jit_function_t
; num_items
: jit_nint
): Integer; libraryLibJITDecl
;
565 function jit_insn_return (func
: jit_function_t
; value
: jit_value_t
): Integer; libraryLibJITDecl
;
566 function jit_insn_return_ptr (func
: jit_function_t
; value
: jit_value_t
; type_
: jit_type_t
): Integer; libraryLibJITDecl
;
567 function jit_insn_default_return (func
: jit_function_t
): Integer; libraryLibJITDecl
;
568 function jit_insn_throw (func
: jit_function_t
; value
: jit_value_t
): Integer; libraryLibJITDecl
;
569 function jit_insn_get_call_stack (func
: jit_function_t
): jit_value_t
; libraryLibJITDecl
;
571 function jit_insn_thrown_exception (func
: jit_function_t
): jit_value_t
; libraryLibJITDecl
;
572 function jit_insn_uses_catcher (func
: jit_function_t
): Integer; libraryLibJITDecl
;
573 function jit_insn_start_catcher (func
: jit_function_t
): jit_value_t
; libraryLibJITDecl
;
574 function jit_insn_branch_if_pc_not_in_range (func
: jit_function_t
; start_label
: jit_label_t
; end_label
: jit_label_t
; label_
: pjit_label_t
): Integer; libraryLibJITDecl
;
575 function jit_insn_rethrow_unhandled (func
: jit_function_t
): Integer; libraryLibJITDecl
;
576 function jit_insn_start_finally (func
: jit_function_t
; finally_label
: pjit_label_t
): Integer; libraryLibJITDecl
;
577 function jit_insn_return_from_finally (func
: jit_function_t
): Integer; libraryLibJITDecl
;
578 function jit_insn_call_finally (func
: jit_function_t
; finally_label
: pjit_label_t
): Integer; libraryLibJITDecl
;
579 function jit_insn_start_filter (func
: jit_function_t
; label_
: pjit_label_t
; type_
: jit_type_t
): jit_value_t
; libraryLibJITDecl
;
580 function jit_insn_return_from_filter (func
: jit_function_t
; value
: jit_value_t
): Integer; libraryLibJITDecl
;
581 function jit_insn_call_filter (func
: jit_function_t
; label_
: pjit_label_t
; value
: jit_value_t
; type_
: jit_type_t
): jit_value_t
; libraryLibJITDecl
;
583 function jit_insn_memcpy (func
: jit_function_t
; dest
: jit_value_t
; src
: jit_value_t
; size
: jit_value_t
): Integer; libraryLibJITDecl
;
584 function jit_insn_memmove (func
: jit_function_t
; dest
: jit_value_t
; src
: jit_value_t
; size
: jit_value_t
): Integer; libraryLibJITDecl
;
585 function jit_insn_memset (func
: jit_function_t
; dest
: jit_value_t
; value
: jit_value_t
; size
: jit_value_t
): Integer; libraryLibJITDecl
;
586 function jit_insn_alloca (func
: jit_function_t
; size
: jit_value_t
): jit_value_t
; libraryLibJITDecl
;
588 function jit_insn_move_blocks_to_end (func
: jit_function_t
; from_label
: jit_label_t
; to_label
: jit_label_t
): Integer; libraryLibJITDecl
;
589 function jit_insn_move_blocks_to_start (func
: jit_function_t
; from_label
: jit_label_t
; to_label
: jit_label_t
): Integer; libraryLibJITDecl
;
591 function jit_insn_mark_offset (func
: jit_function_t
; offset
: jit_int
): Integer; libraryLibJITDecl
;
592 function jit_insn_mark_breakpoint (func
: jit_function_t
; data1
: jit_nint
; data2
: jit_nint
): Integer; libraryLibJITDecl
;
593 function jit_insn_mark_breakpoint_variable (func
: jit_function_t
; data1
: jit_value_t
; data2
: jit_value_t
): Integer; libraryLibJITDecl
;
595 procedure jit_insn_iter_init (iter
: pjit_insn_iter_t
; block
: jit_block_t
); libraryLibJITDecl
;
596 procedure jit_insn_iter_init_last (iter
: pjit_insn_iter_t
; block
: jit_block_t
); libraryLibJITDecl
;
597 function jit_insn_iter_next (iter
: pjit_insn_iter_t
): jit_insn_t
; libraryLibJITDecl
;
598 function jit_insn_iter_previous (iter
: pjit_insn_iter_t
): jit_insn_t
; libraryLibJITDecl
;
602 * Perform operations on signed 32-bit integers.
604 function jit_int_add (value1
: jit_int
; value2
: jit_int
): jit_int
; libraryLibJITDecl
;
605 function jit_int_sub (value1
: jit_int
; value2
: jit_int
): jit_int
; libraryLibJITDecl
;
606 function jit_int_mul (value1
: jit_int
; value2
: jit_int
): jit_int
; libraryLibJITDecl
;
607 function jit_int_div (result_
: pjit_int
; value1
: jit_int
; value2
: jit_int
): jit_int
; libraryLibJITDecl
;
608 function jit_int_rem (result_
: pjit_int
; value1
: jit_int
; value2
: jit_int
): jit_int
; libraryLibJITDecl
;
609 function jit_int_add_ovf (result_
: pjit_int
; value1
: jit_int
; value2
: jit_int
): jit_int
; libraryLibJITDecl
;
610 function jit_int_sub_ovf (result_
: pjit_int
; value1
: jit_int
; value2
: jit_int
): jit_int
; libraryLibJITDecl
;
611 function jit_int_mul_ovf (result_
: pjit_int
; value1
: jit_int
; value2
: jit_int
): jit_int
; libraryLibJITDecl
;
612 function jit_int_neg (value1
: jit_int
): jit_int
; libraryLibJITDecl
;
613 function jit_int_and (value1
: jit_int
; value2
: jit_int
): jit_int
; libraryLibJITDecl
;
614 function jit_int_or (value1
: jit_int
; value2
: jit_int
): jit_int
; libraryLibJITDecl
;
615 function jit_int_xor (value1
: jit_int
; value2
: jit_int
): jit_int
; libraryLibJITDecl
;
616 function jit_int_not (value1
: jit_int
): jit_int
; libraryLibJITDecl
;
617 function jit_int_shl (value1
: jit_int
; value2
: jit_uint
): jit_int
; libraryLibJITDecl
;
618 function jit_int_shr (value1
: jit_int
; value2
: jit_uint
): jit_int
; libraryLibJITDecl
;
619 function jit_int_eq (value1
: jit_int
; value2
: jit_int
): jit_int
; libraryLibJITDecl
;
620 function jit_int_ne (value1
: jit_int
; value2
: jit_int
): jit_int
; libraryLibJITDecl
;
621 function jit_int_lt (value1
: jit_int
; value2
: jit_int
): jit_int
; libraryLibJITDecl
;
622 function jit_int_le (value1
: jit_int
; value2
: jit_int
): jit_int
; libraryLibJITDecl
;
623 function jit_int_gt (value1
: jit_int
; value2
: jit_int
): jit_int
; libraryLibJITDecl
;
624 function jit_int_ge (value1
: jit_int
; value2
: jit_int
): jit_int
; libraryLibJITDecl
;
625 function jit_int_cmp (value1
: jit_int
; value2
: jit_int
): jit_int
; libraryLibJITDecl
;
626 function jit_int_abs (value1
: jit_int
): jit_int
; libraryLibJITDecl
;
627 function jit_int_min (value1
: jit_int
; value2
: jit_int
): jit_int
; libraryLibJITDecl
;
628 function jit_int_max (value1
: jit_int
; value2
: jit_int
): jit_int
; libraryLibJITDecl
;
629 function jit_int_sign (value1
: jit_int
): jit_int
; libraryLibJITDecl
;
632 * Perform operations on unsigned 32-bit integers.
634 function jit_uint_add (value1
: jit_uint
; value2
: jit_uint
): jit_uint
; libraryLibJITDecl
;
635 function jit_uint_sub (value1
: jit_uint
; value2
: jit_uint
): jit_uint
; libraryLibJITDecl
;
636 function jit_uint_mul (value1
: jit_uint
; value2
: jit_uint
): jit_uint
; libraryLibJITDecl
;
637 function jit_uint_div (result_
: pjit_uint
; value1
: jit_uint
; value2
: jit_uint
): jit_int
; libraryLibJITDecl
;
638 function jit_uint_rem (result_
: pjit_uint
; value1
: jit_uint
; value2
: jit_uint
): jit_int
; libraryLibJITDecl
;
639 function jit_uint_add_ovf (result_
: pjit_uint
; value1
: jit_uint
; value2
: jit_uint
): jit_int
; libraryLibJITDecl
;
640 function jit_uint_sub_ovf (result_
: pjit_uint
; value1
: jit_uint
; value2
: jit_uint
): jit_int
; libraryLibJITDecl
;
641 function jit_uint_mul_ovf (result_
: pjit_uint
; value1
: jit_uint
; value2
: jit_uint
): jit_int
; libraryLibJITDecl
;
642 function jit_uint_neg (value1
: jit_uint
): jit_uint
; libraryLibJITDecl
;
643 function jit_uint_and (value1
: jit_uint
; value2
: jit_uint
): jit_uint
; libraryLibJITDecl
;
644 function jit_uint_or (value1
: jit_uint
; value2
: jit_uint
): jit_uint
; libraryLibJITDecl
;
645 function jit_uint_xor (value1
: jit_uint
; value2
: jit_uint
): jit_uint
; libraryLibJITDecl
;
646 function jit_uint_not (value1
: jit_uint
): jit_uint
; libraryLibJITDecl
;
647 function jit_uint_shl (value1
: jit_uint
; value2
: jit_uint
): jit_uint
; libraryLibJITDecl
;
648 function jit_uint_shr (value1
: jit_uint
; value2
: jit_uint
): jit_uint
; libraryLibJITDecl
;
649 function jit_uint_eq (value1
: jit_uint
; value2
: jit_uint
): jit_int
; libraryLibJITDecl
;
650 function jit_uint_ne (value1
: jit_uint
; value2
: jit_uint
): jit_int
; libraryLibJITDecl
;
651 function jit_uint_lt (value1
: jit_uint
; value2
: jit_uint
): jit_int
; libraryLibJITDecl
;
652 function jit_uint_le (value1
: jit_uint
; value2
: jit_uint
): jit_int
; libraryLibJITDecl
;
653 function jit_uint_gt (value1
: jit_uint
; value2
: jit_uint
): jit_int
; libraryLibJITDecl
;
654 function jit_uint_ge (value1
: jit_uint
; value2
: jit_uint
): jit_int
; libraryLibJITDecl
;
655 function jit_uint_cmp (value1
: jit_uint
; value2
: jit_uint
): jit_int
; libraryLibJITDecl
;
656 function jit_uint_min (value1
: jit_uint
; value2
: jit_uint
): jit_uint
; libraryLibJITDecl
;
657 function jit_uint_max (value1
: jit_uint
; value2
: jit_uint
): jit_uint
; libraryLibJITDecl
;
660 * Perform operations on signed 64-bit integers.
662 function jit_long_add (value1
: jit_long
; value2
: jit_long
): jit_long
; libraryLibJITDecl
;
663 function jit_long_sub (value1
: jit_long
; value2
: jit_long
): jit_long
; libraryLibJITDecl
;
664 function jit_long_mul (value1
: jit_long
; value2
: jit_long
): jit_long
; libraryLibJITDecl
;
665 function jit_long_div (result_
: pjit_long
; value1
: jit_long
; value2
: jit_long
): jit_int
; libraryLibJITDecl
;
666 function jit_long_rem (result_
: pjit_long
; value1
: jit_long
; value2
: jit_long
): jit_int
; libraryLibJITDecl
;
667 function jit_long_add_ovf (result_
: pjit_long
; value1
: jit_long
; value2
: jit_long
): jit_int
; libraryLibJITDecl
;
668 function jit_long_sub_ovf (result_
: pjit_long
; value1
: jit_long
; value2
: jit_long
): jit_int
; libraryLibJITDecl
;
669 function jit_long_mul_ovf (result_
: pjit_long
; value1
: jit_long
; value2
: jit_long
): jit_int
; libraryLibJITDecl
;
670 function jit_long_neg (value1
: jit_long
): jit_long
; libraryLibJITDecl
;
671 function jit_long_and (value1
: jit_long
; value2
: jit_long
): jit_long
; libraryLibJITDecl
;
672 function jit_long_or (value1
: jit_long
; value2
: jit_long
): jit_long
; libraryLibJITDecl
;
673 function jit_long_xor (value1
: jit_long
; value2
: jit_long
): jit_long
; libraryLibJITDecl
;
674 function jit_long_not (value1
: jit_long
): jit_long
; libraryLibJITDecl
;
675 function jit_long_shl (value1
: jit_long
; value2
: jit_uint
): jit_long
; libraryLibJITDecl
;
676 function jit_long_shr (value1
: jit_long
; value2
: jit_uint
): jit_long
; libraryLibJITDecl
;
677 function jit_long_eq (value1
: jit_long
; value2
: jit_long
): jit_int
; libraryLibJITDecl
;
678 function jit_long_ne (value1
: jit_long
; value2
: jit_long
): jit_int
; libraryLibJITDecl
;
679 function jit_long_lt (value1
: jit_long
; value2
: jit_long
): jit_int
; libraryLibJITDecl
;
680 function jit_long_le (value1
: jit_long
; value2
: jit_long
): jit_int
; libraryLibJITDecl
;
681 function jit_long_gt (value1
: jit_long
; value2
: jit_long
): jit_int
; libraryLibJITDecl
;
682 function jit_long_ge (value1
: jit_long
; value2
: jit_long
): jit_int
; libraryLibJITDecl
;
683 function jit_long_cmp (value1
: jit_long
; value2
: jit_long
): jit_int
; libraryLibJITDecl
;
684 function jit_long_abs (value1
: jit_long
): jit_long
; libraryLibJITDecl
;
685 function jit_long_min (value1
: jit_long
; value2
: jit_long
): jit_long
; libraryLibJITDecl
;
686 function jit_long_max (value1
: jit_long
; value2
: jit_long
): jit_long
; libraryLibJITDecl
;
687 function jit_long_sign (value1
: jit_long
): jit_int
; libraryLibJITDecl
;
690 * Perform operations on unsigned 64-bit integers.
692 function jit_ulong_add (value1
: jit_ulong
; value2
: jit_ulong
): jit_ulong
; libraryLibJITDecl
;
693 function jit_ulong_sub (value1
: jit_ulong
; value2
: jit_ulong
): jit_ulong
; libraryLibJITDecl
;
694 function jit_ulong_mul (value1
: jit_ulong
; value2
: jit_ulong
): jit_ulong
; libraryLibJITDecl
;
695 function jit_ulong_div (result_
: pjit_ulong
; value1
: jit_ulong
; value2
: jit_ulong
): jit_int
; libraryLibJITDecl
;
696 function jit_ulong_rem (result_
: pjit_ulong
; value1
: jit_ulong
; value2
: jit_ulong
): jit_int
; libraryLibJITDecl
;
697 function jit_ulong_add_ovf (result_
: pjit_ulong
; value1
: jit_ulong
; value2
: jit_ulong
): jit_int
; libraryLibJITDecl
;
698 function jit_ulong_sub_ovf (result_
: pjit_ulong
; value1
: jit_ulong
; value2
: jit_ulong
): jit_int
; libraryLibJITDecl
;
699 function jit_ulong_mul_ovf (result_
: pjit_ulong
; value1
: jit_ulong
; value2
: jit_ulong
): jit_int
; libraryLibJITDecl
;
700 function jit_ulong_neg (value1
: jit_ulong
): jit_ulong
; libraryLibJITDecl
;
701 function jit_ulong_and (value1
: jit_ulong
; value2
: jit_ulong
): jit_ulong
; libraryLibJITDecl
;
702 function jit_ulong_or (value1
: jit_ulong
; value2
: jit_ulong
): jit_ulong
; libraryLibJITDecl
;
703 function jit_ulong_xor (value1
: jit_ulong
; value2
: jit_ulong
): jit_ulong
; libraryLibJITDecl
;
704 function jit_ulong_not (value1
: jit_ulong
): jit_ulong
; libraryLibJITDecl
;
705 function jit_ulong_shl (value1
: jit_ulong
; value2
: jit_uint
): jit_ulong
; libraryLibJITDecl
;
706 function jit_ulong_shr (value1
: jit_ulong
; value2
: jit_uint
): jit_ulong
; libraryLibJITDecl
;
707 function jit_ulong_eq (value1
: jit_ulong
; value2
: jit_ulong
): jit_int
; libraryLibJITDecl
;
708 function jit_ulong_ne (value1
: jit_ulong
; value2
: jit_ulong
): jit_int
; libraryLibJITDecl
;
709 function jit_ulong_lt (value1
: jit_ulong
; value2
: jit_ulong
): jit_int
; libraryLibJITDecl
;
710 function jit_ulong_le (value1
: jit_ulong
; value2
: jit_ulong
): jit_int
; libraryLibJITDecl
;
711 function jit_ulong_gt (value1
: jit_ulong
; value2
: jit_ulong
): jit_int
; libraryLibJITDecl
;
712 function jit_ulong_ge (value1
: jit_ulong
; value2
: jit_ulong
): jit_int
; libraryLibJITDecl
;
713 function jit_ulong_cmp (value1
: jit_ulong
; value2
: jit_ulong
): jit_int
; libraryLibJITDecl
;
714 function jit_ulong_min (value1
: jit_ulong
; value2
: jit_ulong
): jit_ulong
; libraryLibJITDecl
;
715 function jit_ulong_max (value1
: jit_ulong
; value2
: jit_ulong
): jit_ulong
; libraryLibJITDecl
;
718 * Perform operations on 32-bit floating-point values.
720 function jit_float32_add (value1
: jit_float32
; value2
: jit_float32
): jit_float32
; libraryLibJITDecl
;
721 function jit_float32_sub (value1
: jit_float32
; value2
: jit_float32
): jit_float32
; libraryLibJITDecl
;
722 function jit_float32_mul (value1
: jit_float32
; value2
: jit_float32
): jit_float32
; libraryLibJITDecl
;
723 function jit_float32_div (value1
: jit_float32
; value2
: jit_float32
): jit_float32
; libraryLibJITDecl
;
724 function jit_float32_rem (value1
: jit_float32
; value2
: jit_float32
): jit_float32
; libraryLibJITDecl
;
725 function jit_float32_ieee_rem (value1
: jit_float32
; value2
: jit_float32
): jit_float32
; libraryLibJITDecl
;
726 function jit_float32_neg (value1
: jit_float32
): jit_float32
; libraryLibJITDecl
;
727 function jit_float32_eq (value1
: jit_float32
; value2
: jit_float32
): jit_int
; libraryLibJITDecl
;
728 function jit_float32_ne (value1
: jit_float32
; value2
: jit_float32
): jit_int
; libraryLibJITDecl
;
729 function jit_float32_lt (value1
: jit_float32
; value2
: jit_float32
): jit_int
; libraryLibJITDecl
;
730 function jit_float32_le (value1
: jit_float32
; value2
: jit_float32
): jit_int
; libraryLibJITDecl
;
731 function jit_float32_gt (value1
: jit_float32
; value2
: jit_float32
): jit_int
; libraryLibJITDecl
;
732 function jit_float32_ge (value1
: jit_float32
; value2
: jit_float32
): jit_int
; libraryLibJITDecl
;
733 function jit_float32_cmpl (value1
: jit_float32
; value2
: jit_float32
): jit_int
; libraryLibJITDecl
;
734 function jit_float32_cmpg (value1
: jit_float32
; value2
: jit_float32
): jit_int
; libraryLibJITDecl
;
735 function jit_float32_acos (value1
: jit_float32
): jit_float32
; libraryLibJITDecl
;
736 function jit_float32_asin (value1
: jit_float32
): jit_float32
; libraryLibJITDecl
;
737 function jit_float32_atan (value1
: jit_float32
): jit_float32
; libraryLibJITDecl
;
738 function jit_float32_atan2 (value1
: jit_float32
; value2
: jit_float32
): jit_float32
; libraryLibJITDecl
;
739 function jit_float32_ceil (value1
: jit_float32
): jit_float32
; libraryLibJITDecl
;
740 function jit_float32_cos (value1
: jit_float32
): jit_float32
; libraryLibJITDecl
;
741 function jit_float32_cosh (value1
: jit_float32
): jit_float32
; libraryLibJITDecl
;
742 function jit_float32_exp (value1
: jit_float32
): jit_float32
; libraryLibJITDecl
;
743 function jit_float32_floor (value1
: jit_float32
): jit_float32
; libraryLibJITDecl
;
744 function jit_float32_log (value1
: jit_float32
): jit_float32
; libraryLibJITDecl
;
745 function jit_float32_log10 (value1
: jit_float32
): jit_float32
; libraryLibJITDecl
;
746 function jit_float32_pow (value1
: jit_float32
; value2
: jit_float32
): jit_float32
; libraryLibJITDecl
;
747 function jit_float32_rint (value1
: jit_float32
): jit_float32
; libraryLibJITDecl
;
748 function jit_float32_round (value1
: jit_float32
): jit_float32
; libraryLibJITDecl
;
749 function jit_float32_sin (value1
: jit_float32
): jit_float32
; libraryLibJITDecl
;
750 function jit_float32_sinh (value1
: jit_float32
): jit_float32
; libraryLibJITDecl
;
751 function jit_float32_sqrt (value1
: jit_float32
): jit_float32
; libraryLibJITDecl
;
752 function jit_float32_tan (value1
: jit_float32
): jit_float32
; libraryLibJITDecl
;
753 function jit_float32_tanh (value1
: jit_float32
): jit_float32
; libraryLibJITDecl
;
754 function jit_float32_trunc (value1
: jit_float32
): jit_float32
; libraryLibJITDecl
;
755 function jit_float32_is_finite (value
: jit_float32
): jit_int
; libraryLibJITDecl
;
756 function jit_float32_is_nan (value
: jit_float32
): jit_int
; libraryLibJITDecl
;
757 function jit_float32_is_inf (value
: jit_float32
): jit_int
; libraryLibJITDecl
;
758 function jit_float32_abs (value1
: jit_float32
): jit_float32
; libraryLibJITDecl
;
759 function jit_float32_min (value1
: jit_float32
; value2
: jit_float32
): jit_float32
; libraryLibJITDecl
;
760 function jit_float32_max (value1
: jit_float32
; value2
: jit_float32
): jit_float32
; libraryLibJITDecl
;
761 function jit_float32_sign (value1
: jit_float32
): jit_int
; libraryLibJITDecl
;
764 * Perform operations on 64-bit floating-point values.
766 function jit_float64_add (value1
: jit_float64
; value2
: jit_float64
): jit_float64
; libraryLibJITDecl
;
767 function jit_float64_sub (value1
: jit_float64
; value2
: jit_float64
): jit_float64
; libraryLibJITDecl
;
768 function jit_float64_mul (value1
: jit_float64
; value2
: jit_float64
): jit_float64
; libraryLibJITDecl
;
769 function jit_float64_div (value1
: jit_float64
; value2
: jit_float64
): jit_float64
; libraryLibJITDecl
;
770 function jit_float64_rem (value1
: jit_float64
; value2
: jit_float64
): jit_float64
; libraryLibJITDecl
;
771 function jit_float64_ieee_rem (value1
: jit_float64
; value2
: jit_float64
): jit_float64
; libraryLibJITDecl
;
772 function jit_float64_neg (value1
: jit_float64
): jit_float64
; libraryLibJITDecl
;
773 function jit_float64_eq (value1
: jit_float64
; value2
: jit_float64
): jit_int
; libraryLibJITDecl
;
774 function jit_float64_ne (value1
: jit_float64
; value2
: jit_float64
): jit_int
; libraryLibJITDecl
;
775 function jit_float64_lt (value1
: jit_float64
; value2
: jit_float64
): jit_int
; libraryLibJITDecl
;
776 function jit_float64_le (value1
: jit_float64
; value2
: jit_float64
): jit_int
; libraryLibJITDecl
;
777 function jit_float64_gt (value1
: jit_float64
; value2
: jit_float64
): jit_int
; libraryLibJITDecl
;
778 function jit_float64_ge (value1
: jit_float64
; value2
: jit_float64
): jit_int
; libraryLibJITDecl
;
779 function jit_float64_cmpl (value1
: jit_float64
; value2
: jit_float64
): jit_int
; libraryLibJITDecl
;
780 function jit_float64_cmpg (value1
: jit_float64
; value2
: jit_float64
): jit_int
; libraryLibJITDecl
;
781 function jit_float64_acos (value1
: jit_float64
): jit_float64
; libraryLibJITDecl
;
782 function jit_float64_asin (value1
: jit_float64
): jit_float64
; libraryLibJITDecl
;
783 function jit_float64_atan (value1
: jit_float64
): jit_float64
; libraryLibJITDecl
;
784 function jit_float64_atan2 (value1
: jit_float64
; value2
: jit_float64
): jit_float64
; libraryLibJITDecl
;
785 function jit_float64_ceil (value1
: jit_float64
): jit_float64
; libraryLibJITDecl
;
786 function jit_float64_cos (value1
: jit_float64
): jit_float64
; libraryLibJITDecl
;
787 function jit_float64_cosh (value1
: jit_float64
): jit_float64
; libraryLibJITDecl
;
788 function jit_float64_exp (value1
: jit_float64
): jit_float64
; libraryLibJITDecl
;
789 function jit_float64_floor (value1
: jit_float64
): jit_float64
; libraryLibJITDecl
;
790 function jit_float64_log (value1
: jit_float64
): jit_float64
; libraryLibJITDecl
;
791 function jit_float64_log10 (value1
: jit_float64
): jit_float64
; libraryLibJITDecl
;
792 function jit_float64_pow (value1
: jit_float64
; value2
: jit_float64
): jit_float64
; libraryLibJITDecl
;
793 function jit_float64_rint (value1
: jit_float64
): jit_float64
; libraryLibJITDecl
;
794 function jit_float64_round (value1
: jit_float64
): jit_float64
; libraryLibJITDecl
;
795 function jit_float64_sin (value1
: jit_float64
): jit_float64
; libraryLibJITDecl
;
796 function jit_float64_sinh (value1
: jit_float64
): jit_float64
; libraryLibJITDecl
;
797 function jit_float64_sqrt (value1
: jit_float64
): jit_float64
; libraryLibJITDecl
;
798 function jit_float64_tan (value1
: jit_float64
): jit_float64
; libraryLibJITDecl
;
799 function jit_float64_tanh (value1
: jit_float64
): jit_float64
; libraryLibJITDecl
;
800 function jit_float64_trunc (value1
: jit_float64
): jit_float64
; libraryLibJITDecl
;
801 function jit_float64_is_finite (value
: jit_float64
): jit_int
; libraryLibJITDecl
;
802 function jit_float64_is_nan (value
: jit_float64
): jit_int
; libraryLibJITDecl
;
803 function jit_float64_is_inf (value
: jit_float64
): jit_int
; libraryLibJITDecl
;
804 function jit_float64_abs (value1
: jit_float64
): jit_float64
; libraryLibJITDecl
;
805 function jit_float64_min (value1
: jit_float64
; value2
: jit_float64
): jit_float64
; libraryLibJITDecl
;
806 function jit_float64_max (value1
: jit_float64
; value2
: jit_float64
): jit_float64
; libraryLibJITDecl
;
807 function jit_float64_sign (value1
: jit_float64
): jit_int
; libraryLibJITDecl
;
810 * Perform operations on native floating-point values.
812 function jit_nfloat_add (value1
: jit_nfloat
; value2
: jit_nfloat
): jit_nfloat
; libraryLibJITDecl
;
813 function jit_nfloat_sub (value1
: jit_nfloat
; value2
: jit_nfloat
): jit_nfloat
; libraryLibJITDecl
;
814 function jit_nfloat_mul (value1
: jit_nfloat
; value2
: jit_nfloat
): jit_nfloat
; libraryLibJITDecl
;
815 function jit_nfloat_div (value1
: jit_nfloat
; value2
: jit_nfloat
): jit_nfloat
; libraryLibJITDecl
;
816 function jit_nfloat_rem (value1
: jit_nfloat
; value2
: jit_nfloat
): jit_nfloat
; libraryLibJITDecl
;
817 function jit_nfloat_ieee_rem (value1
: jit_nfloat
; value2
: jit_nfloat
): jit_nfloat
; libraryLibJITDecl
;
818 function jit_nfloat_neg (value1
: jit_nfloat
): jit_nfloat
; libraryLibJITDecl
;
819 function jit_nfloat_eq (value1
: jit_nfloat
; value2
: jit_nfloat
): jit_int
; libraryLibJITDecl
;
820 function jit_nfloat_ne (value1
: jit_nfloat
; value2
: jit_nfloat
): jit_int
; libraryLibJITDecl
;
821 function jit_nfloat_lt (value1
: jit_nfloat
; value2
: jit_nfloat
): jit_int
; libraryLibJITDecl
;
822 function jit_nfloat_le (value1
: jit_nfloat
; value2
: jit_nfloat
): jit_int
; libraryLibJITDecl
;
823 function jit_nfloat_gt (value1
: jit_nfloat
; value2
: jit_nfloat
): jit_int
; libraryLibJITDecl
;
824 function jit_nfloat_ge (value1
: jit_nfloat
; value2
: jit_nfloat
): jit_int
; libraryLibJITDecl
;
825 function jit_nfloat_cmpl (value1
: jit_nfloat
; value2
: jit_nfloat
): jit_int
; libraryLibJITDecl
;
826 function jit_nfloat_cmpg (value1
: jit_nfloat
; value2
: jit_nfloat
): jit_int
; libraryLibJITDecl
;
827 function jit_nfloat_acos (value1
: jit_nfloat
): jit_nfloat
; libraryLibJITDecl
;
828 function jit_nfloat_asin (value1
: jit_nfloat
): jit_nfloat
; libraryLibJITDecl
;
829 function jit_nfloat_atan (value1
: jit_nfloat
): jit_nfloat
; libraryLibJITDecl
;
830 function jit_nfloat_atan2 (value1
: jit_nfloat
; value2
: jit_nfloat
): jit_nfloat
; libraryLibJITDecl
;
831 function jit_nfloat_ceil (value1
: jit_nfloat
): jit_nfloat
; libraryLibJITDecl
;
832 function jit_nfloat_cos (value1
: jit_nfloat
): jit_nfloat
; libraryLibJITDecl
;
833 function jit_nfloat_cosh (value1
: jit_nfloat
): jit_nfloat
; libraryLibJITDecl
;
834 function jit_nfloat_exp (value1
: jit_nfloat
): jit_nfloat
; libraryLibJITDecl
;
835 function jit_nfloat_floor (value1
: jit_nfloat
): jit_nfloat
; libraryLibJITDecl
;
836 function jit_nfloat_log (value1
: jit_nfloat
): jit_nfloat
; libraryLibJITDecl
;
837 function jit_nfloat_log10 (value1
: jit_nfloat
): jit_nfloat
; libraryLibJITDecl
;
838 function jit_nfloat_pow (value1
: jit_nfloat
; value2
: jit_nfloat
): jit_nfloat
; libraryLibJITDecl
;
839 function jit_nfloat_rint (value1
: jit_nfloat
): jit_nfloat
; libraryLibJITDecl
;
840 function jit_nfloat_round (value1
: jit_nfloat
): jit_nfloat
; libraryLibJITDecl
;
841 function jit_nfloat_sin (value1
: jit_nfloat
): jit_nfloat
; libraryLibJITDecl
;
842 function jit_nfloat_sinh (value1
: jit_nfloat
): jit_nfloat
; libraryLibJITDecl
;
843 function jit_nfloat_sqrt (value1
: jit_nfloat
): jit_nfloat
; libraryLibJITDecl
;
844 function jit_nfloat_tan (value1
: jit_nfloat
): jit_nfloat
; libraryLibJITDecl
;
845 function jit_nfloat_tanh (value1
: jit_nfloat
): jit_nfloat
; libraryLibJITDecl
;
846 function jit_nfloat_trunc (value1
: jit_nfloat
): jit_nfloat
; libraryLibJITDecl
;
847 function jit_nfloat_is_finite (value
: jit_nfloat
): jit_int
; libraryLibJITDecl
;
848 function jit_nfloat_is_nan (value
: jit_nfloat
): jit_int
; libraryLibJITDecl
;
849 function jit_nfloat_is_inf (value
: jit_nfloat
): jit_int
; libraryLibJITDecl
;
850 function jit_nfloat_abs (value1
: jit_nfloat
): jit_nfloat
; libraryLibJITDecl
;
851 function jit_nfloat_min (value1
: jit_nfloat
; value2
: jit_nfloat
): jit_nfloat
; libraryLibJITDecl
;
852 function jit_nfloat_max (value1
: jit_nfloat
; value2
: jit_nfloat
): jit_nfloat
; libraryLibJITDecl
;
853 function jit_nfloat_sign (value1
: jit_nfloat
): jit_int
; libraryLibJITDecl
;
856 * Convert between integer types.
858 function jit_int_to_sbyte (value
: jit_int
): jit_int
; libraryLibJITDecl
;
859 function jit_int_to_ubyte (value
: jit_int
): jit_int
; libraryLibJITDecl
;
860 function jit_int_to_short (value
: jit_int
): jit_int
; libraryLibJITDecl
;
861 function jit_int_to_ushort (value
: jit_int
): jit_int
; libraryLibJITDecl
;
862 function jit_int_to_int (value
: jit_int
): jit_int
; libraryLibJITDecl
;
863 function jit_int_to_uint (value
: jit_int
): jit_uint
; libraryLibJITDecl
;
864 function jit_int_to_long (value
: jit_int
): jit_long
; libraryLibJITDecl
;
865 function jit_int_to_ulong (value
: jit_int
): jit_ulong
; libraryLibJITDecl
;
866 function jit_uint_to_int (value
: jit_uint
): jit_int
; libraryLibJITDecl
;
867 function jit_uint_to_uint (value
: jit_uint
): jit_uint
; libraryLibJITDecl
;
868 function jit_uint_to_long (value
: jit_uint
): jit_long
; libraryLibJITDecl
;
869 function jit_uint_to_ulong (value
: jit_uint
): jit_ulong
; libraryLibJITDecl
;
870 function jit_long_to_int (value
: jit_long
): jit_int
; libraryLibJITDecl
;
871 function jit_long_to_uint (value
: jit_long
): jit_uint
; libraryLibJITDecl
;
872 function jit_long_to_long (value
: jit_long
): jit_long
; libraryLibJITDecl
;
873 function jit_long_to_ulong (value
: jit_long
): jit_ulong
; libraryLibJITDecl
;
874 function jit_ulong_to_int (value
: jit_ulong
): jit_int
; libraryLibJITDecl
;
875 function jit_ulong_to_uint (value
: jit_ulong
): jit_uint
; libraryLibJITDecl
;
876 function jit_ulong_to_long (value
: jit_ulong
): jit_long
; libraryLibJITDecl
;
877 function jit_ulong_to_ulong (value
: jit_ulong
): jit_ulong
; libraryLibJITDecl
;
880 * Convert between integer types with overflow detection.
882 function jit_int_to_sbyte_ovf (result_
: pjit_int
; value
: jit_int
): jit_int
; libraryLibJITDecl
;
883 function jit_int_to_ubyte_ovf (result_
: pjit_int
; value
: jit_int
): jit_int
; libraryLibJITDecl
;
884 function jit_int_to_short_ovf (result_
: pjit_int
; value
: jit_int
): jit_int
; libraryLibJITDecl
;
885 function jit_int_to_ushort_ovf (result_
: pjit_int
; value
: jit_int
): jit_int
; libraryLibJITDecl
;
886 function jit_int_to_int_ovf (result_
: pjit_int
; value
: jit_int
): jit_int
; libraryLibJITDecl
;
887 function jit_int_to_uint_ovf (result_
: pjit_uint
; value
: jit_int
): jit_int
; libraryLibJITDecl
;
888 function jit_int_to_long_ovf (result_
: pjit_long
; value
: jit_int
): jit_int
; libraryLibJITDecl
;
889 function jit_int_to_ulong_ovf (result_
: pjit_ulong
; value
: jit_int
): jit_int
; libraryLibJITDecl
;
890 function jit_uint_to_int_ovf (result_
: pjit_int
; value
: jit_uint
): jit_int
; libraryLibJITDecl
;
891 function jit_uint_to_uint_ovf (result_
: pjit_uint
; value
: jit_uint
): jit_int
; libraryLibJITDecl
;
892 function jit_uint_to_long_ovf (result_
: pjit_long
; value
: jit_uint
): jit_int
; libraryLibJITDecl
;
893 function jit_uint_to_ulong_ovf (result_
: pjit_ulong
; value
: jit_uint
): jit_int
; libraryLibJITDecl
;
894 function jit_long_to_int_ovf (result_
: pjit_int
; value
: jit_long
): jit_int
; libraryLibJITDecl
;
895 function jit_long_to_uint_ovf (result_
: pjit_uint
; value
: jit_long
): jit_int
; libraryLibJITDecl
;
896 function jit_long_to_long_ovf (result_
: pjit_long
; value
: jit_long
): jit_int
; libraryLibJITDecl
;
897 function jit_long_to_ulong_ovf (result_
: pjit_ulong
; value
: jit_long
): jit_int
; libraryLibJITDecl
;
898 function jit_ulong_to_int_ovf (result_
: pjit_int
; value
: jit_ulong
): jit_int
; libraryLibJITDecl
;
899 function jit_ulong_to_uint_ovf (result_
: pjit_uint
; value
: jit_ulong
): jit_int
; libraryLibJITDecl
;
900 function jit_ulong_to_long_ovf (result_
: pjit_long
; value
: jit_ulong
): jit_int
; libraryLibJITDecl
;
901 function jit_ulong_to_ulong_ovf (result_
: pjit_ulong
; value
: jit_ulong
): jit_int
; libraryLibJITDecl
;
904 * Convert a 32-bit floating-point value into various integer types.
906 function jit_float32_to_int (value
: jit_float32
): jit_int
; libraryLibJITDecl
;
907 function jit_float32_to_uint (value
: jit_float32
): jit_uint
; libraryLibJITDecl
;
908 function jit_float32_to_long (value
: jit_float32
): jit_long
; libraryLibJITDecl
;
909 function jit_float32_to_ulong (value
: jit_float32
): jit_ulong
; libraryLibJITDecl
;
912 * Convert a 32-bit floating-point value into various integer types,
913 * with overflow detection.
915 function jit_float32_to_int_ovf (result_
: pjit_int
; value
: jit_float32
): jit_int
; libraryLibJITDecl
;
916 function jit_float32_to_uint_ovf (result_
: pjit_uint
; value
: jit_float32
): jit_int
; libraryLibJITDecl
;
917 function jit_float32_to_long_ovf (result_
: pjit_long
; value
: jit_float32
): jit_int
; libraryLibJITDecl
;
918 function jit_float32_to_ulong_ovf (result_
: pjit_ulong
; value
: jit_float32
): jit_int
; libraryLibJITDecl
;
921 * Convert a 64-bit floating-point value into various integer types.
923 function jit_float64_to_int (value
: jit_float64
): jit_int
; libraryLibJITDecl
;
924 function jit_float64_to_uint (value
: jit_float64
): jit_uint
; libraryLibJITDecl
;
925 function jit_float64_to_long (value
: jit_float64
): jit_long
; libraryLibJITDecl
;
926 function jit_float64_to_ulong (value
: jit_float64
): jit_ulong
; libraryLibJITDecl
;
929 * Convert a 64-bit floating-point value into various integer types,
930 * with overflow detection.
932 function jit_float64_to_int_ovf (result_
: pjit_int
; value
: jit_float64
): jit_int
; libraryLibJITDecl
;
933 function jit_float64_to_uint_ovf (result_
: pjit_uint
; value
: jit_float64
): jit_int
; libraryLibJITDecl
;
934 function jit_float64_to_long_ovf (result_
: pjit_long
; value
: jit_float64
): jit_int
; libraryLibJITDecl
;
935 function jit_float64_to_ulong_ovf (result_
: pjit_ulong
; value
: jit_float64
): jit_int
; libraryLibJITDecl
;
938 * Convert a native floating-point value into various integer types.
940 function jit_nfloat_to_int (value
: jit_nfloat
): jit_int
; libraryLibJITDecl
;
941 function jit_nfloat_to_uint (value
: jit_nfloat
): jit_uint
; libraryLibJITDecl
;
942 function jit_nfloat_to_long (value
: jit_nfloat
): jit_long
; libraryLibJITDecl
;
943 function jit_nfloat_to_ulong (value
: jit_nfloat
): jit_ulong
; libraryLibJITDecl
;
946 * Convert a native floating-point value into various integer types,
947 * with overflow detection.
949 function jit_nfloat_to_int_ovf (result_
: pjit_int
; value
: jit_nfloat
): jit_int
; libraryLibJITDecl
;
950 function jit_nfloat_to_uint_ovf (result_
: pjit_uint
; value
: jit_nfloat
): jit_int
; libraryLibJITDecl
;
951 function jit_nfloat_to_long_ovf (result_
: pjit_long
; value
: jit_nfloat
): jit_int
; libraryLibJITDecl
;
952 function jit_nfloat_to_ulong_ovf (result_
: pjit_ulong
; value
: jit_nfloat
): jit_int
; libraryLibJITDecl
;
955 * Convert integer types into floating-point values.
957 function jit_int_to_float32 (value
: jit_int
): jit_float32
; libraryLibJITDecl
;
958 function jit_int_to_float64 (value
: jit_int
): jit_float64
; libraryLibJITDecl
;
959 function jit_int_to_nfloat (value
: jit_int
): jit_nfloat
; libraryLibJITDecl
;
960 function jit_uint_to_float32 (value
: jit_uint
): jit_float32
; libraryLibJITDecl
;
961 function jit_uint_to_float64 (value
: jit_uint
): jit_float64
; libraryLibJITDecl
;
962 function jit_uint_to_nfloat (value
: jit_uint
): jit_nfloat
; libraryLibJITDecl
;
963 function jit_long_to_float32 (value
: jit_long
): jit_float32
; libraryLibJITDecl
;
964 function jit_long_to_float64 (value
: jit_long
): jit_float64
; libraryLibJITDecl
;
965 function jit_long_to_nfloat (value
: jit_long
): jit_nfloat
; libraryLibJITDecl
;
966 function jit_ulong_to_float32 (value
: jit_ulong
): jit_float32
; libraryLibJITDecl
;
967 function jit_ulong_to_float64 (value
: jit_ulong
): jit_float64
; libraryLibJITDecl
;
968 function jit_ulong_to_nfloat (value
: jit_ulong
): jit_nfloat
; libraryLibJITDecl
;
971 * Convert between floating-point types.
973 function jit_float32_to_float64 (value
: jit_float32
): jit_float64
; libraryLibJITDecl
;
974 function jit_float32_to_nfloat (value
: jit_float32
): jit_nfloat
; libraryLibJITDecl
;
975 function jit_float64_to_float32 (value
: jit_float64
): jit_float32
; libraryLibJITDecl
;
976 function jit_float64_to_nfloat (value
: jit_float64
): jit_nfloat
; libraryLibJITDecl
;
977 function jit_nfloat_to_float32 (value
: jit_nfloat
): jit_float32
; libraryLibJITDecl
;
978 function jit_nfloat_to_float64 (value
: jit_nfloat
): jit_float64
; libraryLibJITDecl
;
981 type jit_meta_t
= Pointer;
982 type pjit_meta_t
= ^jit_meta_t
;
984 function jit_meta_set (list
: pjit_meta_t
; type_
: Integer; data
: Pointer; free_data
: jit_meta_free_func
; pool_owner
: jit_function_t
): Integer; libraryLibJITDecl
;
985 function jit_meta_get (list
: jit_meta_t
; type_
: Integer): Pointer; libraryLibJITDecl
;
986 procedure jit_meta_free (list
: pjit_meta_t
; type_
: Integer); libraryLibJITDecl
;
987 procedure jit_meta_destroy (list
: pjit_meta_t
); libraryLibJITDecl
;
991 * Opaque types that describe object model elements.
993 //struct jit_objmodel {}
994 type jitom_class_t
= Pointer;
995 type pjitom_class_t
= ^jitom_class_t
;
996 type jitom_field_t
= Pointer;
997 type pjitom_field_t
= ^jitom_field_t
;
998 type jitom_method_t
= Pointer;
999 type pjitom_method_t
= ^jitom_method_t
;
1002 * Internal structure of an object model handler.
1004 type jit_objmodel_t
= ^jit_objmodel
;
1005 jit_objmodel
= record
1007 * Size of this structure, for versioning.
1012 * Reserved fields that can be used by the handler to store its state.
1020 * Operations on object models.
1022 destroy_model
: procedure (model
: jit_objmodel_t
); libraryLibJITDecl
;
1023 get_class_by_name
: function (model
: jit_objmodel_t
; const name
: PAnsiChar): jitom_class_t
; libraryLibJITDecl
;
1026 * Operations on object model classes.
1028 class_get_name
: function (model
: jit_objmodel_t
; klass
: jitom_class_t
): PAnsiChar; libraryLibJITDecl
;
1029 class_get_modifiers
: function (model
: jit_objmodel_t
; klass
: jitom_class_t
): Integer; libraryLibJITDecl
;
1030 class_get_type
: function (model
: jit_objmodel_t
; klass
: jitom_class_t
): jit_type_t
; libraryLibJITDecl
;
1031 class_get_value_type
: function (model
: jit_objmodel_t
; klass
: jitom_class_t
): jit_type_t
; libraryLibJITDecl
;
1032 class_get_primary_super
: function (model
: jit_objmodel_t
; klass
: jitom_class_t
): jitom_class_t
; libraryLibJITDecl
;
1033 class_get_all_supers
: function (model
: jit_objmodel_t
; klass
: jitom_class_t
; num
: PLongWord): pjitom_class_t
; libraryLibJITDecl
;
1034 class_get_interfaces
: function (model
: jit_objmodel_t
; klass
: jitom_class_t
; num
: PLongWord): pjitom_class_t
; libraryLibJITDecl
;
1035 class_get_fields
: function (model
: jit_objmodel_t
; klass
: jitom_class_t
; num
: PLongWord): pjitom_field_t
; libraryLibJITDecl
;
1036 class_get_methods
: function (model
: jit_objmodel_t
; klass
: jitom_class_t
; num
: PLongWord): pjitom_method_t
; libraryLibJITDecl
;
1037 class_new
: function (model
: jit_objmodel_t
; klass
: jitom_class_t
; ctor
: jitom_method_t
; func
: jit_function_t
; args
: pjit_value_t
; num_args
: LongWord; flags
: Integer): jit_value_t
; libraryLibJITDecl
;
1038 class_new_value
: function (model
: jit_objmodel_t
; klass
: jitom_class_t
; ctor
: jitom_method_t
; func
: jit_function_t
; args
: pjit_value_t
; num_args
: LongWord; flags
: Integer): jit_value_t
; libraryLibJITDecl
;
1039 class_delete
: function (model
: jit_objmodel_t
; klass
: jitom_class_t
; obj_value
: jit_value_t
): Integer; libraryLibJITDecl
;
1040 class_add_ref
: function (model
: jit_objmodel_t
; klass
: jitom_class_t
; obj_value
: jit_value_t
): Integer; libraryLibJITDecl
;
1043 * Operations on object model fields.
1045 field_get_name
: function (model
: jit_objmodel_t
; klass
: jitom_class_t
; field
: jitom_field_t
): PAnsiChar; libraryLibJITDecl
;
1046 field_get_type
: function (model
: jit_objmodel_t
; klass
: jitom_class_t
; field
: jitom_field_t
): jit_type_t
; libraryLibJITDecl
;
1047 field_get_modifiers
: function (model
: jit_objmodel_t
; klass
: jitom_class_t
; field
: jitom_field_t
): Integer; libraryLibJITDecl
;
1048 field_load
: function (model
: jit_objmodel_t
; klass
: jitom_class_t
; field
: jitom_field_t
; func
: jit_function_t
; obj_value
: jit_value_t
): jit_value_t
; libraryLibJITDecl
;
1049 field_load_address
: function (model
: jit_objmodel_t
; klass
: jitom_class_t
; field
: jitom_field_t
; func
: jit_function_t
; obj_value
: jit_value_t
): jit_value_t
; libraryLibJITDecl
;
1050 field_store
: function (model
: jit_objmodel_t
; klass
: jitom_class_t
; field
: jitom_field_t
; func
: jit_function_t
; obj_value
: jit_value_t
; value
: jit_value_t
): Integer; libraryLibJITDecl
;
1053 * Operations on object model methods.
1055 method_get_name
: function (model
: jit_objmodel_t
; klass
: jitom_class_t
; method
: jitom_method_t
): PAnsiChar; libraryLibJITDecl
;
1056 method_get_type
: function (model
: jit_objmodel_t
; klass
: jitom_class_t
; method
: jitom_method_t
): jit_type_t
; libraryLibJITDecl
;
1057 method_get_modifiers
: function (model
: jit_objmodel_t
; klass
: jitom_class_t
; method
: jitom_method_t
): Integer; libraryLibJITDecl
;
1058 method_invoke
: function (model
: jit_objmodel_t
; klass
: jitom_class_t
; method
: jitom_method_t
; func
: jit_function_t
; args
: pjit_value_t
; num_args
: LongWord; flags
: Integer): jit_value_t
; libraryLibJITDecl
;
1059 method_invoke_virtual
: function (model
: jit_objmodel_t
; klass
: jitom_class_t
; method
: jitom_method_t
; func
: jit_function_t
; args
: pjit_value_t
; num_args
: LongWord; flags
: Integer): jit_value_t
; libraryLibJITDecl
;
1064 * Modifier flags that describe an item's properties.
1066 const JITOM_MODIFIER_ACCESS_MASK
= $0007;
1067 const JITOM_MODIFIER_PUBLIC
= $0000;
1068 const JITOM_MODIFIER_PRIVATE
= $0001;
1069 const JITOM_MODIFIER_PROTECTED
= $0002;
1070 const JITOM_MODIFIER_PACKAGE
= $0003;
1071 const JITOM_MODIFIER_PACKAGE_OR_PROTECTED
= $0004;
1072 const JITOM_MODIFIER_PACKAGE_AND_PROTECTED
= $0005;
1073 const JITOM_MODIFIER_OTHER1
= $0006;
1074 const JITOM_MODIFIER_OTHER2
= $0007;
1075 const JITOM_MODIFIER_STATIC
= $0008;
1076 const JITOM_MODIFIER_VIRTUAL
= $0010;
1077 const JITOM_MODIFIER_NEW_SLOT
= $0020;
1078 const JITOM_MODIFIER_ABSTRACT
= $0040;
1079 const JITOM_MODIFIER_LITERAL
= $0080;
1080 const JITOM_MODIFIER_CTOR
= $0100;
1081 const JITOM_MODIFIER_STATIC_CTOR
= $0200;
1082 const JITOM_MODIFIER_DTOR
= $0400;
1083 const JITOM_MODIFIER_INTERFACE
= $0800;
1084 const JITOM_MODIFIER_VALUE
= $1000;
1085 const JITOM_MODIFIER_FINAL
= $2000;
1086 const JITOM_MODIFIER_DELETE
= $4000;
1087 const JITOM_MODIFIER_REFERENCE_COUNTED
= $8000;
1090 * Type tags that are used to mark instances of object model classes.
1092 const JITOM_TYPETAG_CLASS
= 11000; (* Object reference *)
1093 const JITOM_TYPETAG_VALUE
= 11001; (* Inline stack value *)
1096 * Operations on object models.
1098 procedure jitom_destroy_model (model
: jit_objmodel_t
); libraryLibJITDecl
;
1099 function jitom_get_class_by_name (model
: jit_objmodel_t
; const name
: PAnsiChar): jitom_class_t
; libraryLibJITDecl
;
1102 * Operations on object model classes.
1104 function jitom_class_get_name (model
: jit_objmodel_t
; klass
: jitom_class_t
): PAnsiChar; libraryLibJITDecl
;
1105 function jitom_class_get_modifiers (model
: jit_objmodel_t
; klass
: jitom_class_t
): Integer; libraryLibJITDecl
;
1106 function jitom_class_get_type (model
: jit_objmodel_t
; klass
: jitom_class_t
): jit_type_t
; libraryLibJITDecl
;
1107 function jitom_class_get_value_type (model
: jit_objmodel_t
; klass
: jitom_class_t
): jit_type_t
; libraryLibJITDecl
;
1108 function jitom_class_get_primary_super (model
: jit_objmodel_t
; klass
: jitom_class_t
): jitom_class_t
; libraryLibJITDecl
;
1109 function jitom_class_get_all_supers (model
: jit_objmodel_t
; klass
: jitom_class_t
; num
: PLongWord): pjitom_class_t
; libraryLibJITDecl
;
1110 function jitom_class_get_interfaces (model
: jit_objmodel_t
; klass
: jitom_class_t
; num
: PLongWord): pjitom_class_t
; libraryLibJITDecl
;
1111 function jitom_class_get_fields (model
: jit_objmodel_t
; klass
: jitom_class_t
; num
: PLongWord): pjitom_field_t
; libraryLibJITDecl
;
1112 function jitom_class_get_methods (model
: jit_objmodel_t
; klass
: jitom_class_t
; num
: PLongWord): pjitom_method_t
; libraryLibJITDecl
;
1113 function jitom_class_new (model
: jit_objmodel_t
; klass
: jitom_class_t
; ctor
: jitom_method_t
; func
: jit_function_t
; args
: pjit_value_t
; num_args
: LongWord; flags
: Integer): jit_value_t
; libraryLibJITDecl
;
1114 function jitom_class_new_value (model
: jit_objmodel_t
; klass
: jitom_class_t
; ctor
: jitom_method_t
; func
: jit_function_t
; args
: pjit_value_t
; num_args
: LongWord; flags
: Integer): jit_value_t
; libraryLibJITDecl
;
1115 function jitom_class_delete (model
: jit_objmodel_t
; klass
: jitom_class_t
; obj_value
: jit_value_t
): Integer; libraryLibJITDecl
;
1116 function jitom_class_add_ref (model
: jit_objmodel_t
; klass
: jitom_class_t
; obj_value
: jit_value_t
): Integer; libraryLibJITDecl
;
1119 * Operations on object model fields.
1121 function jitom_field_get_name (model
: jit_objmodel_t
; klass
: jitom_class_t
; field
: jitom_field_t
): PAnsiChar; libraryLibJITDecl
; // const
1122 function jitom_field_get_type (model
: jit_objmodel_t
; klass
: jitom_class_t
; field
: jitom_field_t
): jit_type_t
; libraryLibJITDecl
;
1123 function jitom_field_get_modifiers (model
: jit_objmodel_t
; klass
: jitom_class_t
; field
: jitom_field_t
): Integer; libraryLibJITDecl
;
1124 function jitom_field_load (model
: jit_objmodel_t
; klass
: jitom_class_t
; field
: jitom_field_t
; func
: jit_function_t
; obj_value
: jit_value_t
): jit_value_t
; libraryLibJITDecl
;
1125 function jitom_field_load_address (model
: jit_objmodel_t
; klass
: jitom_class_t
; field
: jitom_field_t
; func
: jit_function_t
; obj_value
: jit_value_t
): jit_value_t
; libraryLibJITDecl
;
1126 function jitom_field_store (model
: jit_objmodel_t
; klass
: jitom_class_t
; field
: jitom_field_t
; func
: jit_function_t
; obj_value
: jit_value_t
; value
: jit_value_t
): Integer; libraryLibJITDecl
;
1129 * Operations on object model methods.
1131 function jitom_method_get_name (model
: jit_objmodel_t
; klass
: jitom_class_t
; method
: jitom_method_t
): PAnsiChar; libraryLibJITDecl
; // const
1132 function jitom_method_get_type (model
: jit_objmodel_t
; klass
: jitom_class_t
; method
: jitom_method_t
): jit_type_t
; libraryLibJITDecl
;
1133 function jitom_method_get_modifiers (model
: jit_objmodel_t
; klass
: jitom_class_t
; method
: jitom_method_t
): Integer; libraryLibJITDecl
;
1134 function jitom_method_invoke (model
: jit_objmodel_t
; klass
: jitom_class_t
; method
: jitom_method_t
; func
: jit_function_t
; args
: pjit_value_t
; num_args
: LongWord; flags
: Integer): jit_value_t
; libraryLibJITDecl
;
1135 function jitom_method_invoke_virtual (model
: jit_objmodel_t
; klass
: jitom_class_t
; method
: jitom_method_t
; func
: jit_function_t
; args
: pjit_value_t
; num_args
: LongWord; flags
: Integer): jit_value_t
; libraryLibJITDecl
;
1138 * Manipulate types that represent objects and inline values.
1140 function jitom_type_tag_as_class (type_
: jit_type_t
; model
: jit_objmodel_t
; klass
: jitom_class_t
; incref
: Integer): jit_type_t
; libraryLibJITDecl
;
1141 function jitom_type_tag_as_value (type_
: jit_type_t
; model
: jit_objmodel_t
; klass
: jitom_class_t
; incref
: Integer): jit_type_t
; libraryLibJITDecl
;
1142 function jitom_type_is_class (type_
: jit_type_t
): Integer; libraryLibJITDecl
;
1143 function jitom_type_is_value (type_
: jit_type_t
): Integer; libraryLibJITDecl
;
1144 function jitom_type_get_model (type_
: jit_type_t
): jit_objmodel_t
; libraryLibJITDecl
;
1145 function jitom_type_get_class (type_
: jit_type_t
): jitom_class_t
; libraryLibJITDecl
;
1148 const JIT_OP_NOP
= $0000;
1149 const JIT_OP_TRUNC_SBYTE
= $0001;
1150 const JIT_OP_TRUNC_UBYTE
= $0002;
1151 const JIT_OP_TRUNC_SHORT
= $0003;
1152 const JIT_OP_TRUNC_USHORT
= $0004;
1153 const JIT_OP_TRUNC_INT
= $0005;
1154 const JIT_OP_TRUNC_UINT
= $0006;
1155 const JIT_OP_CHECK_SBYTE
= $0007;
1156 const JIT_OP_CHECK_UBYTE
= $0008;
1157 const JIT_OP_CHECK_SHORT
= $0009;
1158 const JIT_OP_CHECK_USHORT
= $000A;
1159 const JIT_OP_CHECK_INT
= $000B;
1160 const JIT_OP_CHECK_UINT
= $000C;
1161 const JIT_OP_LOW_WORD
= $000D;
1162 const JIT_OP_EXPAND_INT
= $000E;
1163 const JIT_OP_EXPAND_UINT
= $000F;
1164 const JIT_OP_CHECK_LOW_WORD
= $0010;
1165 const JIT_OP_CHECK_SIGNED_LOW_WORD
= $0011;
1166 const JIT_OP_CHECK_LONG
= $0012;
1167 const JIT_OP_CHECK_ULONG
= $0013;
1168 const JIT_OP_FLOAT32_TO_INT
= $0014;
1169 const JIT_OP_FLOAT32_TO_UINT
= $0015;
1170 const JIT_OP_FLOAT32_TO_LONG
= $0016;
1171 const JIT_OP_FLOAT32_TO_ULONG
= $0017;
1172 const JIT_OP_CHECK_FLOAT32_TO_INT
= $0018;
1173 const JIT_OP_CHECK_FLOAT32_TO_UINT
= $0019;
1174 const JIT_OP_CHECK_FLOAT32_TO_LONG
= $001A;
1175 const JIT_OP_CHECK_FLOAT32_TO_ULONG
= $001B;
1176 const JIT_OP_INT_TO_FLOAT32
= $001C;
1177 const JIT_OP_UINT_TO_FLOAT32
= $001D;
1178 const JIT_OP_LONG_TO_FLOAT32
= $001E;
1179 const JIT_OP_ULONG_TO_FLOAT32
= $001F;
1180 const JIT_OP_FLOAT32_TO_FLOAT64
= $0020;
1181 const JIT_OP_FLOAT64_TO_INT
= $0021;
1182 const JIT_OP_FLOAT64_TO_UINT
= $0022;
1183 const JIT_OP_FLOAT64_TO_LONG
= $0023;
1184 const JIT_OP_FLOAT64_TO_ULONG
= $0024;
1185 const JIT_OP_CHECK_FLOAT64_TO_INT
= $0025;
1186 const JIT_OP_CHECK_FLOAT64_TO_UINT
= $0026;
1187 const JIT_OP_CHECK_FLOAT64_TO_LONG
= $0027;
1188 const JIT_OP_CHECK_FLOAT64_TO_ULONG
= $0028;
1189 const JIT_OP_INT_TO_FLOAT64
= $0029;
1190 const JIT_OP_UINT_TO_FLOAT64
= $002A;
1191 const JIT_OP_LONG_TO_FLOAT64
= $002B;
1192 const JIT_OP_ULONG_TO_FLOAT64
= $002C;
1193 const JIT_OP_FLOAT64_TO_FLOAT32
= $002D;
1194 const JIT_OP_NFLOAT_TO_INT
= $002E;
1195 const JIT_OP_NFLOAT_TO_UINT
= $002F;
1196 const JIT_OP_NFLOAT_TO_LONG
= $0030;
1197 const JIT_OP_NFLOAT_TO_ULONG
= $0031;
1198 const JIT_OP_CHECK_NFLOAT_TO_INT
= $0032;
1199 const JIT_OP_CHECK_NFLOAT_TO_UINT
= $0033;
1200 const JIT_OP_CHECK_NFLOAT_TO_LONG
= $0034;
1201 const JIT_OP_CHECK_NFLOAT_TO_ULONG
= $0035;
1202 const JIT_OP_INT_TO_NFLOAT
= $0036;
1203 const JIT_OP_UINT_TO_NFLOAT
= $0037;
1204 const JIT_OP_LONG_TO_NFLOAT
= $0038;
1205 const JIT_OP_ULONG_TO_NFLOAT
= $0039;
1206 const JIT_OP_NFLOAT_TO_FLOAT32
= $003A;
1207 const JIT_OP_NFLOAT_TO_FLOAT64
= $003B;
1208 const JIT_OP_FLOAT32_TO_NFLOAT
= $003C;
1209 const JIT_OP_FLOAT64_TO_NFLOAT
= $003D;
1210 const JIT_OP_IADD
= $003E;
1211 const JIT_OP_IADD_OVF
= $003F;
1212 const JIT_OP_IADD_OVF_UN
= $0040;
1213 const JIT_OP_ISUB
= $0041;
1214 const JIT_OP_ISUB_OVF
= $0042;
1215 const JIT_OP_ISUB_OVF_UN
= $0043;
1216 const JIT_OP_IMUL
= $0044;
1217 const JIT_OP_IMUL_OVF
= $0045;
1218 const JIT_OP_IMUL_OVF_UN
= $0046;
1219 const JIT_OP_IDIV
= $0047;
1220 const JIT_OP_IDIV_UN
= $0048;
1221 const JIT_OP_IREM
= $0049;
1222 const JIT_OP_IREM_UN
= $004A;
1223 const JIT_OP_INEG
= $004B;
1224 const JIT_OP_LADD
= $004C;
1225 const JIT_OP_LADD_OVF
= $004D;
1226 const JIT_OP_LADD_OVF_UN
= $004E;
1227 const JIT_OP_LSUB
= $004F;
1228 const JIT_OP_LSUB_OVF
= $0050;
1229 const JIT_OP_LSUB_OVF_UN
= $0051;
1230 const JIT_OP_LMUL
= $0052;
1231 const JIT_OP_LMUL_OVF
= $0053;
1232 const JIT_OP_LMUL_OVF_UN
= $0054;
1233 const JIT_OP_LDIV
= $0055;
1234 const JIT_OP_LDIV_UN
= $0056;
1235 const JIT_OP_LREM
= $0057;
1236 const JIT_OP_LREM_UN
= $0058;
1237 const JIT_OP_LNEG
= $0059;
1238 const JIT_OP_FADD
= $005A;
1239 const JIT_OP_FSUB
= $005B;
1240 const JIT_OP_FMUL
= $005C;
1241 const JIT_OP_FDIV
= $005D;
1242 const JIT_OP_FREM
= $005E;
1243 const JIT_OP_FREM_IEEE
= $005F;
1244 const JIT_OP_FNEG
= $0060;
1245 const JIT_OP_DADD
= $0061;
1246 const JIT_OP_DSUB
= $0062;
1247 const JIT_OP_DMUL
= $0063;
1248 const JIT_OP_DDIV
= $0064;
1249 const JIT_OP_DREM
= $0065;
1250 const JIT_OP_DREM_IEEE
= $0066;
1251 const JIT_OP_DNEG
= $0067;
1252 const JIT_OP_NFADD
= $0068;
1253 const JIT_OP_NFSUB
= $0069;
1254 const JIT_OP_NFMUL
= $006A;
1255 const JIT_OP_NFDIV
= $006B;
1256 const JIT_OP_NFREM
= $006C;
1257 const JIT_OP_NFREM_IEEE
= $006D;
1258 const JIT_OP_NFNEG
= $006E;
1259 const JIT_OP_IAND
= $006F;
1260 const JIT_OP_IOR
= $0070;
1261 const JIT_OP_IXOR
= $0071;
1262 const JIT_OP_INOT
= $0072;
1263 const JIT_OP_ISHL
= $0073;
1264 const JIT_OP_ISHR
= $0074;
1265 const JIT_OP_ISHR_UN
= $0075;
1266 const JIT_OP_LAND
= $0076;
1267 const JIT_OP_LOR
= $0077;
1268 const JIT_OP_LXOR
= $0078;
1269 const JIT_OP_LNOT
= $0079;
1270 const JIT_OP_LSHL
= $007A;
1271 const JIT_OP_LSHR
= $007B;
1272 const JIT_OP_LSHR_UN
= $007C;
1273 const JIT_OP_BR
= $007D;
1274 const JIT_OP_BR_IFALSE
= $007E;
1275 const JIT_OP_BR_ITRUE
= $007F;
1276 const JIT_OP_BR_IEQ
= $0080;
1277 const JIT_OP_BR_INE
= $0081;
1278 const JIT_OP_BR_ILT
= $0082;
1279 const JIT_OP_BR_ILT_UN
= $0083;
1280 const JIT_OP_BR_ILE
= $0084;
1281 const JIT_OP_BR_ILE_UN
= $0085;
1282 const JIT_OP_BR_IGT
= $0086;
1283 const JIT_OP_BR_IGT_UN
= $0087;
1284 const JIT_OP_BR_IGE
= $0088;
1285 const JIT_OP_BR_IGE_UN
= $0089;
1286 const JIT_OP_BR_LFALSE
= $008A;
1287 const JIT_OP_BR_LTRUE
= $008B;
1288 const JIT_OP_BR_LEQ
= $008C;
1289 const JIT_OP_BR_LNE
= $008D;
1290 const JIT_OP_BR_LLT
= $008E;
1291 const JIT_OP_BR_LLT_UN
= $008F;
1292 const JIT_OP_BR_LLE
= $0090;
1293 const JIT_OP_BR_LLE_UN
= $0091;
1294 const JIT_OP_BR_LGT
= $0092;
1295 const JIT_OP_BR_LGT_UN
= $0093;
1296 const JIT_OP_BR_LGE
= $0094;
1297 const JIT_OP_BR_LGE_UN
= $0095;
1298 const JIT_OP_BR_FEQ
= $0096;
1299 const JIT_OP_BR_FNE
= $0097;
1300 const JIT_OP_BR_FLT
= $0098;
1301 const JIT_OP_BR_FLE
= $0099;
1302 const JIT_OP_BR_FGT
= $009A;
1303 const JIT_OP_BR_FGE
= $009B;
1304 const JIT_OP_BR_FLT_INV
= $009C;
1305 const JIT_OP_BR_FLE_INV
= $009D;
1306 const JIT_OP_BR_FGT_INV
= $009E;
1307 const JIT_OP_BR_FGE_INV
= $009F;
1308 const JIT_OP_BR_DEQ
= $00A0;
1309 const JIT_OP_BR_DNE
= $00A1;
1310 const JIT_OP_BR_DLT
= $00A2;
1311 const JIT_OP_BR_DLE
= $00A3;
1312 const JIT_OP_BR_DGT
= $00A4;
1313 const JIT_OP_BR_DGE
= $00A5;
1314 const JIT_OP_BR_DLT_INV
= $00A6;
1315 const JIT_OP_BR_DLE_INV
= $00A7;
1316 const JIT_OP_BR_DGT_INV
= $00A8;
1317 const JIT_OP_BR_DGE_INV
= $00A9;
1318 const JIT_OP_BR_NFEQ
= $00AA;
1319 const JIT_OP_BR_NFNE
= $00AB;
1320 const JIT_OP_BR_NFLT
= $00AC;
1321 const JIT_OP_BR_NFLE
= $00AD;
1322 const JIT_OP_BR_NFGT
= $00AE;
1323 const JIT_OP_BR_NFGE
= $00AF;
1324 const JIT_OP_BR_NFLT_INV
= $00B0;
1325 const JIT_OP_BR_NFLE_INV
= $00B1;
1326 const JIT_OP_BR_NFGT_INV
= $00B2;
1327 const JIT_OP_BR_NFGE_INV
= $00B3;
1328 const JIT_OP_ICMP
= $00B4;
1329 const JIT_OP_ICMP_UN
= $00B5;
1330 const JIT_OP_LCMP
= $00B6;
1331 const JIT_OP_LCMP_UN
= $00B7;
1332 const JIT_OP_FCMPL
= $00B8;
1333 const JIT_OP_FCMPG
= $00B9;
1334 const JIT_OP_DCMPL
= $00BA;
1335 const JIT_OP_DCMPG
= $00BB;
1336 const JIT_OP_NFCMPL
= $00BC;
1337 const JIT_OP_NFCMPG
= $00BD;
1338 const JIT_OP_IEQ
= $00BE;
1339 const JIT_OP_INE
= $00BF;
1340 const JIT_OP_ILT
= $00C0;
1341 const JIT_OP_ILT_UN
= $00C1;
1342 const JIT_OP_ILE
= $00C2;
1343 const JIT_OP_ILE_UN
= $00C3;
1344 const JIT_OP_IGT
= $00C4;
1345 const JIT_OP_IGT_UN
= $00C5;
1346 const JIT_OP_IGE
= $00C6;
1347 const JIT_OP_IGE_UN
= $00C7;
1348 const JIT_OP_LEQ
= $00C8;
1349 const JIT_OP_LNE
= $00C9;
1350 const JIT_OP_LLT
= $00CA;
1351 const JIT_OP_LLT_UN
= $00CB;
1352 const JIT_OP_LLE
= $00CC;
1353 const JIT_OP_LLE_UN
= $00CD;
1354 const JIT_OP_LGT
= $00CE;
1355 const JIT_OP_LGT_UN
= $00CF;
1356 const JIT_OP_LGE
= $00D0;
1357 const JIT_OP_LGE_UN
= $00D1;
1358 const JIT_OP_FEQ
= $00D2;
1359 const JIT_OP_FNE
= $00D3;
1360 const JIT_OP_FLT
= $00D4;
1361 const JIT_OP_FLE
= $00D5;
1362 const JIT_OP_FGT
= $00D6;
1363 const JIT_OP_FGE
= $00D7;
1364 const JIT_OP_FLT_INV
= $00D8;
1365 const JIT_OP_FLE_INV
= $00D9;
1366 const JIT_OP_FGT_INV
= $00DA;
1367 const JIT_OP_FGE_INV
= $00DB;
1368 const JIT_OP_DEQ
= $00DC;
1369 const JIT_OP_DNE
= $00DD;
1370 const JIT_OP_DLT
= $00DE;
1371 const JIT_OP_DLE
= $00DF;
1372 const JIT_OP_DGT
= $00E0;
1373 const JIT_OP_DGE
= $00E1;
1374 const JIT_OP_DLT_INV
= $00E2;
1375 const JIT_OP_DLE_INV
= $00E3;
1376 const JIT_OP_DGT_INV
= $00E4;
1377 const JIT_OP_DGE_INV
= $00E5;
1378 const JIT_OP_NFEQ
= $00E6;
1379 const JIT_OP_NFNE
= $00E7;
1380 const JIT_OP_NFLT
= $00E8;
1381 const JIT_OP_NFLE
= $00E9;
1382 const JIT_OP_NFGT
= $00EA;
1383 const JIT_OP_NFGE
= $00EB;
1384 const JIT_OP_NFLT_INV
= $00EC;
1385 const JIT_OP_NFLE_INV
= $00ED;
1386 const JIT_OP_NFGT_INV
= $00EE;
1387 const JIT_OP_NFGE_INV
= $00EF;
1388 const JIT_OP_IS_FNAN
= $00F0;
1389 const JIT_OP_IS_FINF
= $00F1;
1390 const JIT_OP_IS_FFINITE
= $00F2;
1391 const JIT_OP_IS_DNAN
= $00F3;
1392 const JIT_OP_IS_DINF
= $00F4;
1393 const JIT_OP_IS_DFINITE
= $00F5;
1394 const JIT_OP_IS_NFNAN
= $00F6;
1395 const JIT_OP_IS_NFINF
= $00F7;
1396 const JIT_OP_IS_NFFINITE
= $00F8;
1397 const JIT_OP_FACOS
= $00F9;
1398 const JIT_OP_FASIN
= $00FA;
1399 const JIT_OP_FATAN
= $00FB;
1400 const JIT_OP_FATAN2
= $00FC;
1401 const JIT_OP_FCEIL
= $00FD;
1402 const JIT_OP_FCOS
= $00FE;
1403 const JIT_OP_FCOSH
= $00FF;
1404 const JIT_OP_FEXP
= $0100;
1405 const JIT_OP_FFLOOR
= $0101;
1406 const JIT_OP_FLOG
= $0102;
1407 const JIT_OP_FLOG10
= $0103;
1408 const JIT_OP_FPOW
= $0104;
1409 const JIT_OP_FRINT
= $0105;
1410 const JIT_OP_FROUND
= $0106;
1411 const JIT_OP_FSIN
= $0107;
1412 const JIT_OP_FSINH
= $0108;
1413 const JIT_OP_FSQRT
= $0109;
1414 const JIT_OP_FTAN
= $010A;
1415 const JIT_OP_FTANH
= $010B;
1416 const JIT_OP_FTRUNC
= $010C;
1417 const JIT_OP_DACOS
= $010D;
1418 const JIT_OP_DASIN
= $010E;
1419 const JIT_OP_DATAN
= $010F;
1420 const JIT_OP_DATAN2
= $0110;
1421 const JIT_OP_DCEIL
= $0111;
1422 const JIT_OP_DCOS
= $0112;
1423 const JIT_OP_DCOSH
= $0113;
1424 const JIT_OP_DEXP
= $0114;
1425 const JIT_OP_DFLOOR
= $0115;
1426 const JIT_OP_DLOG
= $0116;
1427 const JIT_OP_DLOG10
= $0117;
1428 const JIT_OP_DPOW
= $0118;
1429 const JIT_OP_DRINT
= $0119;
1430 const JIT_OP_DROUND
= $011A;
1431 const JIT_OP_DSIN
= $011B;
1432 const JIT_OP_DSINH
= $011C;
1433 const JIT_OP_DSQRT
= $011D;
1434 const JIT_OP_DTAN
= $011E;
1435 const JIT_OP_DTANH
= $011F;
1436 const JIT_OP_DTRUNC
= $0120;
1437 const JIT_OP_NFACOS
= $0121;
1438 const JIT_OP_NFASIN
= $0122;
1439 const JIT_OP_NFATAN
= $0123;
1440 const JIT_OP_NFATAN2
= $0124;
1441 const JIT_OP_NFCEIL
= $0125;
1442 const JIT_OP_NFCOS
= $0126;
1443 const JIT_OP_NFCOSH
= $0127;
1444 const JIT_OP_NFEXP
= $0128;
1445 const JIT_OP_NFFLOOR
= $0129;
1446 const JIT_OP_NFLOG
= $012A;
1447 const JIT_OP_NFLOG10
= $012B;
1448 const JIT_OP_NFPOW
= $012C;
1449 const JIT_OP_NFRINT
= $012D;
1450 const JIT_OP_NFROUND
= $012E;
1451 const JIT_OP_NFSIN
= $012F;
1452 const JIT_OP_NFSINH
= $0130;
1453 const JIT_OP_NFSQRT
= $0131;
1454 const JIT_OP_NFTAN
= $0132;
1455 const JIT_OP_NFTANH
= $0133;
1456 const JIT_OP_NFTRUNC
= $0134;
1457 const JIT_OP_IABS
= $0135;
1458 const JIT_OP_LABS
= $0136;
1459 const JIT_OP_FABS
= $0137;
1460 const JIT_OP_DABS
= $0138;
1461 const JIT_OP_NFABS
= $0139;
1462 const JIT_OP_IMIN
= $013A;
1463 const JIT_OP_IMIN_UN
= $013B;
1464 const JIT_OP_LMIN
= $013C;
1465 const JIT_OP_LMIN_UN
= $013D;
1466 const JIT_OP_FMIN
= $013E;
1467 const JIT_OP_DMIN
= $013F;
1468 const JIT_OP_NFMIN
= $0140;
1469 const JIT_OP_IMAX
= $0141;
1470 const JIT_OP_IMAX_UN
= $0142;
1471 const JIT_OP_LMAX
= $0143;
1472 const JIT_OP_LMAX_UN
= $0144;
1473 const JIT_OP_FMAX
= $0145;
1474 const JIT_OP_DMAX
= $0146;
1475 const JIT_OP_NFMAX
= $0147;
1476 const JIT_OP_ISIGN
= $0148;
1477 const JIT_OP_LSIGN
= $0149;
1478 const JIT_OP_FSIGN
= $014A;
1479 const JIT_OP_DSIGN
= $014B;
1480 const JIT_OP_NFSIGN
= $014C;
1481 const JIT_OP_CHECK_NULL
= $014D;
1482 const JIT_OP_CALL
= $014E;
1483 const JIT_OP_CALL_TAIL
= $014F;
1484 const JIT_OP_CALL_INDIRECT
= $0150;
1485 const JIT_OP_CALL_INDIRECT_TAIL
= $0151;
1486 const JIT_OP_CALL_VTABLE_PTR
= $0152;
1487 const JIT_OP_CALL_VTABLE_PTR_TAIL
= $0153;
1488 const JIT_OP_CALL_EXTERNAL
= $0154;
1489 const JIT_OP_CALL_EXTERNAL_TAIL
= $0155;
1490 const JIT_OP_RETURN
= $0156;
1491 const JIT_OP_RETURN_INT
= $0157;
1492 const JIT_OP_RETURN_LONG
= $0158;
1493 const JIT_OP_RETURN_FLOAT32
= $0159;
1494 const JIT_OP_RETURN_FLOAT64
= $015A;
1495 const JIT_OP_RETURN_NFLOAT
= $015B;
1496 const JIT_OP_RETURN_SMALL_STRUCT
= $015C;
1497 const JIT_OP_SETUP_FOR_NESTED
= $015D;
1498 const JIT_OP_SETUP_FOR_SIBLING
= $015E;
1499 const JIT_OP_IMPORT
= $015F;
1500 const JIT_OP_THROW
= $0160;
1501 const JIT_OP_RETHROW
= $0161;
1502 const JIT_OP_LOAD_PC
= $0162;
1503 const JIT_OP_LOAD_EXCEPTION_PC
= $0163;
1504 const JIT_OP_ENTER_FINALLY
= $0164;
1505 const JIT_OP_LEAVE_FINALLY
= $0165;
1506 const JIT_OP_CALL_FINALLY
= $0166;
1507 const JIT_OP_ENTER_FILTER
= $0167;
1508 const JIT_OP_LEAVE_FILTER
= $0168;
1509 const JIT_OP_CALL_FILTER
= $0169;
1510 const JIT_OP_CALL_FILTER_RETURN
= $016A;
1511 const JIT_OP_ADDRESS_OF_LABEL
= $016B;
1512 const JIT_OP_COPY_LOAD_SBYTE
= $016C;
1513 const JIT_OP_COPY_LOAD_UBYTE
= $016D;
1514 const JIT_OP_COPY_LOAD_SHORT
= $016E;
1515 const JIT_OP_COPY_LOAD_USHORT
= $016F;
1516 const JIT_OP_COPY_INT
= $0170;
1517 const JIT_OP_COPY_LONG
= $0171;
1518 const JIT_OP_COPY_FLOAT32
= $0172;
1519 const JIT_OP_COPY_FLOAT64
= $0173;
1520 const JIT_OP_COPY_NFLOAT
= $0174;
1521 const JIT_OP_COPY_STRUCT
= $0175;
1522 const JIT_OP_COPY_STORE_BYTE
= $0176;
1523 const JIT_OP_COPY_STORE_SHORT
= $0177;
1524 const JIT_OP_ADDRESS_OF
= $0178;
1525 const JIT_OP_INCOMING_REG
= $0179;
1526 const JIT_OP_INCOMING_FRAME_POSN
= $017A;
1527 const JIT_OP_OUTGOING_REG
= $017B;
1528 const JIT_OP_OUTGOING_FRAME_POSN
= $017C;
1529 const JIT_OP_RETURN_REG
= $017D;
1530 const JIT_OP_PUSH_INT
= $017E;
1531 const JIT_OP_PUSH_LONG
= $017F;
1532 const JIT_OP_PUSH_FLOAT32
= $0180;
1533 const JIT_OP_PUSH_FLOAT64
= $0181;
1534 const JIT_OP_PUSH_NFLOAT
= $0182;
1535 const JIT_OP_PUSH_STRUCT
= $0183;
1536 const JIT_OP_POP_STACK
= $0184;
1537 const JIT_OP_FLUSH_SMALL_STRUCT
= $0185;
1538 const JIT_OP_SET_PARAM_INT
= $0186;
1539 const JIT_OP_SET_PARAM_LONG
= $0187;
1540 const JIT_OP_SET_PARAM_FLOAT32
= $0188;
1541 const JIT_OP_SET_PARAM_FLOAT64
= $0189;
1542 const JIT_OP_SET_PARAM_NFLOAT
= $018A;
1543 const JIT_OP_SET_PARAM_STRUCT
= $018B;
1544 const JIT_OP_PUSH_RETURN_AREA_PTR
= $018C;
1545 const JIT_OP_LOAD_RELATIVE_SBYTE
= $018D;
1546 const JIT_OP_LOAD_RELATIVE_UBYTE
= $018E;
1547 const JIT_OP_LOAD_RELATIVE_SHORT
= $018F;
1548 const JIT_OP_LOAD_RELATIVE_USHORT
= $0190;
1549 const JIT_OP_LOAD_RELATIVE_INT
= $0191;
1550 const JIT_OP_LOAD_RELATIVE_LONG
= $0192;
1551 const JIT_OP_LOAD_RELATIVE_FLOAT32
= $0193;
1552 const JIT_OP_LOAD_RELATIVE_FLOAT64
= $0194;
1553 const JIT_OP_LOAD_RELATIVE_NFLOAT
= $0195;
1554 const JIT_OP_LOAD_RELATIVE_STRUCT
= $0196;
1555 const JIT_OP_STORE_RELATIVE_BYTE
= $0197;
1556 const JIT_OP_STORE_RELATIVE_SHORT
= $0198;
1557 const JIT_OP_STORE_RELATIVE_INT
= $0199;
1558 const JIT_OP_STORE_RELATIVE_LONG
= $019A;
1559 const JIT_OP_STORE_RELATIVE_FLOAT32
= $019B;
1560 const JIT_OP_STORE_RELATIVE_FLOAT64
= $019C;
1561 const JIT_OP_STORE_RELATIVE_NFLOAT
= $019D;
1562 const JIT_OP_STORE_RELATIVE_STRUCT
= $019E;
1563 const JIT_OP_ADD_RELATIVE
= $019F;
1564 const JIT_OP_LOAD_ELEMENT_SBYTE
= $01A0;
1565 const JIT_OP_LOAD_ELEMENT_UBYTE
= $01A1;
1566 const JIT_OP_LOAD_ELEMENT_SHORT
= $01A2;
1567 const JIT_OP_LOAD_ELEMENT_USHORT
= $01A3;
1568 const JIT_OP_LOAD_ELEMENT_INT
= $01A4;
1569 const JIT_OP_LOAD_ELEMENT_LONG
= $01A5;
1570 const JIT_OP_LOAD_ELEMENT_FLOAT32
= $01A6;
1571 const JIT_OP_LOAD_ELEMENT_FLOAT64
= $01A7;
1572 const JIT_OP_LOAD_ELEMENT_NFLOAT
= $01A8;
1573 const JIT_OP_STORE_ELEMENT_BYTE
= $01A9;
1574 const JIT_OP_STORE_ELEMENT_SHORT
= $01AA;
1575 const JIT_OP_STORE_ELEMENT_INT
= $01AB;
1576 const JIT_OP_STORE_ELEMENT_LONG
= $01AC;
1577 const JIT_OP_STORE_ELEMENT_FLOAT32
= $01AD;
1578 const JIT_OP_STORE_ELEMENT_FLOAT64
= $01AE;
1579 const JIT_OP_STORE_ELEMENT_NFLOAT
= $01AF;
1580 const JIT_OP_MEMCPY
= $01B0;
1581 const JIT_OP_MEMMOVE
= $01B1;
1582 const JIT_OP_MEMSET
= $01B2;
1583 const JIT_OP_ALLOCA
= $01B3;
1584 const JIT_OP_MARK_OFFSET
= $01B4;
1585 const JIT_OP_MARK_BREAKPOINT
= $01B5;
1586 const JIT_OP_JUMP_TABLE
= $01B6;
1587 const JIT_OP_NUM_OPCODES
= $01B7;
1590 * Opcode information.
1592 type jit_opcode_info_t
= record
1593 name
: PAnsiChar; // const
1596 const JIT_OPCODE_DEST_MASK
= $0000000F;
1597 const JIT_OPCODE_DEST_EMPTY
= $00000000;
1598 const JIT_OPCODE_DEST_INT
= $00000001;
1599 const JIT_OPCODE_DEST_LONG
= $00000002;
1600 const JIT_OPCODE_DEST_FLOAT32
= $00000003;
1601 const JIT_OPCODE_DEST_FLOAT64
= $00000004;
1602 const JIT_OPCODE_DEST_NFLOAT
= $00000005;
1603 const JIT_OPCODE_DEST_ANY
= $00000006;
1604 const JIT_OPCODE_SRC1_MASK
= $000000F0;
1605 const JIT_OPCODE_SRC1_EMPTY
= $00000000;
1606 const JIT_OPCODE_SRC1_INT
= $00000010;
1607 const JIT_OPCODE_SRC1_LONG
= $00000020;
1608 const JIT_OPCODE_SRC1_FLOAT32
= $00000030;
1609 const JIT_OPCODE_SRC1_FLOAT64
= $00000040;
1610 const JIT_OPCODE_SRC1_NFLOAT
= $00000050;
1611 const JIT_OPCODE_SRC1_ANY
= $00000060;
1612 const JIT_OPCODE_SRC2_MASK
= $00000F00;
1613 const JIT_OPCODE_SRC2_EMPTY
= $00000000;
1614 const JIT_OPCODE_SRC2_INT
= $00000100;
1615 const JIT_OPCODE_SRC2_LONG
= $00000200;
1616 const JIT_OPCODE_SRC2_FLOAT32
= $00000300;
1617 const JIT_OPCODE_SRC2_FLOAT64
= $00000400;
1618 const JIT_OPCODE_SRC2_NFLOAT
= $00000500;
1619 const JIT_OPCODE_SRC2_ANY
= $00000600;
1620 const JIT_OPCODE_IS_BRANCH
= $00001000;
1621 const JIT_OPCODE_IS_CALL
= $00002000;
1622 const JIT_OPCODE_IS_CALL_EXTERNAL
= $00004000;
1623 const JIT_OPCODE_IS_REG
= $00008000;
1624 const JIT_OPCODE_IS_ADDROF_LABEL
= $00010000;
1625 const JIT_OPCODE_IS_JUMP_TABLE
= $00020000;
1626 const JIT_OPCODE_OPER_MASK
= $01F00000;
1627 const JIT_OPCODE_OPER_NONE
= $00000000;
1628 const JIT_OPCODE_OPER_ADD
= $00100000;
1629 const JIT_OPCODE_OPER_SUB
= $00200000;
1630 const JIT_OPCODE_OPER_MUL
= $00300000;
1631 const JIT_OPCODE_OPER_DIV
= $00400000;
1632 const JIT_OPCODE_OPER_REM
= $00500000;
1633 const JIT_OPCODE_OPER_NEG
= $00600000;
1634 const JIT_OPCODE_OPER_AND
= $00700000;
1635 const JIT_OPCODE_OPER_OR
= $00800000;
1636 const JIT_OPCODE_OPER_XOR
= $00900000;
1637 const JIT_OPCODE_OPER_NOT
= $00A00000;
1638 const JIT_OPCODE_OPER_EQ
= $00B00000;
1639 const JIT_OPCODE_OPER_NE
= $00C00000;
1640 const JIT_OPCODE_OPER_LT
= $00D00000;
1641 const JIT_OPCODE_OPER_LE
= $00E00000;
1642 const JIT_OPCODE_OPER_GT
= $00F00000;
1643 const JIT_OPCODE_OPER_GE
= $01000000;
1644 const JIT_OPCODE_OPER_SHL
= $01100000;
1645 const JIT_OPCODE_OPER_SHR
= $01200000;
1646 const JIT_OPCODE_OPER_SHR_UN
= $01300000;
1647 const JIT_OPCODE_OPER_COPY
= $01400000;
1648 const JIT_OPCODE_OPER_ADDRESS_OF
= $01500000;
1649 {$IF DEFINED(JIT_NATIVE_INT32)}
1650 const JIT_OPCODE_DEST_PTR
= JIT_OPCODE_DEST_INT
;
1651 const JIT_OPCODE_SRC1_PTR
= JIT_OPCODE_SRC1_INT
;
1652 const JIT_OPCODE_SRC2_PTR
= JIT_OPCODE_SRC2_INT
;
1654 const JIT_OPCODE_DEST_PTR
= JIT_OPCODE_DEST_LONG
;
1655 const JIT_OPCODE_SRC1_PTR
= JIT_OPCODE_SRC1_LONG
;
1656 const JIT_OPCODE_SRC2_PTR
= JIT_OPCODE_SRC2_LONG
;
1659 //(*const*) var jit_opcodes: packed array [0..JIT_OP_NUM_OPCODES-1] of jit_opcode_info_t; external name 'jit_opcodes';
1663 * Some obsolete opcodes that have been removed because they are duplicates
1666 const JIT_OP_FEQ_INV
= JIT_OP_FEQ
;
1667 const JIT_OP_FNE_INV
= JIT_OP_FNE
;
1668 const JIT_OP_DEQ_INV
= JIT_OP_DEQ
;
1669 const JIT_OP_DNE_INV
= JIT_OP_DNE
;
1670 const JIT_OP_NFEQ_INV
= JIT_OP_NFEQ
;
1671 const JIT_OP_NFNE_INV
= JIT_OP_NFNE
;
1672 const JIT_OP_BR_FEQ_INV
= JIT_OP_BR_FEQ
;
1673 const JIT_OP_BR_FNE_INV
= JIT_OP_BR_FNE
;
1674 const JIT_OP_BR_DEQ_INV
= JIT_OP_BR_DEQ
;
1675 const JIT_OP_BR_DNE_INV
= JIT_OP_BR_DNE
;
1676 const JIT_OP_BR_NFEQ_INV
= JIT_OP_BR_NFEQ
;
1677 const JIT_OP_BR_NFNE_INV
= JIT_OP_BR_NFNE
;
1682 * Pre-defined type descriptors.
1684 (*const*) var jit_type_void_: jit_type_t; external name 'jit_type_void';
1685 (*const*) var jit_type_sbyte: jit_type_t; external;
1686 (*const*) var jit_type_ubyte: jit_type_t; external;
1687 (*const*) var jit_type_short: jit_type_t; external;
1688 (*const*) var jit_type_ushort: jit_type_t; external;
1689 (*const*) var jit_type_int: jit_type_t; external;
1690 (*const*) var jit_type_uint: jit_type_t; external;
1691 (*const*) var jit_type_nint: jit_type_t; external;
1692 (*const*) var jit_type_nuint: jit_type_t; external;
1693 (*const*) var jit_type_long: jit_type_t; external;
1694 (*const*) var jit_type_ulong: jit_type_t; external;
1695 (*const*) var jit_type_float32: jit_type_t; external;
1696 (*const*) var jit_type_float64: jit_type_t; external;
1697 (*const*) var jit_type_nfloat: jit_type_t; external;
1698 (*const*) var jit_type_void_ptr: jit_type_t; external;
1701 * Type descriptors for the system "char", "int", "long", etc types.
1702 * These are defined to one of the above values.
1704 (*const*) var jit_type_sys_bool: jit_type_t; external;
1705 (*const*) var jit_type_sys_char: jit_type_t; external;
1706 (*const*) var jit_type_sys_schar: jit_type_t; external;
1707 (*const*) var jit_type_sys_uchar: jit_type_t; external;
1708 (*const*) var jit_type_sys_short: jit_type_t; external;
1709 (*const*) var jit_type_sys_ushort: jit_type_t; external;
1710 (*const*) var jit_type_sys_int: jit_type_t; external;
1711 (*const*) var jit_type_sys_uint: jit_type_t; external;
1712 (*const*) var jit_type_sys_long: jit_type_t; external;
1713 (*const*) var jit_type_sys_ulong: jit_type_t; external;
1714 (*const*) var jit_type_sys_longlong: jit_type_t; external;
1715 (*const*) var jit_type_sys_ulonglong: jit_type_t; external;
1716 (*const*) var jit_type_sys_float: jit_type_t; external;
1717 (*const*) var jit_type_sys_double: jit_type_t; external;
1718 (*const*) var jit_type_sys_long_double: jit_type_t; external;
1723 * Type kinds that may be returned by "jit_type_get_kind".
1725 const TJIT_TYPE_INVALID
= -1;
1726 const TJIT_TYPE_VOID
= 0;
1727 const TJIT_TYPE_SBYTE
= 1;
1728 const TJIT_TYPE_UBYTE
= 2;
1729 const TJIT_TYPE_SHORT
= 3;
1730 const TJIT_TYPE_USHORT
= 4;
1731 const TJIT_TYPE_INT
= 5;
1732 const TJIT_TYPE_UINT
= 6;
1733 const TJIT_TYPE_NINT
= 7;
1734 const TJIT_TYPE_NUINT
= 8;
1735 const TJIT_TYPE_LONG
= 9;
1736 const TJIT_TYPE_ULONG
= 10;
1737 const TJIT_TYPE_FLOAT32
= 11;
1738 const TJIT_TYPE_FLOAT64
= 12;
1739 const TJIT_TYPE_NFLOAT
= 13;
1740 const TJIT_TYPE_MAX_PRIMITIVE
= TJIT_TYPE_NFLOAT
;
1741 const TJIT_TYPE_STRUCT
= 14;
1742 const TJIT_TYPE_UNION
= 15;
1743 const TJIT_TYPE_SIGNATURE
= 16;
1744 const TJIT_TYPE_PTR
= 17;
1745 const TJIT_TYPE_FIRST_TAGGED
= 32;
1748 * Special tag types.
1750 const JIT_TYPETAG_NAME
= 10000;
1751 const JIT_TYPETAG_STRUCT_NAME
= 10001;
1752 const JIT_TYPETAG_UNION_NAME
= 10002;
1753 const JIT_TYPETAG_ENUM_NAME
= 10003;
1754 const JIT_TYPETAG_CONST
= 10004;
1755 const JIT_TYPETAG_VOLATILE
= 10005;
1756 const JIT_TYPETAG_REFERENCE
= 10006;
1757 const JIT_TYPETAG_OUTPUT
= 10007;
1758 const JIT_TYPETAG_RESTRICT
= 10008;
1759 const JIT_TYPETAG_SYS_BOOL
= 10009;
1760 const JIT_TYPETAG_SYS_CHAR
= 10010;
1761 const JIT_TYPETAG_SYS_SCHAR
= 10011;
1762 const JIT_TYPETAG_SYS_UCHAR
= 10012;
1763 const JIT_TYPETAG_SYS_SHORT
= 10013;
1764 const JIT_TYPETAG_SYS_USHORT
= 10014;
1765 const JIT_TYPETAG_SYS_INT
= 10015;
1766 const JIT_TYPETAG_SYS_UINT
= 10016;
1767 const JIT_TYPETAG_SYS_LONG
= 10017;
1768 const JIT_TYPETAG_SYS_ULONG
= 10018;
1769 const JIT_TYPETAG_SYS_LONGLONG
= 10019;
1770 const JIT_TYPETAG_SYS_ULONGLONG
= 10020;
1771 const JIT_TYPETAG_SYS_FLOAT
= 10021;
1772 const JIT_TYPETAG_SYS_DOUBLE
= 10022;
1773 const JIT_TYPETAG_SYS_LONGDOUBLE
= 10023;
1776 * ABI types for function signatures.
1779 jit_abi_cdecl
, (* Native C calling conventions *)
1780 jit_abi_vararg
, (* Native C with optional variable arguments *)
1781 jit_abi_stdcall
, (* Win32 STDCALL (same as cdecl if not Win32) *)
1782 jit_abi_fastcall (* Win32 FASTCALL (same as cdecl if not Win32) *)
1786 * External function declarations.
1788 function jit_type_copy (type_
: jit_type_t
): jit_type_t
; libraryLibJITDecl
;
1789 procedure jit_type_free (type_
: jit_type_t
); libraryLibJITDecl
;
1790 function jit_type_create_struct (fields
: pjit_type_t
; num_fields
: LongWord; incref
: Integer): jit_type_t
; libraryLibJITDecl
;
1791 function jit_type_create_union (fields
: pjit_type_t
; num_fields
: LongWord; incref
: Integer): jit_type_t
; libraryLibJITDecl
;
1792 function jit_type_create_signature (abi
: jit_abi_t
; return_type
: jit_type_t
; params
: pjit_type_t
; num_params
: LongWord; incref
: Integer): jit_type_t
; libraryLibJITDecl
;
1793 function jit_type_create_pointer (type_
: jit_type_t
; incref
: Integer): jit_type_t
; libraryLibJITDecl
;
1794 function jit_type_create_tagged (type_
: jit_type_t
; kind
: Integer; data
: Pointer; free_func
: jit_meta_free_func
; incref
: Integer): jit_type_t
; libraryLibJITDecl
;
1795 function jit_type_set_names (type_
: jit_type_t
; names
: PPAnsiChar
; num_names
: LongWord): Integer; libraryLibJITDecl
;
1796 procedure jit_type_set_size_and_alignment (type_
: jit_type_t
; size
: jit_nint
; alignment
: jit_nint
); libraryLibJITDecl
;
1797 procedure jit_type_set_offset (type_
: jit_type_t
; field_index
: LongWord; offset
: jit_nuint
); libraryLibJITDecl
;
1798 function jit_type_get_kind (type_
: jit_type_t
): Integer; libraryLibJITDecl
;
1799 function jit_type_get_size (type_
: jit_type_t
): jit_nuint
; libraryLibJITDecl
;
1800 function jit_type_get_alignment (type_
: jit_type_t
): jit_nuint
; libraryLibJITDecl
;
1801 function jit_type_num_fields (type_
: jit_type_t
): LongWord; libraryLibJITDecl
;
1802 function jit_type_get_field (type_
: jit_type_t
; field_index
: LongWord): jit_type_t
; libraryLibJITDecl
;
1803 function jit_type_get_offset (type_
: jit_type_t
; field_index
: LongWord): jit_nuint
; libraryLibJITDecl
;
1804 function jit_type_get_name (type_
: jit_type_t
; index
: LongWord): PAnsiChar; libraryLibJITDecl
; // const
1805 const JIT_INVALID_NAME
= LongWord(not ((LongWord(0))));
1806 function jit_type_find_name (type_
: jit_type_t
; const name
: PAnsiChar): LongWord; libraryLibJITDecl
;
1807 function jit_type_num_params (type_
: jit_type_t
): LongWord; libraryLibJITDecl
;
1808 function jit_type_get_return (type_
: jit_type_t
): jit_type_t
; libraryLibJITDecl
;
1809 function jit_type_get_param (type_
: jit_type_t
; param_index
: LongWord): jit_type_t
; libraryLibJITDecl
;
1810 function jit_type_get_abi (type_
: jit_type_t
): jit_abi_t
; libraryLibJITDecl
;
1811 function jit_type_get_ref (type_
: jit_type_t
): jit_type_t
; libraryLibJITDecl
;
1812 function jit_type_get_tagged_type (type_
: jit_type_t
): jit_type_t
; libraryLibJITDecl
;
1813 procedure jit_type_set_tagged_type (type_
: jit_type_t
; underlying
: jit_type_t
; incref
: Integer); libraryLibJITDecl
;
1814 function jit_type_get_tagged_kind (type_
: jit_type_t
): Integer; libraryLibJITDecl
;
1815 function jit_type_get_tagged_data (type_
: jit_type_t
): Pointer; libraryLibJITDecl
;
1816 procedure jit_type_set_tagged_data (type_
: jit_type_t
; data
: Pointer; free_func
: jit_meta_free_func
); libraryLibJITDecl
;
1817 function jit_type_is_primitive (type_
: jit_type_t
): Integer; libraryLibJITDecl
;
1818 function jit_type_is_struct (type_
: jit_type_t
): Integer; libraryLibJITDecl
;
1819 function jit_type_is_union (type_
: jit_type_t
): Integer; libraryLibJITDecl
;
1820 function jit_type_is_signature (type_
: jit_type_t
): Integer; libraryLibJITDecl
;
1821 function jit_type_is_pointer (type_
: jit_type_t
): Integer; libraryLibJITDecl
;
1822 function jit_type_is_tagged (type_
: jit_type_t
): Integer; libraryLibJITDecl
;
1823 function jit_type_best_alignment (): jit_nuint
; libraryLibJITDecl
;
1824 function jit_type_normalize (type_
: jit_type_t
): jit_type_t
; libraryLibJITDecl
;
1825 function jit_type_remove_tags (type_
: jit_type_t
): jit_type_t
; libraryLibJITDecl
;
1826 function jit_type_promote_int (type_
: jit_type_t
): jit_type_t
; libraryLibJITDecl
;
1827 function jit_type_return_via_pointer (type_
: jit_type_t
): Integer; libraryLibJITDecl
;
1828 function jit_type_has_tag (type_
: jit_type_t
; kind
: Integer): Integer; libraryLibJITDecl
;
1831 type jit_unwind_context_t
= record
1834 context
: jit_context_t
;
1835 (*k8: it isn't here in x86/x86_65/arm/generic
1836 #ifdef _JIT_ARCH_UNWIND_DATA
1837 _JIT_ARCH_UNWIND_DATA
1841 type pjit_unwind_context_t
= ^jit_unwind_context_t
;
1843 function jit_unwind_init (unwind
: pjit_unwind_context_t
; context
: jit_context_t
): Integer; libraryLibJITDecl
;
1844 procedure jit_unwind_free (unwind
: pjit_unwind_context_t
); libraryLibJITDecl
;
1846 function jit_unwind_next (unwind
: pjit_unwind_context_t
): Integer; libraryLibJITDecl
;
1847 function jit_unwind_next_pc (unwind
: pjit_unwind_context_t
): Integer; libraryLibJITDecl
;
1848 function jit_unwind_get_pc (unwind
: pjit_unwind_context_t
): Pointer; libraryLibJITDecl
;
1850 function jit_unwind_jump (unwind
: pjit_unwind_context_t
; pc
: Pointer): Integer; libraryLibJITDecl
;
1852 function jit_unwind_get_function (unwind
: pjit_unwind_context_t
): jit_function_t
; libraryLibJITDecl
;
1853 function jit_unwind_get_offset (unwind
: pjit_unwind_context_t
): LongWord; libraryLibJITDecl
;
1857 * Memory allocation routines.
1859 function jit_malloc (size
: LongWord): Pointer; libraryLibJITDecl
;
1860 function jit_calloc (num
: LongWord; size
: LongWord): Pointer; libraryLibJITDecl
;
1861 function jit_realloc (ptr
: Pointer; size
: LongWord): Pointer; libraryLibJITDecl
;
1862 procedure jit_free (ptr
: Pointer); libraryLibJITDecl
;
1865 #define jit_new(type) ((type * )jit_malloc(sizeof(type_)))
1866 #define jit_cnew(type_) ((type_ * )jit_calloc(1; sizeof(type_)))
1870 * Memory set/copy/compare routines.
1872 function jit_memset (dest
: Pointer; ch
: Integer; len
: LongWord): Pointer; libraryLibJITDecl
;
1873 function jit_memcpy (dest
: Pointer; const src
: Pointer; len
: LongWord): Pointer; libraryLibJITDecl
;
1874 function jit_memmove (dest
: Pointer; const src
: Pointer; len
: LongWord): Pointer; libraryLibJITDecl
;
1875 function jit_memcmp (const s1
: Pointer; const s2
: Pointer; len
: LongWord): Integer; libraryLibJITDecl
;
1876 function jit_memchr (const str
: Pointer; ch
: Integer; len
: LongWord): Pointer; libraryLibJITDecl
;
1881 function jit_strlen (const str
: PAnsiChar): LongWord; libraryLibJITDecl
;
1882 function jit_strcpy (dest
: PAnsiChar; const src
: PAnsiChar): PAnsiChar; libraryLibJITDecl
;
1883 function jit_strcat (dest
: PAnsiChar; const src
: PAnsiChar): PAnsiChar; libraryLibJITDecl
;
1884 function jit_strncpy (dest
: PAnsiChar; const src
: PAnsiChar; len
: LongWord): PAnsiChar; libraryLibJITDecl
;
1885 function jit_strdup (const str
: PAnsiChar): PAnsiChar; libraryLibJITDecl
;
1886 function jit_strndup (const str
: PAnsiChar; len
: LongWord): PAnsiChar; libraryLibJITDecl
;
1887 function jit_strcmp (const str1
: PAnsiChar; const str2
: PAnsiChar): Integer; libraryLibJITDecl
;
1888 function jit_strncmp (const str1
: PAnsiChar; const str2
: PAnsiChar; len
: LongWord): Integer; libraryLibJITDecl
;
1889 function jit_stricmp (const str1
: PAnsiChar; const str2
: PAnsiChar): Integer; libraryLibJITDecl
;
1890 function jit_strnicmp (const str1
: PAnsiChar; const str2
: PAnsiChar; len
: LongWord): Integer; libraryLibJITDecl
;
1891 function jit_strchr (const str
: PAnsiChar; ch
: Integer): PAnsiChar; libraryLibJITDecl
;
1892 function jit_strrchr (const str
: PAnsiChar; ch
: Integer): PAnsiChar; libraryLibJITDecl
;
1894 function jit_sprintf (str
: PAnsiChar; const format
: PAnsiChar): Integer; libraryLibJITDecl
; varargs
;
1895 function jit_snprintf (str
: PAnsiChar; len
: LongWord; const format
: PAnsiChar): Integer; libraryLibJITDecl
; varargs
;
1900 * Full struction that can hold a constant of any type.
1902 type jit_constant_t
= record
1905 TJIT_TYPE_PTR
: (ptr_value
: Pointer);
1906 TJIT_TYPE_INT
: (int_value
: jit_int
);
1907 TJIT_TYPE_UINT
: (uint_value
: jit_uint
);
1908 TJIT_TYPE_NINT
: (nint_value
: jit_nint
);
1909 TJIT_TYPE_NUINT
: (nuint_value
: jit_nuint
);
1910 TJIT_TYPE_LONG
: (long_value
: jit_long
);
1911 TJIT_TYPE_ULONG
: (ulong_value
: jit_ulong
);
1912 TJIT_TYPE_FLOAT32
: (float32_value
: jit_float32
);
1913 TJIT_TYPE_FLOAT64
: (float64_value
: jit_float64
);
1914 TJIT_TYPE_NFLOAT
: (nfloat_value
: jit_nfloat
);
1917 type pjit_constant_t
= ^jit_constant_t
;
1921 * External function declarations.
1923 function jit_value_create (func
: jit_function_t
; type_
: jit_type_t
): jit_value_t
; libraryLibJITDecl
;
1924 function jit_value_create_nint_constant (func
: jit_function_t
; type_
: jit_type_t
; const_value
: jit_nint
): jit_value_t
; libraryLibJITDecl
;
1925 function jit_value_create_long_constant (func
: jit_function_t
; type_
: jit_type_t
; const_value
: jit_long
): jit_value_t
; libraryLibJITDecl
;
1926 function jit_value_create_float32_constant (func
: jit_function_t
; type_
: jit_type_t
; const_value
: jit_float32
): jit_value_t
; libraryLibJITDecl
;
1927 function jit_value_create_float64_constant (func
: jit_function_t
; type_
: jit_type_t
; const_value
: jit_float64
): jit_value_t
; libraryLibJITDecl
;
1928 function jit_value_create_nfloat_constant (func
: jit_function_t
; type_
: jit_type_t
; const_value
: jit_nfloat
): jit_value_t
; libraryLibJITDecl
;
1929 function jit_value_create_constant (func
: jit_function_t
; const const_value
: pjit_constant_t
): jit_value_t
; libraryLibJITDecl
;
1930 function jit_value_get_param (func
: jit_function_t
; param
: LongWord): jit_value_t
; libraryLibJITDecl
;
1931 function jit_value_get_struct_pointer (func
: jit_function_t
): jit_value_t
; libraryLibJITDecl
;
1932 function jit_value_is_temporary (value
: jit_value_t
): Integer; libraryLibJITDecl
;
1933 function jit_value_is_local (value
: jit_value_t
): Integer; libraryLibJITDecl
;
1934 function jit_value_is_constant (value
: jit_value_t
): Integer; libraryLibJITDecl
;
1935 function jit_value_is_parameter (value
: jit_value_t
): Integer; libraryLibJITDecl
;
1936 procedure jit_value_ref (func
: jit_function_t
; value
: jit_value_t
); libraryLibJITDecl
;
1937 procedure jit_value_set_volatile (value
: jit_value_t
); libraryLibJITDecl
;
1938 function jit_value_is_volatile (value
: jit_value_t
): Integer; libraryLibJITDecl
;
1939 procedure jit_value_set_addressable (value
: jit_value_t
); libraryLibJITDecl
;
1940 function jit_value_is_addressable (value
: jit_value_t
): Integer; libraryLibJITDecl
;
1941 function jit_value_get_type (value
: jit_value_t
): jit_type_t
; libraryLibJITDecl
;
1942 function jit_value_get_function (value
: jit_value_t
): jit_function_t
; libraryLibJITDecl
;
1943 function jit_value_get_block (value
: jit_value_t
): jit_block_t
; libraryLibJITDecl
;
1944 function jit_value_get_context (value
: jit_value_t
): jit_context_t
; libraryLibJITDecl
;
1945 function jit_value_get_constant (value
: jit_value_t
): jit_constant_t
; libraryLibJITDecl
;
1946 function jit_value_get_nint_constant (value
: jit_value_t
): jit_nint
; libraryLibJITDecl
;
1947 function jit_value_get_long_constant (value
: jit_value_t
): jit_long
; libraryLibJITDecl
;
1948 function jit_value_get_float32_constant (value
: jit_value_t
): jit_float32
; libraryLibJITDecl
;
1949 function jit_value_get_float64_constant (value
: jit_value_t
): jit_float64
; libraryLibJITDecl
;
1950 function jit_value_get_nfloat_constant (value
: jit_value_t
): jit_nfloat
; libraryLibJITDecl
;
1951 function jit_value_is_true (value
: jit_value_t
): Integer; libraryLibJITDecl
;
1952 function jit_constant_convert (result_
: pjit_constant_t
; const value
: pjit_constant_t
; type_
: jit_type_t
; overflow_check
: Integer): Integer; libraryLibJITDecl
;
1958 JIT_PROT_READ_WRITE
,
1960 JIT_PROT_EXEC_READ_WRITE
1964 procedure jit_vmem_init (); libraryLibJITDecl
;
1966 function jit_vmem_page_size (): jit_uint
; libraryLibJITDecl
;
1967 function jit_vmem_round_up (value
: jit_nuint
): jit_nuint
; libraryLibJITDecl
;
1968 function jit_vmem_round_down (value
: jit_nuint
): jit_nuint
; libraryLibJITDecl
;
1970 function jit_vmem_reserve (size
: jit_uint
): Pointer; libraryLibJITDecl
;
1971 function jit_vmem_reserve_committed (size
: jit_uint
; prot
: jit_prot_t
): Pointer; libraryLibJITDecl
;
1972 function jit_vmem_release (addr
: Pointer; size
: jit_uint
): Integer; libraryLibJITDecl
;
1974 function jit_vmem_commit (addr
: Pointer; size
: jit_uint
; prot
: jit_prot_t
): Integer; libraryLibJITDecl
;
1975 function jit_vmem_decommit (addr
: Pointer; size
: jit_uint
): Integer; libraryLibJITDecl
;
1977 function jit_vmem_protect (addr
: Pointer; size
: jit_uint
; prot
: jit_prot_t
): Integer; libraryLibJITDecl
;
1981 * Result values for "_jit_cache_start_function" and "_jit_cache_end_function".
1983 const JIT_MEMORY_OK
= 0; (* Function is OK *)
1984 const JIT_MEMORY_RESTART
= 1; (* Restart is required *)
1985 const JIT_MEMORY_TOO_BIG
= 2; (* Function is too big for the cache *)
1986 const JIT_MEMORY_ERROR
= 3; (* Other error *)
1989 (* TODO: the proper place for this is jit-def.h and it's going to depend on the platform. *)
1990 type jit_size_t
= LongWord;
1992 type jit_memory_context_t
= Pointer;
1993 type jit_function_info_t
= Pointer;
1995 type jit_memory_manager
= record
1996 create
: function (context
: jit_context_t
): jit_memory_context_t
; libraryLibJITDecl
;
1997 destroy
: procedure (memctx
: jit_memory_context_t
); libraryLibJITDecl
;
1999 find_function_info
: function (memctx
: jit_memory_context_t
; pc
: Pointer): jit_function_info_t
; libraryLibJITDecl
;
2000 get_function
: function (memctx
: jit_memory_context_t
; info
: jit_function_info_t
): jit_function_t
; libraryLibJITDecl
;
2001 get_function_start
: function (memctx
: jit_memory_context_t
; info
: jit_function_info_t
): Pointer; libraryLibJITDecl
;
2002 get_function_end
: function (memctx
: jit_memory_context_t
; info
: jit_function_info_t
): Pointer; libraryLibJITDecl
;
2004 alloc_function
: function (memctx
: jit_memory_context_t
): jit_function_t
; libraryLibJITDecl
;
2005 free_function
: procedure (memctx
: jit_memory_context_t
; func
: jit_function_t
); libraryLibJITDecl
;
2007 start_function
: function (memctx
: jit_memory_context_t
; func
: jit_function_t
): Integer; libraryLibJITDecl
;
2008 end_function
: function (memctx
: jit_memory_context_t
; result_
: Integer): Integer; libraryLibJITDecl
;
2009 extend_limit
: function (memctx
: jit_memory_context_t
; count
: Integer): Integer; libraryLibJITDecl
;
2011 get_limit
: function (memctx
: jit_memory_context_t
): Pointer; libraryLibJITDecl
;
2012 get_break
: function (memctx
: jit_memory_context_t
): Pointer; libraryLibJITDecl
;
2013 set_break
: procedure (memctx
: jit_memory_context_t
; brk
: Pointer); libraryLibJITDecl
;
2015 alloc_trampoline
: function (memctx
: jit_memory_context_t
): Pointer; libraryLibJITDecl
;
2016 free_trampoline
: procedure (memctx
: jit_memory_context_t
; ptr
: Pointer); libraryLibJITDecl
;
2018 alloc_closure
: function (memctx
: jit_memory_context_t
): Pointer; libraryLibJITDecl
;
2019 free_closure
: procedure (memctx
: jit_memory_context_t
; ptr
: Pointer); libraryLibJITDecl
;
2021 alloc_data
: function (memctx
: jit_memory_context_t
; size
: jit_size_t
; align_
: jit_size_t
): Pointer; libraryLibJITDecl
;
2023 type jit_memory_manager_t
= (*const(jit_memory_manager)* *)^jit_memory_manager
; //k8: const?! was const in C header
2025 function jit_default_memory_manager (): jit_memory_manager_t
; libraryLibJITDecl
;
2026 procedure jit_context_set_memory_manager (context
: jit_context_t
; manager
: jit_memory_manager_t
); libraryLibJITDecl
;
2030 import core.stdc.stdio : FILE;
2032 procedure jit_dump_type (FILE* stream; type_: jit_type_t); libraryLibJITDecl;
2033 procedure jit_dump_value (FILE* stream; func: value: jit_function_t;: jit_value_t; const prefix: PAnsiChar); libraryLibJITDecl;
2034 procedure jit_dump_insn (FILE* stream; func: jit_function_t; insn: jit_insn_t); libraryLibJITDecl;
2035 procedure jit_dump_function (FILE* stream; func: jit_function_t; const name: PAnsiChar); libraryLibJITDecl;
2040 * Get the frame address for a frame which is "n" levels up the stack.
2041 * A level value of zero indicates the current frame.
2043 //k8 void* _jit_get_frame_address (void* start, uint n) nothrow @nogc;
2045 #if defined(__GNUC__)
2046 # define jit_get_frame_address(n) \
2047 (_jit_get_frame_address(jit_get_current_frame(), (n)))
2049 # define jit_get_frame_address(n) (_jit_get_frame_address(0, (n)))
2054 * Get the frame address for the current frame. May be more efficient
2055 * than using "jit_get_frame_address(0)".
2057 * Note: some gcc vestions have broken __builtin_frame_address() so use
2058 * _JIT_ARCH_GET_CURRENT_FRAME() if available.
2061 #if defined(__GNUC__)
2062 # define JIT_FAST_GET_CURRENT_FRAME 1
2063 # if defined(_JIT_ARCH_GET_CURRENT_FRAME)
2064 # define jit_get_current_frame() \
2067 _JIT_ARCH_GET_CURRENT_FRAME(address); \
2071 # define jit_get_current_frame() (__builtin_frame_address(0))
2074 # define JIT_FAST_GET_CURRENT_FRAME 0
2075 # define jit_get_current_frame() (jit_get_frame_address(0))
2079 * Get the next frame up the stack from a specified frame.
2080 * Returns NULL if it isn't possible to retrieve the next frame.
2082 Pointer _jit_get_next_frame_address(Pointer frame);
2083 #if defined(__GNUC__) && defined(_JIT_ARCH_GET_NEXT_FRAME)
2084 # define jit_get_next_frame_address(frame) \
2087 _JIT_ARCH_GET_NEXT_FRAME(address, (frame)); \
2091 # define jit_get_next_frame_address(frame) \
2092 (_jit_get_next_frame_address(frame))
2096 * Get the return address for a specific frame.
2098 Pointer _jit_get_return_address(Pointer frame; Pointer frame0; Pointer return0);
2099 #if defined(__GNUC__)
2100 # if defined(_JIT_ARCH_GET_RETURN_ADDRESS)
2101 # define jit_get_return_address(frame) \
2104 _JIT_ARCH_GET_RETURN_ADDRESS(address, (frame)); \
2108 # define jit_get_return_address(frame) \
2109 (_jit_get_return_address \
2111 __builtin_frame_address(0); \
2112 __builtin_return_address(0)))
2115 # define jit_get_return_address(frame) \
2116 (_jit_get_return_address((frame); 0; 0))
2120 * Get the return address for the current frame. May be more efficient
2121 * than using "jit_get_return_address(0)".
2123 #if defined(__GNUC__)
2124 # if defined(_JIT_ARCH_GET_CURRENT_RETURN)
2125 # define jit_get_current_return() \
2128 _JIT_ARCH_GET_CURRENT_RETURN(address); \
2132 # define jit_get_current_return() (__builtin_return_address(0))
2135 # define jit_get_current_return() \
2136 (jit_get_return_address(jit_get_current_frame()))
2141 * Declare a stack crawl mark variable. The address of this variable
2142 * can be passed to "jit_frame_contains_crawl_mark" to determine
2143 * if a frame contains the mark.
2145 //k8:??? struct jit_crawl_mark_t { void* volatile mark; }
2146 //k8:??? #define jit_declare_crawl_mark(name) jit_crawl_mark_t name = {0}
2149 * Determine if the stack frame just above "frame" contains a
2150 * particular crawl mark.
2152 //k8:??? int jit_frame_contains_crawl_mark(void* frame, jit_crawl_mark_t* mark);
2158 function jit_context_create
; libraryLibJITImp
;
2159 procedure jit_context_destroy
; libraryLibJITImp
;
2160 procedure jit_context_build_start
; libraryLibJITImp
;
2161 procedure jit_context_build_end
; libraryLibJITImp
;
2162 procedure jit_context_set_on_demand_driver
; libraryLibJITImp
;
2163 function jit_context_set_meta
; libraryLibJITImp
;
2164 function jit_context_set_meta_numeric
; libraryLibJITImp
;
2165 function jit_context_get_meta
; libraryLibJITImp
;
2166 function jit_context_get_meta_numeric
; libraryLibJITImp
;
2167 procedure jit_context_free_meta
; libraryLibJITImp
;
2168 procedure jit_apply
; libraryLibJITImp
;
2169 procedure jit_apply_raw
; libraryLibJITImp
;
2170 function jit_raw_supported
; libraryLibJITImp
;
2171 function jit_closure_create
; libraryLibJITImp
;
2172 function jit_closure_va_get_nint
; libraryLibJITImp
;
2173 function jit_closure_va_get_nuint
; libraryLibJITImp
;
2174 function jit_closure_va_get_long
; libraryLibJITImp
;
2175 function jit_closure_va_get_ulong
; libraryLibJITImp
;
2176 function jit_closure_va_get_float32
; libraryLibJITImp
;
2177 function jit_closure_va_get_float64
; libraryLibJITImp
;
2178 function jit_closure_va_get_nfloat
; libraryLibJITImp
;
2179 function jit_closure_va_get_ptr
; libraryLibJITImp
;
2180 procedure jit_closure_va_get_struct
; libraryLibJITImp
;
2181 function jit_block_get_function
; libraryLibJITImp
;
2182 function jit_block_get_context
; libraryLibJITImp
;
2183 function jit_block_get_label
; libraryLibJITImp
;
2184 function jit_block_get_next_label
; libraryLibJITImp
;
2185 function jit_block_next
; libraryLibJITImp
;
2186 function jit_block_previous
; libraryLibJITImp
;
2187 function jit_block_from_label
; libraryLibJITImp
;
2188 function jit_block_set_meta
; libraryLibJITImp
;
2189 function jit_block_get_meta
; libraryLibJITImp
;
2190 procedure jit_block_free_meta
; libraryLibJITImp
;
2191 function jit_block_is_reachable
; libraryLibJITImp
;
2192 function jit_block_ends_in_dead
; libraryLibJITImp
;
2193 function jit_block_current_is_dead
; libraryLibJITImp
;
2194 function jit_debugging_possible
; libraryLibJITImp
;
2195 function jit_debugger_create
; libraryLibJITImp
;
2196 procedure jit_debugger_destroy
; libraryLibJITImp
;
2197 function jit_debugger_get_context
; libraryLibJITImp
;
2198 function jit_debugger_from_context
; libraryLibJITImp
;
2199 function jit_debugger_get_self
; libraryLibJITImp
;
2200 function jit_debugger_get_thread
; libraryLibJITImp
;
2201 function jit_debugger_get_native_thread
; libraryLibJITImp
;
2202 procedure jit_debugger_set_breakable
; libraryLibJITImp
;
2203 procedure jit_debugger_attach_self
; libraryLibJITImp
;
2204 procedure jit_debugger_detach_self
; libraryLibJITImp
;
2205 function jit_debugger_wait_event
; libraryLibJITImp
;
2206 function jit_debugger_add_breakpoint
; libraryLibJITImp
;
2207 procedure jit_debugger_remove_breakpoint
; libraryLibJITImp
;
2208 procedure jit_debugger_remove_all_breakpoints
; libraryLibJITImp
;
2209 function jit_debugger_is_alive
; libraryLibJITImp
;
2210 function jit_debugger_is_running
; libraryLibJITImp
;
2211 procedure jit_debugger_run
; libraryLibJITImp
;
2212 procedure jit_debugger_step
; libraryLibJITImp
;
2213 procedure jit_debugger_next
; libraryLibJITImp
;
2214 procedure jit_debugger_finish
; libraryLibJITImp
;
2215 procedure jit_debugger_break
; libraryLibJITImp
;
2216 procedure jit_debugger_quit
; libraryLibJITImp
;
2217 function jit_debugger_set_hook
; libraryLibJITImp
;
2218 function jit_readelf_open
; libraryLibJITImp
;
2219 procedure jit_readelf_close
; libraryLibJITImp
;
2220 function jit_readelf_get_name
; libraryLibJITImp
;
2221 function jit_readelf_get_symbol
; libraryLibJITImp
;
2222 function jit_readelf_get_section
; libraryLibJITImp
;
2223 function jit_readelf_get_section_by_type
; libraryLibJITImp
;
2224 function jit_readelf_map_vaddr
; libraryLibJITImp
;
2225 function jit_readelf_num_needed
; libraryLibJITImp
;
2226 function jit_readelf_get_needed
; libraryLibJITImp
;
2227 procedure jit_readelf_add_to_context
; libraryLibJITImp
;
2228 function jit_readelf_resolve_all
; libraryLibJITImp
;
2229 function jit_readelf_register_symbol
; libraryLibJITImp
;
2230 function jit_writeelf_create
; libraryLibJITImp
;
2231 procedure jit_writeelf_destroy
; libraryLibJITImp
;
2232 function jit_writeelf_write
; libraryLibJITImp
;
2233 function jit_writeelf_add_function
; libraryLibJITImp
;
2234 function jit_writeelf_add_needed
; libraryLibJITImp
;
2235 function jit_writeelf_write_section
; libraryLibJITImp
;
2236 function jit_exception_get_last
; libraryLibJITImp
;
2237 function jit_exception_get_last_and_clear
; libraryLibJITImp
;
2238 procedure jit_exception_set_last
; libraryLibJITImp
;
2239 procedure jit_exception_clear_last
; libraryLibJITImp
;
2240 procedure jit_exception_throw
; libraryLibJITImp
;
2241 procedure jit_exception_builtin
; libraryLibJITImp
;
2242 function jit_exception_set_handler
; libraryLibJITImp
;
2243 function jit_exception_get_handler
; libraryLibJITImp
;
2244 function jit_exception_get_stack_trace
; libraryLibJITImp
;
2245 function jit_stack_trace_get_size
; libraryLibJITImp
;
2246 function jit_stack_trace_get_function
; libraryLibJITImp
;
2247 function jit_stack_trace_get_pc
; libraryLibJITImp
;
2248 function jit_stack_trace_get_offset
; libraryLibJITImp
;
2249 procedure jit_stack_trace_free
; libraryLibJITImp
;
2250 function jit_function_create
; libraryLibJITImp
;
2251 function jit_function_create_nested
; libraryLibJITImp
;
2252 procedure jit_function_abandon
; libraryLibJITImp
;
2253 function jit_function_get_context
; libraryLibJITImp
;
2254 function jit_function_get_signature
; libraryLibJITImp
;
2255 function jit_function_set_meta
; libraryLibJITImp
;
2256 function jit_function_get_meta
; libraryLibJITImp
;
2257 procedure jit_function_free_meta
; libraryLibJITImp
;
2258 function jit_function_next
; libraryLibJITImp
;
2259 function jit_function_previous
; libraryLibJITImp
;
2260 function jit_function_get_entry
; libraryLibJITImp
;
2261 function jit_function_get_current
; libraryLibJITImp
;
2262 function jit_function_get_nested_parent
; libraryLibJITImp
;
2263 function jit_function_compile
; libraryLibJITImp
;
2264 function jit_function_is_compiled
; libraryLibJITImp
;
2265 procedure jit_function_set_recompilable
; libraryLibJITImp
;
2266 procedure jit_function_clear_recompilable
; libraryLibJITImp
;
2267 function jit_function_is_recompilable
; libraryLibJITImp
;
2268 function jit_function_compile_entry
; libraryLibJITImp
;
2269 procedure jit_function_setup_entry
; libraryLibJITImp
;
2270 function jit_function_to_closure
; libraryLibJITImp
;
2271 function jit_function_from_closure
; libraryLibJITImp
;
2272 function jit_function_from_pc
; libraryLibJITImp
;
2273 function jit_function_to_vtable_pointer
; libraryLibJITImp
;
2274 function jit_function_from_vtable_pointer
; libraryLibJITImp
;
2275 procedure jit_function_set_on_demand_compiler
; libraryLibJITImp
;
2276 function jit_function_get_on_demand_compiler
; libraryLibJITImp
;
2277 function jit_function_apply
; libraryLibJITImp
;
2278 function jit_function_apply_vararg
; libraryLibJITImp
;
2279 procedure jit_function_set_optimization_level
; libraryLibJITImp
;
2280 function jit_function_get_optimization_level
; libraryLibJITImp
;
2281 function jit_function_get_max_optimization_level
; libraryLibJITImp
;
2282 function jit_function_reserve_label
; libraryLibJITImp
;
2283 function jit_function_labels_equal
; libraryLibJITImp
;
2284 procedure jit_init
; libraryLibJITImp
;
2285 function jit_uses_interpreter
; libraryLibJITImp
;
2286 function jit_supports_threads
; libraryLibJITImp
;
2287 function jit_supports_virtual_memory
; libraryLibJITImp
;
2288 function jit_supports_closures
; libraryLibJITImp
;
2289 function jit_get_closure_size
; libraryLibJITImp
;
2290 function jit_get_closure_alignment
; libraryLibJITImp
;
2291 function jit_get_trampoline_size
; libraryLibJITImp
;
2292 function jit_get_trampoline_alignment
; libraryLibJITImp
;
2293 function jit_insn_get_opcode
; libraryLibJITImp
;
2294 function jit_insn_get_dest
; libraryLibJITImp
;
2295 function jit_insn_get_value1
; libraryLibJITImp
;
2296 function jit_insn_get_value2
; libraryLibJITImp
;
2297 function jit_insn_get_label
; libraryLibJITImp
;
2298 function jit_insn_get_function
; libraryLibJITImp
;
2299 function jit_insn_get_native
; libraryLibJITImp
;
2300 function jit_insn_get_name
; libraryLibJITImp
;
2301 function jit_insn_get_signature
; libraryLibJITImp
;
2302 function jit_insn_dest_is_value
; libraryLibJITImp
;
2303 function jit_insn_label
; libraryLibJITImp
;
2304 function jit_insn_label_tight
; libraryLibJITImp
;
2305 function jit_insn_new_block
; libraryLibJITImp
;
2306 function jit_insn_load
; libraryLibJITImp
;
2307 function jit_insn_dup
; libraryLibJITImp
;
2308 function jit_insn_store
; libraryLibJITImp
;
2309 function jit_insn_load_relative
; libraryLibJITImp
;
2310 function jit_insn_store_relative
; libraryLibJITImp
;
2311 function jit_insn_add_relative
; libraryLibJITImp
;
2312 function jit_insn_load_elem
; libraryLibJITImp
;
2313 function jit_insn_load_elem_address
; libraryLibJITImp
;
2314 function jit_insn_store_elem
; libraryLibJITImp
;
2315 function jit_insn_check_null
; libraryLibJITImp
;
2316 function jit_insn_nop
; libraryLibJITImp
;
2317 function jit_insn_add
; libraryLibJITImp
;
2318 function jit_insn_add_ovf
; libraryLibJITImp
;
2319 function jit_insn_sub
; libraryLibJITImp
;
2320 function jit_insn_sub_ovf
; libraryLibJITImp
;
2321 function jit_insn_mul
; libraryLibJITImp
;
2322 function jit_insn_mul_ovf
; libraryLibJITImp
;
2323 function jit_insn_div
; libraryLibJITImp
;
2324 function jit_insn_rem
; libraryLibJITImp
;
2325 function jit_insn_rem_ieee
; libraryLibJITImp
;
2326 function jit_insn_neg
; libraryLibJITImp
;
2327 function jit_insn_and
; libraryLibJITImp
;
2328 function jit_insn_or
; libraryLibJITImp
;
2329 function jit_insn_xor
; libraryLibJITImp
;
2330 function jit_insn_not
; libraryLibJITImp
;
2331 function jit_insn_shl
; libraryLibJITImp
;
2332 function jit_insn_shr
; libraryLibJITImp
;
2333 function jit_insn_ushr
; libraryLibJITImp
;
2334 function jit_insn_sshr
; libraryLibJITImp
;
2335 function jit_insn_eq
; libraryLibJITImp
;
2336 function jit_insn_ne
; libraryLibJITImp
;
2337 function jit_insn_lt
; libraryLibJITImp
;
2338 function jit_insn_le
; libraryLibJITImp
;
2339 function jit_insn_gt
; libraryLibJITImp
;
2340 function jit_insn_ge
; libraryLibJITImp
;
2341 function jit_insn_cmpl
; libraryLibJITImp
;
2342 function jit_insn_cmpg
; libraryLibJITImp
;
2343 function jit_insn_to_bool
; libraryLibJITImp
;
2344 function jit_insn_to_not_bool
; libraryLibJITImp
;
2345 function jit_insn_acos
; libraryLibJITImp
;
2346 function jit_insn_asin
; libraryLibJITImp
;
2347 function jit_insn_atan
; libraryLibJITImp
;
2348 function jit_insn_atan2
; libraryLibJITImp
;
2349 function jit_insn_ceil
; libraryLibJITImp
;
2350 function jit_insn_cos
; libraryLibJITImp
;
2351 function jit_insn_cosh
; libraryLibJITImp
;
2352 function jit_insn_exp
; libraryLibJITImp
;
2353 function jit_insn_floor
; libraryLibJITImp
;
2354 function jit_insn_log
; libraryLibJITImp
;
2355 function jit_insn_log10
; libraryLibJITImp
;
2356 function jit_insn_pow
; libraryLibJITImp
;
2357 function jit_insn_rint
; libraryLibJITImp
;
2358 function jit_insn_round
; libraryLibJITImp
;
2359 function jit_insn_sin
; libraryLibJITImp
;
2360 function jit_insn_sinh
; libraryLibJITImp
;
2361 function jit_insn_sqrt
; libraryLibJITImp
;
2362 function jit_insn_tan
; libraryLibJITImp
;
2363 function jit_insn_tanh
; libraryLibJITImp
;
2364 function jit_insn_trunc
; libraryLibJITImp
;
2365 function jit_insn_is_nan
; libraryLibJITImp
;
2366 function jit_insn_is_finite
; libraryLibJITImp
;
2367 function jit_insn_is_inf
; libraryLibJITImp
;
2368 function jit_insn_abs
; libraryLibJITImp
;
2369 function jit_insn_min
; libraryLibJITImp
;
2370 function jit_insn_max
; libraryLibJITImp
;
2371 function jit_insn_sign
; libraryLibJITImp
;
2372 function jit_insn_branch
; libraryLibJITImp
;
2373 function jit_insn_branch_if
; libraryLibJITImp
;
2374 function jit_insn_branch_if_not
; libraryLibJITImp
;
2375 function jit_insn_jump_table
; libraryLibJITImp
;
2376 function jit_insn_address_of
; libraryLibJITImp
;
2377 function jit_insn_address_of_label
; libraryLibJITImp
;
2378 function jit_insn_convert
; libraryLibJITImp
;
2379 function jit_insn_call
; libraryLibJITImp
;
2380 function jit_insn_call_indirect
; libraryLibJITImp
;
2381 function jit_insn_call_indirect_vtable
; libraryLibJITImp
;
2382 function jit_insn_call_native
; libraryLibJITImp
;
2383 function jit_insn_call_intrinsic
; libraryLibJITImp
;
2384 function jit_insn_incoming_reg
; libraryLibJITImp
;
2385 function jit_insn_incoming_frame_posn
; libraryLibJITImp
;
2386 function jit_insn_outgoing_reg
; libraryLibJITImp
;
2387 function jit_insn_outgoing_frame_posn
; libraryLibJITImp
;
2388 function jit_insn_return_reg
; libraryLibJITImp
;
2389 function jit_insn_setup_for_nested
; libraryLibJITImp
;
2390 function jit_insn_flush_struct
; libraryLibJITImp
;
2391 function jit_insn_import
; libraryLibJITImp
;
2392 function jit_insn_push
; libraryLibJITImp
;
2393 function jit_insn_push_ptr
; libraryLibJITImp
;
2394 function jit_insn_set_param
; libraryLibJITImp
;
2395 function jit_insn_set_param_ptr
; libraryLibJITImp
;
2396 function jit_insn_push_return_area_ptr
; libraryLibJITImp
;
2397 function jit_insn_pop_stack
; libraryLibJITImp
;
2398 function jit_insn_defer_pop_stack
; libraryLibJITImp
;
2399 function jit_insn_flush_defer_pop
; libraryLibJITImp
;
2400 function jit_insn_return
; libraryLibJITImp
;
2401 function jit_insn_return_ptr
; libraryLibJITImp
;
2402 function jit_insn_default_return
; libraryLibJITImp
;
2403 function jit_insn_throw
; libraryLibJITImp
;
2404 function jit_insn_get_call_stack
; libraryLibJITImp
;
2405 function jit_insn_thrown_exception
; libraryLibJITImp
;
2406 function jit_insn_uses_catcher
; libraryLibJITImp
;
2407 function jit_insn_start_catcher
; libraryLibJITImp
;
2408 function jit_insn_branch_if_pc_not_in_range
; libraryLibJITImp
;
2409 function jit_insn_rethrow_unhandled
; libraryLibJITImp
;
2410 function jit_insn_start_finally
; libraryLibJITImp
;
2411 function jit_insn_return_from_finally
; libraryLibJITImp
;
2412 function jit_insn_call_finally
; libraryLibJITImp
;
2413 function jit_insn_start_filter
; libraryLibJITImp
;
2414 function jit_insn_return_from_filter
; libraryLibJITImp
;
2415 function jit_insn_call_filter
; libraryLibJITImp
;
2416 function jit_insn_memcpy
; libraryLibJITImp
;
2417 function jit_insn_memmove
; libraryLibJITImp
;
2418 function jit_insn_memset
; libraryLibJITImp
;
2419 function jit_insn_alloca
; libraryLibJITImp
;
2420 function jit_insn_move_blocks_to_end
; libraryLibJITImp
;
2421 function jit_insn_move_blocks_to_start
; libraryLibJITImp
;
2422 function jit_insn_mark_offset
; libraryLibJITImp
;
2423 function jit_insn_mark_breakpoint
; libraryLibJITImp
;
2424 function jit_insn_mark_breakpoint_variable
; libraryLibJITImp
;
2425 procedure jit_insn_iter_init
; libraryLibJITImp
;
2426 procedure jit_insn_iter_init_last
; libraryLibJITImp
;
2427 function jit_insn_iter_next
; libraryLibJITImp
;
2428 function jit_insn_iter_previous
; libraryLibJITImp
;
2429 function jit_int_add
; libraryLibJITImp
;
2430 function jit_int_sub
; libraryLibJITImp
;
2431 function jit_int_mul
; libraryLibJITImp
;
2432 function jit_int_div
; libraryLibJITImp
;
2433 function jit_int_rem
; libraryLibJITImp
;
2434 function jit_int_add_ovf
; libraryLibJITImp
;
2435 function jit_int_sub_ovf
; libraryLibJITImp
;
2436 function jit_int_mul_ovf
; libraryLibJITImp
;
2437 function jit_int_neg
; libraryLibJITImp
;
2438 function jit_int_and
; libraryLibJITImp
;
2439 function jit_int_or
; libraryLibJITImp
;
2440 function jit_int_xor
; libraryLibJITImp
;
2441 function jit_int_not
; libraryLibJITImp
;
2442 function jit_int_shl
; libraryLibJITImp
;
2443 function jit_int_shr
; libraryLibJITImp
;
2444 function jit_int_eq
; libraryLibJITImp
;
2445 function jit_int_ne
; libraryLibJITImp
;
2446 function jit_int_lt
; libraryLibJITImp
;
2447 function jit_int_le
; libraryLibJITImp
;
2448 function jit_int_gt
; libraryLibJITImp
;
2449 function jit_int_ge
; libraryLibJITImp
;
2450 function jit_int_cmp
; libraryLibJITImp
;
2451 function jit_int_abs
; libraryLibJITImp
;
2452 function jit_int_min
; libraryLibJITImp
;
2453 function jit_int_max
; libraryLibJITImp
;
2454 function jit_int_sign
; libraryLibJITImp
;
2455 function jit_uint_add
; libraryLibJITImp
;
2456 function jit_uint_sub
; libraryLibJITImp
;
2457 function jit_uint_mul
; libraryLibJITImp
;
2458 function jit_uint_div
; libraryLibJITImp
;
2459 function jit_uint_rem
; libraryLibJITImp
;
2460 function jit_uint_add_ovf
; libraryLibJITImp
;
2461 function jit_uint_sub_ovf
; libraryLibJITImp
;
2462 function jit_uint_mul_ovf
; libraryLibJITImp
;
2463 function jit_uint_neg
; libraryLibJITImp
;
2464 function jit_uint_and
; libraryLibJITImp
;
2465 function jit_uint_or
; libraryLibJITImp
;
2466 function jit_uint_xor
; libraryLibJITImp
;
2467 function jit_uint_not
; libraryLibJITImp
;
2468 function jit_uint_shl
; libraryLibJITImp
;
2469 function jit_uint_shr
; libraryLibJITImp
;
2470 function jit_uint_eq
; libraryLibJITImp
;
2471 function jit_uint_ne
; libraryLibJITImp
;
2472 function jit_uint_lt
; libraryLibJITImp
;
2473 function jit_uint_le
; libraryLibJITImp
;
2474 function jit_uint_gt
; libraryLibJITImp
;
2475 function jit_uint_ge
; libraryLibJITImp
;
2476 function jit_uint_cmp
; libraryLibJITImp
;
2477 function jit_uint_min
; libraryLibJITImp
;
2478 function jit_uint_max
; libraryLibJITImp
;
2479 function jit_long_add
; libraryLibJITImp
;
2480 function jit_long_sub
; libraryLibJITImp
;
2481 function jit_long_mul
; libraryLibJITImp
;
2482 function jit_long_div
; libraryLibJITImp
;
2483 function jit_long_rem
; libraryLibJITImp
;
2484 function jit_long_add_ovf
; libraryLibJITImp
;
2485 function jit_long_sub_ovf
; libraryLibJITImp
;
2486 function jit_long_mul_ovf
; libraryLibJITImp
;
2487 function jit_long_neg
; libraryLibJITImp
;
2488 function jit_long_and
; libraryLibJITImp
;
2489 function jit_long_or
; libraryLibJITImp
;
2490 function jit_long_xor
; libraryLibJITImp
;
2491 function jit_long_not
; libraryLibJITImp
;
2492 function jit_long_shl
; libraryLibJITImp
;
2493 function jit_long_shr
; libraryLibJITImp
;
2494 function jit_long_eq
; libraryLibJITImp
;
2495 function jit_long_ne
; libraryLibJITImp
;
2496 function jit_long_lt
; libraryLibJITImp
;
2497 function jit_long_le
; libraryLibJITImp
;
2498 function jit_long_gt
; libraryLibJITImp
;
2499 function jit_long_ge
; libraryLibJITImp
;
2500 function jit_long_cmp
; libraryLibJITImp
;
2501 function jit_long_abs
; libraryLibJITImp
;
2502 function jit_long_min
; libraryLibJITImp
;
2503 function jit_long_max
; libraryLibJITImp
;
2504 function jit_long_sign
; libraryLibJITImp
;
2505 function jit_ulong_add
; libraryLibJITImp
;
2506 function jit_ulong_sub
; libraryLibJITImp
;
2507 function jit_ulong_mul
; libraryLibJITImp
;
2508 function jit_ulong_div
; libraryLibJITImp
;
2509 function jit_ulong_rem
; libraryLibJITImp
;
2510 function jit_ulong_add_ovf
; libraryLibJITImp
;
2511 function jit_ulong_sub_ovf
; libraryLibJITImp
;
2512 function jit_ulong_mul_ovf
; libraryLibJITImp
;
2513 function jit_ulong_neg
; libraryLibJITImp
;
2514 function jit_ulong_and
; libraryLibJITImp
;
2515 function jit_ulong_or
; libraryLibJITImp
;
2516 function jit_ulong_xor
; libraryLibJITImp
;
2517 function jit_ulong_not
; libraryLibJITImp
;
2518 function jit_ulong_shl
; libraryLibJITImp
;
2519 function jit_ulong_shr
; libraryLibJITImp
;
2520 function jit_ulong_eq
; libraryLibJITImp
;
2521 function jit_ulong_ne
; libraryLibJITImp
;
2522 function jit_ulong_lt
; libraryLibJITImp
;
2523 function jit_ulong_le
; libraryLibJITImp
;
2524 function jit_ulong_gt
; libraryLibJITImp
;
2525 function jit_ulong_ge
; libraryLibJITImp
;
2526 function jit_ulong_cmp
; libraryLibJITImp
;
2527 function jit_ulong_min
; libraryLibJITImp
;
2528 function jit_ulong_max
; libraryLibJITImp
;
2529 function jit_float32_add
; libraryLibJITImp
;
2530 function jit_float32_sub
; libraryLibJITImp
;
2531 function jit_float32_mul
; libraryLibJITImp
;
2532 function jit_float32_div
; libraryLibJITImp
;
2533 function jit_float32_rem
; libraryLibJITImp
;
2534 function jit_float32_ieee_rem
; libraryLibJITImp
;
2535 function jit_float32_neg
; libraryLibJITImp
;
2536 function jit_float32_eq
; libraryLibJITImp
;
2537 function jit_float32_ne
; libraryLibJITImp
;
2538 function jit_float32_lt
; libraryLibJITImp
;
2539 function jit_float32_le
; libraryLibJITImp
;
2540 function jit_float32_gt
; libraryLibJITImp
;
2541 function jit_float32_ge
; libraryLibJITImp
;
2542 function jit_float32_cmpl
; libraryLibJITImp
;
2543 function jit_float32_cmpg
; libraryLibJITImp
;
2544 function jit_float32_acos
; libraryLibJITImp
;
2545 function jit_float32_asin
; libraryLibJITImp
;
2546 function jit_float32_atan
; libraryLibJITImp
;
2547 function jit_float32_atan2
; libraryLibJITImp
;
2548 function jit_float32_ceil
; libraryLibJITImp
;
2549 function jit_float32_cos
; libraryLibJITImp
;
2550 function jit_float32_cosh
; libraryLibJITImp
;
2551 function jit_float32_exp
; libraryLibJITImp
;
2552 function jit_float32_floor
; libraryLibJITImp
;
2553 function jit_float32_log
; libraryLibJITImp
;
2554 function jit_float32_log10
; libraryLibJITImp
;
2555 function jit_float32_pow
; libraryLibJITImp
;
2556 function jit_float32_rint
; libraryLibJITImp
;
2557 function jit_float32_round
; libraryLibJITImp
;
2558 function jit_float32_sin
; libraryLibJITImp
;
2559 function jit_float32_sinh
; libraryLibJITImp
;
2560 function jit_float32_sqrt
; libraryLibJITImp
;
2561 function jit_float32_tan
; libraryLibJITImp
;
2562 function jit_float32_tanh
; libraryLibJITImp
;
2563 function jit_float32_trunc
; libraryLibJITImp
;
2564 function jit_float32_is_finite
; libraryLibJITImp
;
2565 function jit_float32_is_nan
; libraryLibJITImp
;
2566 function jit_float32_is_inf
; libraryLibJITImp
;
2567 function jit_float32_abs
; libraryLibJITImp
;
2568 function jit_float32_min
; libraryLibJITImp
;
2569 function jit_float32_max
; libraryLibJITImp
;
2570 function jit_float32_sign
; libraryLibJITImp
;
2571 function jit_float64_add
; libraryLibJITImp
;
2572 function jit_float64_sub
; libraryLibJITImp
;
2573 function jit_float64_mul
; libraryLibJITImp
;
2574 function jit_float64_div
; libraryLibJITImp
;
2575 function jit_float64_rem
; libraryLibJITImp
;
2576 function jit_float64_ieee_rem
; libraryLibJITImp
;
2577 function jit_float64_neg
; libraryLibJITImp
;
2578 function jit_float64_eq
; libraryLibJITImp
;
2579 function jit_float64_ne
; libraryLibJITImp
;
2580 function jit_float64_lt
; libraryLibJITImp
;
2581 function jit_float64_le
; libraryLibJITImp
;
2582 function jit_float64_gt
; libraryLibJITImp
;
2583 function jit_float64_ge
; libraryLibJITImp
;
2584 function jit_float64_cmpl
; libraryLibJITImp
;
2585 function jit_float64_cmpg
; libraryLibJITImp
;
2586 function jit_float64_acos
; libraryLibJITImp
;
2587 function jit_float64_asin
; libraryLibJITImp
;
2588 function jit_float64_atan
; libraryLibJITImp
;
2589 function jit_float64_atan2
; libraryLibJITImp
;
2590 function jit_float64_ceil
; libraryLibJITImp
;
2591 function jit_float64_cos
; libraryLibJITImp
;
2592 function jit_float64_cosh
; libraryLibJITImp
;
2593 function jit_float64_exp
; libraryLibJITImp
;
2594 function jit_float64_floor
; libraryLibJITImp
;
2595 function jit_float64_log
; libraryLibJITImp
;
2596 function jit_float64_log10
; libraryLibJITImp
;
2597 function jit_float64_pow
; libraryLibJITImp
;
2598 function jit_float64_rint
; libraryLibJITImp
;
2599 function jit_float64_round
; libraryLibJITImp
;
2600 function jit_float64_sin
; libraryLibJITImp
;
2601 function jit_float64_sinh
; libraryLibJITImp
;
2602 function jit_float64_sqrt
; libraryLibJITImp
;
2603 function jit_float64_tan
; libraryLibJITImp
;
2604 function jit_float64_tanh
; libraryLibJITImp
;
2605 function jit_float64_trunc
; libraryLibJITImp
;
2606 function jit_float64_is_finite
; libraryLibJITImp
;
2607 function jit_float64_is_nan
; libraryLibJITImp
;
2608 function jit_float64_is_inf
; libraryLibJITImp
;
2609 function jit_float64_abs
; libraryLibJITImp
;
2610 function jit_float64_min
; libraryLibJITImp
;
2611 function jit_float64_max
; libraryLibJITImp
;
2612 function jit_float64_sign
; libraryLibJITImp
;
2613 function jit_nfloat_add
; libraryLibJITImp
;
2614 function jit_nfloat_sub
; libraryLibJITImp
;
2615 function jit_nfloat_mul
; libraryLibJITImp
;
2616 function jit_nfloat_div
; libraryLibJITImp
;
2617 function jit_nfloat_rem
; libraryLibJITImp
;
2618 function jit_nfloat_ieee_rem
; libraryLibJITImp
;
2619 function jit_nfloat_neg
; libraryLibJITImp
;
2620 function jit_nfloat_eq
; libraryLibJITImp
;
2621 function jit_nfloat_ne
; libraryLibJITImp
;
2622 function jit_nfloat_lt
; libraryLibJITImp
;
2623 function jit_nfloat_le
; libraryLibJITImp
;
2624 function jit_nfloat_gt
; libraryLibJITImp
;
2625 function jit_nfloat_ge
; libraryLibJITImp
;
2626 function jit_nfloat_cmpl
; libraryLibJITImp
;
2627 function jit_nfloat_cmpg
; libraryLibJITImp
;
2628 function jit_nfloat_acos
; libraryLibJITImp
;
2629 function jit_nfloat_asin
; libraryLibJITImp
;
2630 function jit_nfloat_atan
; libraryLibJITImp
;
2631 function jit_nfloat_atan2
; libraryLibJITImp
;
2632 function jit_nfloat_ceil
; libraryLibJITImp
;
2633 function jit_nfloat_cos
; libraryLibJITImp
;
2634 function jit_nfloat_cosh
; libraryLibJITImp
;
2635 function jit_nfloat_exp
; libraryLibJITImp
;
2636 function jit_nfloat_floor
; libraryLibJITImp
;
2637 function jit_nfloat_log
; libraryLibJITImp
;
2638 function jit_nfloat_log10
; libraryLibJITImp
;
2639 function jit_nfloat_pow
; libraryLibJITImp
;
2640 function jit_nfloat_rint
; libraryLibJITImp
;
2641 function jit_nfloat_round
; libraryLibJITImp
;
2642 function jit_nfloat_sin
; libraryLibJITImp
;
2643 function jit_nfloat_sinh
; libraryLibJITImp
;
2644 function jit_nfloat_sqrt
; libraryLibJITImp
;
2645 function jit_nfloat_tan
; libraryLibJITImp
;
2646 function jit_nfloat_tanh
; libraryLibJITImp
;
2647 function jit_nfloat_trunc
; libraryLibJITImp
;
2648 function jit_nfloat_is_finite
; libraryLibJITImp
;
2649 function jit_nfloat_is_nan
; libraryLibJITImp
;
2650 function jit_nfloat_is_inf
; libraryLibJITImp
;
2651 function jit_nfloat_abs
; libraryLibJITImp
;
2652 function jit_nfloat_min
; libraryLibJITImp
;
2653 function jit_nfloat_max
; libraryLibJITImp
;
2654 function jit_nfloat_sign
; libraryLibJITImp
;
2655 function jit_int_to_sbyte
; libraryLibJITImp
;
2656 function jit_int_to_ubyte
; libraryLibJITImp
;
2657 function jit_int_to_short
; libraryLibJITImp
;
2658 function jit_int_to_ushort
; libraryLibJITImp
;
2659 function jit_int_to_int
; libraryLibJITImp
;
2660 function jit_int_to_uint
; libraryLibJITImp
;
2661 function jit_int_to_long
; libraryLibJITImp
;
2662 function jit_int_to_ulong
; libraryLibJITImp
;
2663 function jit_uint_to_int
; libraryLibJITImp
;
2664 function jit_uint_to_uint
; libraryLibJITImp
;
2665 function jit_uint_to_long
; libraryLibJITImp
;
2666 function jit_uint_to_ulong
; libraryLibJITImp
;
2667 function jit_long_to_int
; libraryLibJITImp
;
2668 function jit_long_to_uint
; libraryLibJITImp
;
2669 function jit_long_to_long
; libraryLibJITImp
;
2670 function jit_long_to_ulong
; libraryLibJITImp
;
2671 function jit_ulong_to_int
; libraryLibJITImp
;
2672 function jit_ulong_to_uint
; libraryLibJITImp
;
2673 function jit_ulong_to_long
; libraryLibJITImp
;
2674 function jit_ulong_to_ulong
; libraryLibJITImp
;
2675 function jit_int_to_sbyte_ovf
; libraryLibJITImp
;
2676 function jit_int_to_ubyte_ovf
; libraryLibJITImp
;
2677 function jit_int_to_short_ovf
; libraryLibJITImp
;
2678 function jit_int_to_ushort_ovf
; libraryLibJITImp
;
2679 function jit_int_to_int_ovf
; libraryLibJITImp
;
2680 function jit_int_to_uint_ovf
; libraryLibJITImp
;
2681 function jit_int_to_long_ovf
; libraryLibJITImp
;
2682 function jit_int_to_ulong_ovf
; libraryLibJITImp
;
2683 function jit_uint_to_int_ovf
; libraryLibJITImp
;
2684 function jit_uint_to_uint_ovf
; libraryLibJITImp
;
2685 function jit_uint_to_long_ovf
; libraryLibJITImp
;
2686 function jit_uint_to_ulong_ovf
; libraryLibJITImp
;
2687 function jit_long_to_int_ovf
; libraryLibJITImp
;
2688 function jit_long_to_uint_ovf
; libraryLibJITImp
;
2689 function jit_long_to_long_ovf
; libraryLibJITImp
;
2690 function jit_long_to_ulong_ovf
; libraryLibJITImp
;
2691 function jit_ulong_to_int_ovf
; libraryLibJITImp
;
2692 function jit_ulong_to_uint_ovf
; libraryLibJITImp
;
2693 function jit_ulong_to_long_ovf
; libraryLibJITImp
;
2694 function jit_ulong_to_ulong_ovf
; libraryLibJITImp
;
2695 function jit_float32_to_int
; libraryLibJITImp
;
2696 function jit_float32_to_uint
; libraryLibJITImp
;
2697 function jit_float32_to_long
; libraryLibJITImp
;
2698 function jit_float32_to_ulong
; libraryLibJITImp
;
2699 function jit_float32_to_int_ovf
; libraryLibJITImp
;
2700 function jit_float32_to_uint_ovf
; libraryLibJITImp
;
2701 function jit_float32_to_long_ovf
; libraryLibJITImp
;
2702 function jit_float32_to_ulong_ovf
; libraryLibJITImp
;
2703 function jit_float64_to_int
; libraryLibJITImp
;
2704 function jit_float64_to_uint
; libraryLibJITImp
;
2705 function jit_float64_to_long
; libraryLibJITImp
;
2706 function jit_float64_to_ulong
; libraryLibJITImp
;
2707 function jit_float64_to_int_ovf
; libraryLibJITImp
;
2708 function jit_float64_to_uint_ovf
; libraryLibJITImp
;
2709 function jit_float64_to_long_ovf
; libraryLibJITImp
;
2710 function jit_float64_to_ulong_ovf
; libraryLibJITImp
;
2711 function jit_nfloat_to_int
; libraryLibJITImp
;
2712 function jit_nfloat_to_uint
; libraryLibJITImp
;
2713 function jit_nfloat_to_long
; libraryLibJITImp
;
2714 function jit_nfloat_to_ulong
; libraryLibJITImp
;
2715 function jit_nfloat_to_int_ovf
; libraryLibJITImp
;
2716 function jit_nfloat_to_uint_ovf
; libraryLibJITImp
;
2717 function jit_nfloat_to_long_ovf
; libraryLibJITImp
;
2718 function jit_nfloat_to_ulong_ovf
; libraryLibJITImp
;
2719 function jit_int_to_float32
; libraryLibJITImp
;
2720 function jit_int_to_float64
; libraryLibJITImp
;
2721 function jit_int_to_nfloat
; libraryLibJITImp
;
2722 function jit_uint_to_float32
; libraryLibJITImp
;
2723 function jit_uint_to_float64
; libraryLibJITImp
;
2724 function jit_uint_to_nfloat
; libraryLibJITImp
;
2725 function jit_long_to_float32
; libraryLibJITImp
;
2726 function jit_long_to_float64
; libraryLibJITImp
;
2727 function jit_long_to_nfloat
; libraryLibJITImp
;
2728 function jit_ulong_to_float32
; libraryLibJITImp
;
2729 function jit_ulong_to_float64
; libraryLibJITImp
;
2730 function jit_ulong_to_nfloat
; libraryLibJITImp
;
2731 function jit_float32_to_float64
; libraryLibJITImp
;
2732 function jit_float32_to_nfloat
; libraryLibJITImp
;
2733 function jit_float64_to_float32
; libraryLibJITImp
;
2734 function jit_float64_to_nfloat
; libraryLibJITImp
;
2735 function jit_nfloat_to_float32
; libraryLibJITImp
;
2736 function jit_nfloat_to_float64
; libraryLibJITImp
;
2737 function jit_meta_set
; libraryLibJITImp
;
2738 function jit_meta_get
; libraryLibJITImp
;
2739 procedure jit_meta_free
; libraryLibJITImp
;
2740 procedure jit_meta_destroy
; libraryLibJITImp
;
2741 procedure jitom_destroy_model
; libraryLibJITImp
;
2742 function jitom_get_class_by_name
; libraryLibJITImp
;
2743 function jitom_class_get_name
; libraryLibJITImp
;
2744 function jitom_class_get_modifiers
; libraryLibJITImp
;
2745 function jitom_class_get_type
; libraryLibJITImp
;
2746 function jitom_class_get_value_type
; libraryLibJITImp
;
2747 function jitom_class_get_primary_super
; libraryLibJITImp
;
2748 function jitom_class_get_all_supers
; libraryLibJITImp
;
2749 function jitom_class_get_interfaces
; libraryLibJITImp
;
2750 function jitom_class_get_fields
; libraryLibJITImp
;
2751 function jitom_class_get_methods
; libraryLibJITImp
;
2752 function jitom_class_new
; libraryLibJITImp
;
2753 function jitom_class_new_value
; libraryLibJITImp
;
2754 function jitom_class_delete
; libraryLibJITImp
;
2755 function jitom_class_add_ref
; libraryLibJITImp
;
2756 function jitom_field_get_name
; libraryLibJITImp
;
2757 function jitom_field_get_type
; libraryLibJITImp
;
2758 function jitom_field_get_modifiers
; libraryLibJITImp
;
2759 function jitom_field_load
; libraryLibJITImp
;
2760 function jitom_field_load_address
; libraryLibJITImp
;
2761 function jitom_field_store
; libraryLibJITImp
;
2762 function jitom_method_get_name
; libraryLibJITImp
;
2763 function jitom_method_get_type
; libraryLibJITImp
;
2764 function jitom_method_get_modifiers
; libraryLibJITImp
;
2765 function jitom_method_invoke
; libraryLibJITImp
;
2766 function jitom_method_invoke_virtual
; libraryLibJITImp
;
2767 function jitom_type_tag_as_class
; libraryLibJITImp
;
2768 function jitom_type_tag_as_value
; libraryLibJITImp
;
2769 function jitom_type_is_class
; libraryLibJITImp
;
2770 function jitom_type_is_value
; libraryLibJITImp
;
2771 function jitom_type_get_model
; libraryLibJITImp
;
2772 function jitom_type_get_class
; libraryLibJITImp
;
2773 function jit_type_copy
; libraryLibJITImp
;
2774 procedure jit_type_free
; libraryLibJITImp
;
2775 function jit_type_create_struct
; libraryLibJITImp
;
2776 function jit_type_create_union
; libraryLibJITImp
;
2777 function jit_type_create_signature
; libraryLibJITImp
;
2778 function jit_type_create_pointer
; libraryLibJITImp
;
2779 function jit_type_create_tagged
; libraryLibJITImp
;
2780 function jit_type_set_names
; libraryLibJITImp
;
2781 procedure jit_type_set_size_and_alignment
; libraryLibJITImp
;
2782 procedure jit_type_set_offset
; libraryLibJITImp
;
2783 function jit_type_get_kind
; libraryLibJITImp
;
2784 function jit_type_get_size
; libraryLibJITImp
;
2785 function jit_type_get_alignment
; libraryLibJITImp
;
2786 function jit_type_num_fields
; libraryLibJITImp
;
2787 function jit_type_get_field
; libraryLibJITImp
;
2788 function jit_type_get_offset
; libraryLibJITImp
;
2789 function jit_type_get_name
; libraryLibJITImp
;
2790 function jit_type_find_name
; libraryLibJITImp
;
2791 function jit_type_num_params
; libraryLibJITImp
;
2792 function jit_type_get_return
; libraryLibJITImp
;
2793 function jit_type_get_param
; libraryLibJITImp
;
2794 function jit_type_get_abi
; libraryLibJITImp
;
2795 function jit_type_get_ref
; libraryLibJITImp
;
2796 function jit_type_get_tagged_type
; libraryLibJITImp
;
2797 procedure jit_type_set_tagged_type
; libraryLibJITImp
;
2798 function jit_type_get_tagged_kind
; libraryLibJITImp
;
2799 function jit_type_get_tagged_data
; libraryLibJITImp
;
2800 procedure jit_type_set_tagged_data
; libraryLibJITImp
;
2801 function jit_type_is_primitive
; libraryLibJITImp
;
2802 function jit_type_is_struct
; libraryLibJITImp
;
2803 function jit_type_is_union
; libraryLibJITImp
;
2804 function jit_type_is_signature
; libraryLibJITImp
;
2805 function jit_type_is_pointer
; libraryLibJITImp
;
2806 function jit_type_is_tagged
; libraryLibJITImp
;
2807 function jit_type_best_alignment
; libraryLibJITImp
;
2808 function jit_type_normalize
; libraryLibJITImp
;
2809 function jit_type_remove_tags
; libraryLibJITImp
;
2810 function jit_type_promote_int
; libraryLibJITImp
;
2811 function jit_type_return_via_pointer
; libraryLibJITImp
;
2812 function jit_type_has_tag
; libraryLibJITImp
;
2813 function jit_unwind_init
; libraryLibJITImp
;
2814 procedure jit_unwind_free
; libraryLibJITImp
;
2815 function jit_unwind_next
; libraryLibJITImp
;
2816 function jit_unwind_next_pc
; libraryLibJITImp
;
2817 function jit_unwind_get_pc
; libraryLibJITImp
;
2818 function jit_unwind_jump
; libraryLibJITImp
;
2819 function jit_unwind_get_function
; libraryLibJITImp
;
2820 function jit_unwind_get_offset
; libraryLibJITImp
;
2821 function jit_malloc
; libraryLibJITImp
;
2822 function jit_calloc
; libraryLibJITImp
;
2823 function jit_realloc
; libraryLibJITImp
;
2824 procedure jit_free
; libraryLibJITImp
;
2825 function jit_memset
; libraryLibJITImp
;
2826 function jit_memcpy
; libraryLibJITImp
;
2827 function jit_memmove
; libraryLibJITImp
;
2828 function jit_memcmp
; libraryLibJITImp
;
2829 function jit_memchr
; libraryLibJITImp
;
2830 function jit_strlen
; libraryLibJITImp
;
2831 function jit_strcpy
; libraryLibJITImp
;
2832 function jit_strcat
; libraryLibJITImp
;
2833 function jit_strncpy
; libraryLibJITImp
;
2834 function jit_strdup
; libraryLibJITImp
;
2835 function jit_strndup
; libraryLibJITImp
;
2836 function jit_strcmp
; libraryLibJITImp
;
2837 function jit_strncmp
; libraryLibJITImp
;
2838 function jit_stricmp
; libraryLibJITImp
;
2839 function jit_strnicmp
; libraryLibJITImp
;
2840 function jit_strchr
; libraryLibJITImp
;
2841 function jit_strrchr
; libraryLibJITImp
;
2843 function jit_sprintf
; libraryLibJITImp
;
2844 function jit_snprintf
; libraryLibJITImp
;
2846 function jit_value_create
; libraryLibJITImp
;
2847 function jit_value_create_nint_constant
; libraryLibJITImp
;
2848 function jit_value_create_long_constant
; libraryLibJITImp
;
2849 function jit_value_create_float32_constant
; libraryLibJITImp
;
2850 function jit_value_create_float64_constant
; libraryLibJITImp
;
2851 function jit_value_create_nfloat_constant
; libraryLibJITImp
;
2852 function jit_value_create_constant
; libraryLibJITImp
;
2853 function jit_value_get_param
; libraryLibJITImp
;
2854 function jit_value_get_struct_pointer
; libraryLibJITImp
;
2855 function jit_value_is_temporary
; libraryLibJITImp
;
2856 function jit_value_is_local
; libraryLibJITImp
;
2857 function jit_value_is_constant
; libraryLibJITImp
;
2858 function jit_value_is_parameter
; libraryLibJITImp
;
2859 procedure jit_value_ref
; libraryLibJITImp
;
2860 procedure jit_value_set_volatile
; libraryLibJITImp
;
2861 function jit_value_is_volatile
; libraryLibJITImp
;
2862 procedure jit_value_set_addressable
; libraryLibJITImp
;
2863 function jit_value_is_addressable
; libraryLibJITImp
;
2864 function jit_value_get_type
; libraryLibJITImp
;
2865 function jit_value_get_function
; libraryLibJITImp
;
2866 function jit_value_get_block
; libraryLibJITImp
;
2867 function jit_value_get_context
; libraryLibJITImp
;
2868 function jit_value_get_constant
; libraryLibJITImp
;
2869 function jit_value_get_nint_constant
; libraryLibJITImp
;
2870 function jit_value_get_long_constant
; libraryLibJITImp
;
2871 function jit_value_get_float32_constant
; libraryLibJITImp
;
2872 function jit_value_get_float64_constant
; libraryLibJITImp
;
2873 function jit_value_get_nfloat_constant
; libraryLibJITImp
;
2874 function jit_value_is_true
; libraryLibJITImp
;
2875 function jit_constant_convert
; libraryLibJITImp
;
2876 procedure jit_vmem_init
; libraryLibJITImp
;
2877 function jit_vmem_page_size
; libraryLibJITImp
;
2878 function jit_vmem_round_up
; libraryLibJITImp
;
2879 function jit_vmem_round_down
; libraryLibJITImp
;
2880 function jit_vmem_reserve
; libraryLibJITImp
;
2881 function jit_vmem_reserve_committed
; libraryLibJITImp
;
2882 function jit_vmem_release
; libraryLibJITImp
;
2883 function jit_vmem_commit
; libraryLibJITImp
;
2884 function jit_vmem_decommit
; libraryLibJITImp
;
2885 function jit_vmem_protect
; libraryLibJITImp
;
2886 function jit_default_memory_manager
; libraryLibJITImp
;
2887 procedure jit_context_set_memory_manager
; libraryLibJITImp
;
2888 procedure jit_dump_type
; libraryLibJITImp
;
2889 procedure jit_dump_value
; libraryLibJITImp
;
2890 procedure jit_dump_insn
; libraryLibJITImp
;
2891 procedure jit_dump_function
; libraryLibJITImp
;