Skip to content

Commit a658465

Browse files
committed
Export argument type checking functions
1 parent 5b017ba commit a658465

File tree

2 files changed

+24
-9
lines changed

2 files changed

+24
-9
lines changed

Zend/zend_execute.c

Lines changed: 21 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -567,7 +567,7 @@ static inline int make_real_object(zval *object)
567567
return 1;
568568
}
569569

570-
ZEND_API char * zend_verify_internal_arg_class_kind(const zend_internal_arg_info *cur_arg_info, char **class_name, zend_class_entry **pce)
570+
static char * zend_verify_internal_arg_class_kind(const zend_internal_arg_info *cur_arg_info, char **class_name, zend_class_entry **pce)
571571
{
572572
zend_string *key;
573573
ALLOCA_FLAG(use_heap);
@@ -589,7 +589,7 @@ static zend_always_inline zend_class_entry* zend_verify_arg_class_kind(const zen
589589
return zend_fetch_class(cur_arg_info->class_name, (ZEND_FETCH_CLASS_AUTO | ZEND_FETCH_CLASS_NO_AUTOLOAD));
590590
}
591591

592-
ZEND_API void zend_verify_arg_error(const zend_function *zf, uint32_t arg_num, const char *need_msg, const char *need_kind, const char *given_msg, const char *given_kind, zval *arg)
592+
static void zend_verify_arg_error(const zend_function *zf, uint32_t arg_num, const char *need_msg, const char *need_kind, const char *given_msg, const char *given_kind, zval *arg)
593593
{
594594
zend_execute_data *ptr = EG(current_execute_data)->prev_execute_data;
595595
const char *fname = ZSTR_VAL(zf->common.function_name);
@@ -869,7 +869,7 @@ static zend_always_inline int zend_verify_missing_arg(zend_execute_data *execute
869869
return 0;
870870
}
871871

872-
ZEND_API void zend_verify_return_error(const zend_function *zf, const char *need_msg, const char *need_kind, const char *returned_msg, const char *returned_kind)
872+
static void zend_verify_return_error(const zend_function *zf, const char *need_msg, const char *need_kind, const char *returned_msg, const char *returned_kind)
873873
{
874874
const char *fname = ZSTR_VAL(zf->common.function_name);
875875
const char *fsep;
@@ -893,7 +893,7 @@ ZEND_API void zend_verify_return_error(const zend_function *zf, const char *need
893893
}
894894
}
895895

896-
ZEND_API void zend_verify_internal_return_error(const zend_function *zf, const char *need_msg, const char *need_kind, const char *returned_msg, const char *returned_kind)
896+
static void zend_verify_internal_return_error(const zend_function *zf, const char *need_msg, const char *need_kind, const char *returned_msg, const char *returned_kind)
897897
{
898898
const char *fname = ZSTR_VAL(zf->common.function_name);
899899
const char *fsep;
@@ -2667,10 +2667,26 @@ ZEND_API user_opcode_handler_t zend_get_user_opcode_handler(zend_uchar opcode)
26672667
return zend_user_opcode_handlers[opcode];
26682668
}
26692669

2670-
ZEND_API zval *zend_get_zval_ptr(int op_type, const znode_op *node, const zend_execute_data *execute_data, zend_free_op *should_free, int type) {
2670+
ZEND_API zval *zend_get_zval_ptr(int op_type, const znode_op *node, const zend_execute_data *execute_data, zend_free_op *should_free, int type)
2671+
{
26712672
return get_zval_ptr(op_type, *node, execute_data, should_free, type);
26722673
}
26732674

2675+
ZEND_API ZEND_FASTCALL void zend_check_internal_arg_type(zend_function *zf, uint32_t arg_num, zval *arg)
2676+
{
2677+
zend_verify_internal_arg_type(zf, arg_num, arg);
2678+
}
2679+
2680+
ZEND_API ZEND_FASTCALL int zend_check_arg_type(zend_function *zf, uint32_t arg_num, zval *arg, zval *default_value, void **cache_slot)
2681+
{
2682+
return zend_verify_arg_type(zf, arg_num, arg, default_value, cache_slot);
2683+
}
2684+
2685+
ZEND_API ZEND_FASTCALL int zend_check_missing_arg(zend_execute_data *execute_data, uint32_t arg_num, void **cache_slot)
2686+
{
2687+
return zend_verify_missing_arg(execute_data, arg_num, cache_slot);
2688+
}
2689+
26742690
/*
26752691
* Local variables:
26762692
* tab-width: 4

Zend/zend_execute.h

Lines changed: 3 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -49,10 +49,9 @@ ZEND_API int zend_eval_stringl(char *str, size_t str_len, zval *retval_ptr, char
4949
ZEND_API int zend_eval_string_ex(char *str, zval *retval_ptr, char *string_name, int handle_exceptions);
5050
ZEND_API int zend_eval_stringl_ex(char *str, size_t str_len, zval *retval_ptr, char *string_name, int handle_exceptions);
5151

52-
ZEND_API char * zend_verify_internal_arg_class_kind(const zend_internal_arg_info *cur_arg_info, char **class_name, zend_class_entry **pce);
53-
ZEND_API void zend_verify_arg_error(const zend_function *zf, uint32_t arg_num, const char *need_msg, const char *need_kind, const char *given_msg, const char *given_kind, zval *arg);
54-
ZEND_API void zend_verify_return_error(const zend_function *zf, const char *need_msg, const char *need_kind, const char *returned_msg, const char *returned_kind);
55-
ZEND_API void zend_verify_internal_return_error(const zend_function *zf, const char *need_msg, const char *need_kind, const char *returned_msg, const char *returned_kind);
52+
ZEND_API ZEND_FASTCALL void zend_check_internal_arg_type(zend_function *zf, uint32_t arg_num, zval *arg);
53+
ZEND_API ZEND_FASTCALL int zend_check_arg_type(zend_function *zf, uint32_t arg_num, zval *arg, zval *default_value, void **cache_slot);
54+
ZEND_API ZEND_FASTCALL int zend_check_missing_arg(zend_execute_data *execute_data, uint32_t arg_num, void **cache_slot);
5655

5756
static zend_always_inline zval* zend_assign_to_variable(zval *variable_ptr, zval *value, zend_uchar value_type)
5857
{

0 commit comments

Comments
 (0)