Alien-LibJIT

 view release on metacpan or  search on metacpan

libjit/include/jit/jit-plus.h  view on Meta::CPAN

	jit_value new_constant(jit_float32 value, jit_type_t type=0);
	jit_value new_constant(jit_float64 value, jit_type_t type=0);
#ifndef JIT_NFLOAT_IS_DOUBLE
	jit_value new_constant(jit_nfloat value, jit_type_t type=0);
#endif
	jit_value new_constant(void *value, jit_type_t type=0);
	jit_value new_constant(const jit_constant_t& value);
	jit_value get_param(unsigned int param);
	jit_value get_struct_pointer();

	jit_label new_label();

	void insn_label(jit_label& label);
	void insn_new_block();
	jit_value insn_load(const jit_value& value);
	jit_value insn_dup(const jit_value& value);
	jit_value insn_load_small(const jit_value& value);
	void store(const jit_value& dest, const jit_value& value);
	jit_value insn_load_relative
		(const jit_value& value, jit_nint offset, jit_type_t type);
	void insn_store_relative
		(const jit_value& dest, jit_nint offset, const jit_value& value);
	jit_value insn_add_relative(const jit_value& value, jit_nint offset);
	jit_value insn_load_elem
		(const jit_value& base_addr, const jit_value& index,
		 jit_type_t elem_type);
	jit_value insn_load_elem_address
		(const jit_value& base_addr, const jit_value& index,
		 jit_type_t elem_type);
	void insn_store_elem
		(const jit_value& base_addr, const jit_value& index,
		 const jit_value& value);
	void insn_check_null(const jit_value& value);
	jit_value insn_add(const jit_value& value1, const jit_value& value2);
	jit_value insn_add_ovf(const jit_value& value1, const jit_value& value2);
	jit_value insn_sub(const jit_value& value1, const jit_value& value2);
	jit_value insn_sub_ovf(const jit_value& value1, const jit_value& value2);
	jit_value insn_mul(const jit_value& value1, const jit_value& value2);
	jit_value insn_mul_ovf(const jit_value& value1, const jit_value& value2);
	jit_value insn_div(const jit_value& value1, const jit_value& value2);
	jit_value insn_rem(const jit_value& value1, const jit_value& value2);
	jit_value insn_rem_ieee(const jit_value& value1, const jit_value& value2);
	jit_value insn_neg(const jit_value& value1);
	jit_value insn_and(const jit_value& value1, const jit_value& value2);
	jit_value insn_or(const jit_value& value1, const jit_value& value2);
	jit_value insn_xor(const jit_value& value1, const jit_value& value2);
	jit_value insn_not(const jit_value& value1);
	jit_value insn_shl(const jit_value& value1, const jit_value& value2);
	jit_value insn_shr(const jit_value& value1, const jit_value& value2);
	jit_value insn_ushr(const jit_value& value1, const jit_value& value2);
	jit_value insn_sshr(const jit_value& value1, const jit_value& value2);
	jit_value insn_eq(const jit_value& value1, const jit_value& value2);
	jit_value insn_ne(const jit_value& value1, const jit_value& value2);
	jit_value insn_lt(const jit_value& value1, const jit_value& value2);
	jit_value insn_le(const jit_value& value1, const jit_value& value2);
	jit_value insn_gt(const jit_value& value1, const jit_value& value2);
	jit_value insn_ge(const jit_value& value1, const jit_value& value2);
	jit_value insn_cmpl(const jit_value& value1, const jit_value& value2);
	jit_value insn_cmpg(const jit_value& value1, const jit_value& value2);
	jit_value insn_to_bool(const jit_value& value1);
	jit_value insn_to_not_bool(const jit_value& value1);
	jit_value insn_acos(const jit_value& value1);
	jit_value insn_asin(const jit_value& value1);
	jit_value insn_atan(const jit_value& value1);
	jit_value insn_atan2(const jit_value& value1, const jit_value& value2);
	jit_value insn_ceil(const jit_value& value1);
	jit_value insn_cos(const jit_value& value1);
	jit_value insn_cosh(const jit_value& value1);
	jit_value insn_exp(const jit_value& value1);
	jit_value insn_floor(const jit_value& value1);
	jit_value insn_log(const jit_value& value1);
	jit_value insn_log10(const jit_value& value1);
	jit_value insn_pow(const jit_value& value1, const jit_value& value2);
	jit_value insn_rint(const jit_value& value1);
	jit_value insn_round(const jit_value& value1);
	jit_value insn_sin(const jit_value& value1);
	jit_value insn_sinh(const jit_value& value1);
	jit_value insn_sqrt(const jit_value& value1);
	jit_value insn_tan(const jit_value& value1);
	jit_value insn_tanh(const jit_value& value1);
	jit_value insn_trunc(const jit_value& value1);
	jit_value insn_is_nan(const jit_value& value1);
	jit_value insn_is_finite(const jit_value& value1);
	jit_value insn_is_inf(const jit_value& value1);
	jit_value insn_abs(const jit_value& value1);
	jit_value insn_min(const jit_value& value1, const jit_value& value2);
	jit_value insn_max(const jit_value& value1, const jit_value& value2);
	jit_value insn_sign(const jit_value& value1);
	void insn_branch(jit_label& label);
	void insn_branch_if(const jit_value& value, jit_label& label);
	void insn_branch_if_not(const jit_value& value, jit_label& label);
	void insn_jump_table(const jit_value& value, jit_jump_table& jump_table);
	jit_value insn_address_of(const jit_value& value1);
	jit_value insn_address_of_label(jit_label& label);
	jit_value insn_convert
		(const jit_value& value, jit_type_t type, int overflow_check=0);
	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=0);
	jit_value insn_call_indirect
		(const jit_value& value, jit_type_t signature,
	 	 jit_value_t *args, unsigned int num_args, int flags=0);
	jit_value insn_call_indirect_vtable
		(const jit_value& value, jit_type_t signature,
	 	 jit_value_t *args, unsigned int num_args, int flags=0);
	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=0);
	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);
	void insn_incoming_reg(const jit_value& value, int reg);
	void insn_incoming_frame_posn(const jit_value& value, jit_nint posn);
	void insn_outgoing_reg(const jit_value& value, int reg);
	void insn_outgoing_frame_posn(const jit_value& value, jit_nint posn);
	void insn_return_reg(const jit_value& value, int reg);
	void insn_setup_for_nested(int nested_level, int reg);
	void insn_flush_struct(const jit_value& value);
	jit_value insn_import(jit_value value);
	void insn_push(const jit_value& value);
	void insn_push_ptr(const jit_value& value, jit_type_t type);
	void insn_set_param(const jit_value& value, jit_nint offset);
	void insn_set_param_ptr
		(const jit_value& value, jit_type_t type, jit_nint offset);
	void insn_push_return_area_ptr();
	void insn_return(const jit_value& value);
	void insn_return();
	void insn_return_ptr(const jit_value& value, jit_type_t type);
	void insn_default_return();
	void insn_throw(const jit_value& value);
	jit_value insn_get_call_stack();
	jit_value insn_thrown_exception();
	void insn_uses_catcher();
	jit_value insn_start_catcher();
	void insn_branch_if_pc_not_in_range
		(const jit_label& start_label, const jit_label& end_label,
		 jit_label& label);
	void insn_rethrow_unhandled();
	void insn_start_finally(jit_label& label);
	void insn_return_from_finally();
	void insn_call_finally(jit_label& label);
	jit_value insn_start_filter(jit_label& label, jit_type_t type);
	void insn_return_from_filter(const jit_value& value);
	jit_value insn_call_filter
		(jit_label& label, const jit_value& value, jit_type_t type);
	void insn_memcpy
		(const jit_value& dest, const jit_value& src, const jit_value& size);
	void insn_memmove
		(const jit_value& dest, const jit_value& src, const jit_value& size);
	void insn_memset
		(const jit_value& dest, const jit_value& value, const jit_value& size);
	jit_value insn_alloca(const jit_value& size);
	void insn_move_blocks_to_end
		(const jit_label& from_label, const jit_label& to_label);
	void insn_move_blocks_to_start
		(const jit_label& from_label, const jit_label& to_label);
	void insn_mark_offset(jit_int offset);
	void insn_mark_breakpoint(jit_nint data1, jit_nint data2);

private:
	jit_function_t func;
	jit_context_t context;

	void register_on_demand();
	static int on_demand_compiler(jit_function_t func);
	static void free_mapping(void *data);
};

#endif /* __cplusplus */

#endif /* _JIT_PLUS_H */



( run in 0.594 second using v1.01-cache-2.11-cpan-63c85eba8c4 )