Add missing functions to the C++ API. - libjit.git - libjit

index : libjit.git
libjit
summary refs log tree commit diff
path: root/jitplus/jit-plus-function.cpp
diff options
context:
space:
mode:
authorRhys Weatherley <rweather@southern-storm.com.au>2004年05月24日 06:19:53 +0000
committerRhys Weatherley <rweather@southern-storm.com.au>2004年05月24日 06:19:53 +0000
commit8f3bc2a1110fc6e7df9dc7d0f76b2fc34d6e10c8 (patch)
treedf12bc30cecf0a9f9a288dc137c97ef13468f6a7 /jitplus/jit-plus-function.cpp
parentbe08d549bfdb577398e19fe124768f9021bd5e4c (diff)
downloadlibjit-8f3bc2a1110fc6e7df9dc7d0f76b2fc34d6e10c8.tar.gz
Add missing functions to the C++ API.
Diffstat (limited to 'jitplus/jit-plus-function.cpp')
-rw-r--r--jitplus/jit-plus-function.cpp 192
1 files changed, 189 insertions, 3 deletions
diff --git a/jitplus/jit-plus-function.cpp b/jitplus/jit-plus-function.cpp
index 2a574c5..ddd47a3 100644
--- a/jitplus/jit-plus-function.cpp
+++ b/jitplus/jit-plus-function.cpp
@@ -628,23 +628,45 @@ jit_value jit_function::get_struct_pointer()
* @deftypemethodx jit_function void insn_branch_if ({const jit_value&} value, {jit_label&} label)
* @deftypemethodx jit_function void insn_branch_if_not ({const jit_value&} value, {jit_label&} label)
* @deftypemethodx jit_function jit_value insn_address_of ({const jit_value&} value1)
+ * @deftypemethodx jit_function jit_value insn_address_of_label ({jit_label&} label)
* @deftypemethodx jit_function jit_value insn_convert ({const jit_value&} value, jit_type_t type, int overflow_check)
* @deftypemethodx jit_function jit_value insn_call ({const char *} name, jit_function_t jit_func, jit_type_t signature, {jit_value_t *} args, {unsigned int} num_args, int flags)
* @deftypemethodx jit_function jit_value insn_call_indirect ({const jit_value&} value, jit_type_t signature, {jit_value_t *} args, {unsigned int} num_args, int flags)
* @deftypemethodx jit_function jit_value insn_call_indirect_vtable ({const jit_value&} value, jit_type_t signature, {jit_value_t *} args, {unsigned int} num_args, int flags)
* @deftypemethodx jit_function jit_value insn_call_native ({const char *} name, {void *} native_func, jit_type_t signature, {jit_value_t *} args, {unsigned int} num_args, int flags)
* @deftypemethodx jit_function jit_value insn_call_intrinsic ({const char *} name, {void *} intrinsic_func, {const jit_intrinsic_descr_t&} descriptor, {const jit_value&} arg1, {const jit_value&} arg2)
+ * @deftypemethodx jit_function void insn_incoming_reg ({const jit_value&} value, int reg)
+ * @deftypemethodx jit_function void insn_incoming_frame_posn ({const jit_value&} value, jit_nint posn)
+ * @deftypemethodx jit_function void insn_outgoing_reg ({const jit_value&} value, int reg)
+ * @deftypemethodx jit_function void insn_return_reg ({const jit_value&} value, int reg)
+ * @deftypemethodx jit_function void insn_setup_for_nested (int nested_level, int reg)
+ * @deftypemethodx jit_function void insn_flush_struct ({const jit_value&} value)
* @deftypemethodx jit_function jit_value insn_import (jit_value value)
+ * @deftypemethodx jit_function void insn_push ({const jit_value&} value)
+ * @deftypemethodx jit_function void insn_push_ptr ({const jit_value&} value, jit_type_t type)
* @deftypemethodx jit_function void insn_return ({const jit_value&} value)
* @deftypemethodx jit_function void insn_return ()
* @deftypemethodx jit_function void insn_return_ptr ({const jit_value&} value, jit_type_t type)
* @deftypemethodx jit_function void insn_default_return ()
* @deftypemethodx jit_function void insn_throw ({const jit_value&} value)
* @deftypemethodx jit_function jit_value insn_get_call_stack ()
+ * @deftypemethodx jit_function jit_value insn_thrown_exception ()
+ * @deftypemethodx jit_function void insn_uses_catcher ()
+ * @deftypemethodx jit_function jit_value insn_start_catcher ()
+ * @deftypemethodx jit_function void insn_branch_if_pc_not_in_range ({const jit_label&} start_label, {const jit_label&} end_label, {jit_label&} label)
+ * @deftypemethodx jit_function void insn_rethrow_unhandled ()
+ * @deftypemethodx jit_function void insn_start_finally ({jit_label&} label)
+ * @deftypemethodx jit_function void insn_return_from_finally ()
+ * @deftypemethodx jit_function void insn_call_finally ({jit_label&} label)
+ * @deftypemethodx jit_function jit_value insn_start_filter ({jit_label&} label, jit_type_t type)
+ * @deftypemethodx jit_function void insn_return_from_filter ({const jit_value&} value)
+ * @deftypemethodx jit_function jit_value insn_call_filter ({jit_label&} label, {const jit_value&} value, jit_type_t type)
* @deftypemethodx jit_function void insn_memcpy ({const jit_value&} dest, {const jit_value&} src, {const jit_value&} size)
- * @deftypemethodx void insn_memmove ({const jit_value&} dest, {const jit_value&} src, {const jit_value&} size)
- * @deftypemethodx void jit_insn_memset ({const jit_value&} dest, {const jit_value&} value, {const jit_value&} size)
- * @deftypemethodx jit_value jit_insn_alloca ({const jit_value&} size)
+ * @deftypemethodx jit_function void insn_memmove ({const jit_value&} dest, {const jit_value&} src, {const jit_value&} size)
+ * @deftypemethodx jit_function void jit_insn_memset ({const jit_value&} dest, {const jit_value&} value, {const jit_value&} size)
+ * @deftypemethodx jit_function jit_value jit_insn_alloca ({const jit_value&} size)
+ * @deftypemethodx jit_function void insn_move_blocks_to_end ({const jit_label&} from_label, {const jit_label&} to_label)
+ * @deftypemethodx jit_function void insn_move_blocks_to_start ({const jit_label&} from_label, {const jit_label&} to_label)
* Create instructions of various kinds. @xref{Instructions}, for more
* information on the individual instructions and their arguments.
* @end deftypemethod
@@ -1063,6 +1085,11 @@ jit_value jit_function::insn_address_of(const jit_value& value1)
value_wrap(jit_insn_address_of(func, value1.raw()));
}
+jit_value jit_function::insn_address_of_label(jit_label& label)
+{
+ value_wrap(jit_insn_address_of_label(func, label.rawp()));
+}
+
jit_value jit_function::insn_convert
(const jit_value& value, jit_type_t type, int overflow_check)
{
@@ -1111,11 +1138,72 @@ jit_value jit_function::insn_call_intrinsic
(func, name, intrinsic_func, &descriptor, arg1.raw(), arg2.raw()));
}
+void jit_function::insn_incoming_reg(const jit_value& value, int reg)
+{
+ if(!jit_insn_incoming_reg(func, value.raw(), reg))
+ {
+ out_of_memory();
+ }
+}
+
+void jit_function::insn_incoming_frame_posn
+ (const jit_value& value, jit_nint posn)
+{
+ if(!jit_insn_incoming_frame_posn(func, value.raw(), posn))
+ {
+ out_of_memory();
+ }
+}
+
+void jit_function::insn_outgoing_reg(const jit_value& value, int reg)
+{
+ if(!jit_insn_outgoing_reg(func, value.raw(), reg))
+ {
+ out_of_memory();
+ }
+}
+
+void jit_function::insn_return_reg(const jit_value& value, int reg)
+{
+ if(!jit_insn_return_reg(func, value.raw(), reg))
+ {
+ out_of_memory();
+ }
+}
+
+void jit_function::insn_setup_for_nested(int nested_level, int reg)
+{
+}
+
+void jit_function::insn_flush_struct(const jit_value& value)
+{
+ if(!jit_insn_flush_struct(func, value.raw()))
+ {
+ out_of_memory();
+ }
+}
+
jit_value jit_function::insn_import(jit_value value)
{
value_wrap(jit_insn_import(func, value.raw()));
}
+void jit_function::insn_push(const jit_value& value)
+{
+ if(!jit_insn_push(func, value.raw()))
+ {
+ out_of_memory();
+ }
+}
+
+void jit_function::insn_push_ptr(const jit_value& value, jit_type_t type)
+{
+ if(!jit_insn_push_ptr(func, value.raw(), type))
+ {
+ out_of_memory();
+ }
+}
+
void jit_function::insn_return(const jit_value& value)
{
if(!jit_insn_return(func, value.raw()))
@@ -1161,6 +1249,86 @@ jit_value jit_function::insn_get_call_stack()
value_wrap(jit_insn_get_call_stack(func));
}
+jit_value jit_function::insn_thrown_exception()
+{
+ value_wrap(jit_insn_thrown_exception(func));
+}
+
+void jit_function::insn_uses_catcher()
+{
+ if(!jit_insn_uses_catcher(func))
+ {
+ out_of_memory();
+ }
+}
+
+jit_value jit_function::insn_start_catcher()
+{
+ value_wrap(jit_insn_start_catcher(func));
+}
+
+void jit_function::insn_branch_if_pc_not_in_range
+ (const jit_label& start_label, const jit_label& end_label,
+ jit_label& label)
+{
+ if(!jit_insn_branch_if_pc_not_in_range
+ (func, start_label.raw(), end_label.raw(), label.rawp()))
+ {
+ out_of_memory();
+ }
+}
+
+void jit_function::insn_rethrow_unhandled()
+{
+ if(!jit_insn_rethrow_unhandled(func))
+ {
+ out_of_memory();
+ }
+}
+
+void jit_function::insn_start_finally(jit_label& label)
+{
+ if(!jit_insn_start_finally(func, label.rawp()))
+ {
+ out_of_memory();
+ }
+}
+
+void jit_function::insn_return_from_finally()
+{
+ if(!jit_insn_return_from_finally(func))
+ {
+ out_of_memory();
+ }
+}
+
+void jit_function::insn_call_finally(jit_label& label)
+{
+ if(!jit_insn_call_finally(func, label.rawp()))
+ {
+ out_of_memory();
+ }
+}
+
+jit_value jit_function::insn_start_filter(jit_label& label, jit_type_t type)
+{
+ value_wrap(jit_insn_start_filter(func, label.rawp(), type));
+}
+
+void jit_function::insn_return_from_filter(const jit_value& value)
+{
+ if(!jit_insn_return_from_filter(func, value.raw()))
+ {
+ out_of_memory();
+ }
+}
+
+jit_value jit_function::insn_call_filter
+ (jit_label& label, const jit_value& value, jit_type_t type)
+{
+ value_wrap(jit_insn_call_filter(func, label.rawp(), value.raw(), type));
+}
+
void jit_function::insn_memcpy
(const jit_value& dest, const jit_value& src, const jit_value& size)
{
@@ -1193,6 +1361,24 @@ jit_value jit_function::insn_alloca(const jit_value& size)
value_wrap(jit_insn_alloca(func, size.raw()));
}
+void jit_function::insn_move_blocks_to_end
+ (const jit_label& from_label, const jit_label& to_label)
+{
+ if(!jit_insn_move_blocks_to_end(func, from_label.raw(), to_label.raw()))
+ {
+ out_of_memory();
+ }
+}
+
+void jit_function::insn_move_blocks_to_start
+ (const jit_label& from_label, const jit_label& to_label)
+{
+ if(!jit_insn_move_blocks_to_start(func, from_label.raw(), to_label.raw()))
+ {
+ out_of_memory();
+ }
+}
+
void jit_function::register_on_demand()
{
jit_function_set_on_demand_compiler(func, on_demand_compiler);
generated by cgit v1.2.3 (git 2.39.1) at 2025年09月10日 19:49:37 +0000

AltStyle によって変換されたページ (->オリジナル) /