1
0
mirror of https://github.com/php/php-src.git synced 2026-03-30 04:02:19 +02:00

Prune opcache func info

Remove opcache func info for some functions which have arg info
with same or better accuracy (this is incomplete, we can drop more).
This commit is contained in:
Nikita Popov
2019-10-02 10:54:47 +02:00
parent 1ca4ab09a5
commit a653240bd7

View File

@@ -89,40 +89,18 @@ static uint32_t zend_range_info(const zend_call_info *call_info, const zend_ssa
static const func_info_t func_infos[] = {
/* zend */
F1("zend_version", MAY_BE_STRING),
F0("gc_collect_cycles", MAY_BE_LONG),
F0("gc_enabled", MAY_BE_FALSE | MAY_BE_TRUE),
F0("gc_enable", MAY_BE_NULL),
F0("gc_disable", MAY_BE_NULL),
F0("func_num_args", MAY_BE_LONG),
FN("func_get_arg", UNKNOWN_INFO),
F1("func_get_args", MAY_BE_FALSE | MAY_BE_ARRAY | MAY_BE_ARRAY_KEY_LONG | MAY_BE_ARRAY_OF_ANY),
F0("strlen", MAY_BE_LONG),
F0("strcmp", MAY_BE_LONG),
F0("strncmp", MAY_BE_FALSE | MAY_BE_LONG),
F0("strcasecmp", MAY_BE_LONG),
F0("strncasecmp", MAY_BE_FALSE | MAY_BE_LONG),
F0("error_reporting", MAY_BE_LONG),
F0("define", MAY_BE_FALSE | MAY_BE_TRUE | MAY_BE_NULL), // TODO: inline
F0("defined", MAY_BE_FALSE | MAY_BE_TRUE), // TODO: inline
FN("get_class", MAY_BE_FALSE | MAY_BE_STRING),
FN("get_called_class", MAY_BE_FALSE | MAY_BE_STRING),
FN("get_parent_class", MAY_BE_FALSE | MAY_BE_STRING),
F0("is_subclass_of", MAY_BE_FALSE | MAY_BE_TRUE), // TODO: inline
F0("is_a", MAY_BE_FALSE | MAY_BE_TRUE), // TODO: inline
F1("get_class_vars", MAY_BE_FALSE | MAY_BE_ARRAY | MAY_BE_ARRAY_KEY_STRING | MAY_BE_ARRAY_OF_ANY | MAY_BE_ARRAY_OF_REF),
FN("get_object_vars", MAY_BE_ARRAY | MAY_BE_ARRAY_KEY_ANY | MAY_BE_ARRAY_OF_ANY | MAY_BE_ARRAY_OF_REF),
FN("get_mangled_object_vars", MAY_BE_ARRAY | MAY_BE_ARRAY_KEY_ANY | MAY_BE_ARRAY_OF_ANY | MAY_BE_ARRAY_OF_REF),
F1("get_class_methods", MAY_BE_NULL | MAY_BE_FALSE | MAY_BE_ARRAY | MAY_BE_ARRAY_KEY_LONG | MAY_BE_ARRAY_OF_STRING),
F0("method_exists", MAY_BE_FALSE | MAY_BE_TRUE),
F0("property_exists", MAY_BE_NULL | MAY_BE_FALSE | MAY_BE_TRUE),
F0("class_exists", MAY_BE_FALSE | MAY_BE_TRUE),
F0("interface_exists", MAY_BE_FALSE | MAY_BE_TRUE),
F0("trait_exists", MAY_BE_FALSE | MAY_BE_TRUE),
F0("function_exists", MAY_BE_FALSE | MAY_BE_TRUE), // TODO: inline
F0("class_alias", MAY_BE_FALSE | MAY_BE_TRUE),
F1("get_included_files", MAY_BE_ARRAY | MAY_BE_ARRAY_KEY_LONG | MAY_BE_ARRAY_OF_STRING),
F0("trigger_error", MAY_BE_FALSE | MAY_BE_TRUE),
F0("user_error", MAY_BE_FALSE | MAY_BE_TRUE),
FN("set_error_handler", MAY_BE_NULL | MAY_BE_STRING | MAY_BE_ARRAY | MAY_BE_ARRAY_KEY_LONG | MAY_BE_ARRAY_OF_STRING | MAY_BE_ARRAY_OF_OBJECT | MAY_BE_OBJECT),
F0("restore_error_handler", MAY_BE_TRUE),
F0("restore_exception_handler", MAY_BE_TRUE),
@@ -133,10 +111,8 @@ static const func_info_t func_infos[] = {
F1("get_defined_vars", MAY_BE_ARRAY | MAY_BE_ARRAY_KEY_STRING | MAY_BE_ARRAY_OF_ANY | MAY_BE_ARRAY_OF_REF),
F1("get_resource_type", MAY_BE_STRING),
F1("get_defined_constants", MAY_BE_ARRAY | MAY_BE_ARRAY_KEY_STRING | MAY_BE_ARRAY_OF_NULL | MAY_BE_ARRAY_OF_FALSE | MAY_BE_ARRAY_OF_TRUE | MAY_BE_ARRAY_OF_LONG | MAY_BE_ARRAY_OF_DOUBLE | MAY_BE_ARRAY_OF_STRING | MAY_BE_ARRAY_OF_RESOURCE | MAY_BE_ARRAY_OF_ARRAY),
F0("debug_print_backtrace", MAY_BE_NULL),
F1("debug_backtrace", MAY_BE_ARRAY | MAY_BE_ARRAY_KEY_LONG | MAY_BE_ARRAY_OF_ARRAY),
F1("get_loaded_extensions", MAY_BE_ARRAY | MAY_BE_ARRAY_KEY_LONG | MAY_BE_ARRAY_OF_STRING),
F0("extension_loaded", MAY_BE_FALSE | MAY_BE_TRUE),
F1("get_extension_funcs", MAY_BE_FALSE | MAY_BE_ARRAY | MAY_BE_ARRAY_KEY_LONG | MAY_BE_ARRAY_OF_STRING),
/* ext/standard */
@@ -163,7 +139,6 @@ static const func_info_t func_infos[] = {
F1("sha1_file", MAY_BE_FALSE | MAY_BE_STRING),
F1("md5", MAY_BE_STRING),
F1("md5_file", MAY_BE_FALSE | MAY_BE_STRING),
F0("crc32", MAY_BE_LONG),
F1("iptcparse", MAY_BE_FALSE | MAY_BE_ARRAY | MAY_BE_ARRAY_KEY_STRING | MAY_BE_ARRAY_OF_ARRAY),
F1("iptcembed", MAY_BE_FALSE | MAY_BE_STRING),
F1("getimagesize", MAY_BE_FALSE | MAY_BE_ARRAY | MAY_BE_ARRAY_KEY_ANY | MAY_BE_ARRAY_OF_LONG | MAY_BE_ARRAY_OF_STRING),
@@ -177,8 +152,6 @@ static const func_info_t func_infos[] = {
F1("php_uname", MAY_BE_STRING),
F1("php_ini_scanned_files", MAY_BE_FALSE | MAY_BE_STRING),
F1("php_ini_loaded_file", MAY_BE_FALSE | MAY_BE_STRING),
F0("strnatcmp", MAY_BE_LONG),
F0("strnatcasecmp", MAY_BE_LONG),
F0("substr_count", MAY_BE_FALSE | MAY_BE_LONG),
F0("strspn", MAY_BE_FALSE | MAY_BE_LONG),
F0("strcspn", MAY_BE_FALSE | MAY_BE_LONG),
@@ -206,7 +179,6 @@ static const func_info_t func_infos[] = {
F1("str_split", MAY_BE_FALSE | MAY_BE_ARRAY | MAY_BE_ARRAY_KEY_LONG | MAY_BE_ARRAY_OF_STRING),
F1("strpbrk", MAY_BE_FALSE | MAY_BE_STRING),
F0("substr_compare", MAY_BE_FALSE | MAY_BE_LONG),
F0("strcoll", MAY_BE_LONG),
#ifdef HAVE_STRFMON
F1("money_format", MAY_BE_FALSE | MAY_BE_STRING),
#endif
@@ -229,7 +201,6 @@ static const func_info_t func_infos[] = {
FN("trim", MAY_BE_STRING),
FN("ltrim", MAY_BE_STRING),
F1("strip_tags", MAY_BE_STRING),
F0("similar_text", MAY_BE_LONG),
F1("explode", MAY_BE_FALSE | MAY_BE_ARRAY | MAY_BE_ARRAY_KEY_LONG | MAY_BE_ARRAY_OF_STRING),
FN("implode", MAY_BE_STRING),
FN("join", MAY_BE_STRING),
@@ -241,8 +212,6 @@ static const func_info_t func_infos[] = {
F1("soundex", MAY_BE_FALSE | MAY_BE_STRING),
F0("levenshtein", MAY_BE_LONG),
F1("chr", MAY_BE_STRING),
F0("ord", MAY_BE_LONG),
F0("parse_str", MAY_BE_NULL),
F1("str_getcsv", MAY_BE_NULL | MAY_BE_ARRAY | MAY_BE_ARRAY | MAY_BE_ARRAY_KEY_LONG | MAY_BE_ARRAY_OF_NULL | MAY_BE_ARRAY_OF_STRING),
F1("str_pad", MAY_BE_NULL | MAY_BE_STRING),
F1("strchr", MAY_BE_FALSE | MAY_BE_STRING),
@@ -306,7 +275,6 @@ static const func_info_t func_infos[] = {
F0("getmygid", MAY_BE_FALSE | MAY_BE_LONG),
F0("getmypid", MAY_BE_FALSE | MAY_BE_LONG),
F0("getmyinode", MAY_BE_FALSE | MAY_BE_LONG),
F0("getlastmod", MAY_BE_FALSE | MAY_BE_LONG),
F1("base64_decode", MAY_BE_FALSE | MAY_BE_STRING),
F1("base64_encode", MAY_BE_STRING),
F1("password_hash", MAY_BE_NULL | MAY_BE_STRING),
@@ -319,25 +287,8 @@ static const func_info_t func_infos[] = {
F0("ceil", MAY_BE_DOUBLE),
F0("floor", MAY_BE_DOUBLE),
F0("round", MAY_BE_FALSE | MAY_BE_DOUBLE),
F0("sin", MAY_BE_DOUBLE),
F0("cos", MAY_BE_DOUBLE),
F0("tan", MAY_BE_DOUBLE),
F0("asin", MAY_BE_DOUBLE),
F0("acos", MAY_BE_DOUBLE),
F0("atan", MAY_BE_DOUBLE),
F0("atanh", MAY_BE_DOUBLE),
F0("atan2", MAY_BE_DOUBLE),
F0("sinh", MAY_BE_DOUBLE),
F0("cosh", MAY_BE_DOUBLE),
F0("tanh", MAY_BE_DOUBLE),
F0("asinh", MAY_BE_DOUBLE),
F0("acosh", MAY_BE_DOUBLE),
F0("expm1", MAY_BE_DOUBLE),
F0("log1p", MAY_BE_DOUBLE),
F0("pi", MAY_BE_DOUBLE),
F0("is_finite", MAY_BE_FALSE | MAY_BE_TRUE),
F0("is_nan", MAY_BE_FALSE | MAY_BE_TRUE),
F0("is_infinite", MAY_BE_FALSE | MAY_BE_TRUE),
F1("pow", MAY_BE_NULL | MAY_BE_LONG | MAY_BE_DOUBLE | MAY_BE_OBJECT),
F0("exp", MAY_BE_DOUBLE),
F0("log", MAY_BE_FALSE | MAY_BE_DOUBLE),
@@ -385,11 +336,7 @@ static const func_info_t func_infos[] = {
F1("quoted_printable_encode", MAY_BE_STRING),
F1("convert_cyr_string", MAY_BE_STRING),
F1("get_current_user", MAY_BE_STRING),
F0("set_time_limit", MAY_BE_FALSE | MAY_BE_TRUE),
F0("header_register_callback", MAY_BE_FALSE | MAY_BE_TRUE),
F1("get_cfg_var", MAY_BE_FALSE | MAY_BE_STRING | MAY_BE_ARRAY | MAY_BE_ARRAY_KEY_ANY | MAY_BE_ARRAY_OF_STRING | MAY_BE_ARRAY_OF_ARRAY),
F0("magic_quotes_runtime", MAY_BE_FALSE),
F0("set_magic_quotes_runtime", MAY_BE_FALSE),
F0("get_magic_quotes_gpc", MAY_BE_FALSE),
F0("get_magic_quotes_runtime", MAY_BE_FALSE),
F0("error_log", MAY_BE_FALSE | MAY_BE_TRUE),
@@ -423,11 +370,6 @@ static const func_info_t func_infos[] = {
F1("get_include_path", MAY_BE_FALSE | MAY_BE_STRING),
F1("set_include_path", MAY_BE_FALSE | MAY_BE_STRING),
F0("restore_include_path", MAY_BE_NULL),
F0("setcookie", MAY_BE_NULL | MAY_BE_FALSE | MAY_BE_TRUE),
F0("setrawcookie", MAY_BE_NULL | MAY_BE_FALSE | MAY_BE_TRUE),
F0("header", MAY_BE_NULL),
F0("header_remove", MAY_BE_NULL),
F0("headers_sent", MAY_BE_NULL | MAY_BE_FALSE | MAY_BE_TRUE),
F1("headers_list", MAY_BE_ARRAY | MAY_BE_ARRAY_KEY_LONG | MAY_BE_ARRAY_OF_STRING),
F0("http_response_code", MAY_BE_NULL | MAY_BE_FALSE | MAY_BE_LONG),
F0("connection_aborted", MAY_BE_LONG),
@@ -438,7 +380,6 @@ static const func_info_t func_infos[] = {
#if ZEND_DEBUG
F1("config_get_hash", MAY_BE_ARRAY | MAY_BE_ARRAY_KEY_STRING | MAY_BE_ARRAY_OF_STRING | MAY_BE_ARRAY_OF_ARRAY),
#endif
F0("is_uploaded_file", MAY_BE_FALSE | MAY_BE_TRUE),
F0("move_uploaded_file", MAY_BE_FALSE | MAY_BE_TRUE),
F1("gethostbyaddr", MAY_BE_FALSE | MAY_BE_STRING),
F1("gethostbyname", MAY_BE_STRING),
@@ -462,23 +403,6 @@ static const func_info_t func_infos[] = {
F0("boolval", MAY_BE_FALSE | MAY_BE_TRUE),
FN("gettype", MAY_BE_STRING),
F0("settype", MAY_BE_FALSE | MAY_BE_TRUE),
F0("is_null", MAY_BE_FALSE | MAY_BE_TRUE),
F0("is_resource", MAY_BE_FALSE | MAY_BE_TRUE), // TODO: inline with support for closed resources
F0("is_bool", MAY_BE_FALSE | MAY_BE_TRUE),
F0("is_long", MAY_BE_FALSE | MAY_BE_TRUE),
F0("is_float", MAY_BE_FALSE | MAY_BE_TRUE),
F0("is_int", MAY_BE_FALSE | MAY_BE_TRUE),
F0("is_integer", MAY_BE_FALSE | MAY_BE_TRUE),
F0("is_double", MAY_BE_FALSE | MAY_BE_TRUE),
F0("is_real", MAY_BE_FALSE | MAY_BE_TRUE),
F0("is_numeric", MAY_BE_FALSE | MAY_BE_TRUE),
F0("is_string", MAY_BE_FALSE | MAY_BE_TRUE),
F0("is_array", MAY_BE_FALSE | MAY_BE_TRUE),
F0("is_object", MAY_BE_FALSE | MAY_BE_TRUE), // TODO: inline with support for incomplete class
F0("is_scalar", MAY_BE_FALSE | MAY_BE_TRUE),
F0("is_callable", MAY_BE_FALSE | MAY_BE_TRUE),
F0("is_countable", MAY_BE_FALSE | MAY_BE_TRUE),
F0("is_iterable", MAY_BE_FALSE | MAY_BE_TRUE),
F0("pclose", MAY_BE_FALSE | MAY_BE_LONG),
F1("popen", MAY_BE_FALSE | MAY_BE_RESOURCE),
F0("readfile", MAY_BE_FALSE | MAY_BE_LONG),
@@ -546,10 +470,6 @@ static const func_info_t func_infos[] = {
F0("socket_set_blocking", MAY_BE_FALSE | MAY_BE_TRUE),
F1("stream_get_meta_data", MAY_BE_FALSE | MAY_BE_ARRAY | MAY_BE_ARRAY_KEY_STRING | MAY_BE_ARRAY_OF_ANY),
F1("stream_get_line", MAY_BE_FALSE | MAY_BE_STRING),
F0("stream_wrapper_register", MAY_BE_FALSE | MAY_BE_TRUE),
F0("stream_register_wrapper", MAY_BE_FALSE | MAY_BE_TRUE),
F0("stream_wrapper_unregister", MAY_BE_FALSE | MAY_BE_TRUE),
F0("stream_wrapper_restore", MAY_BE_FALSE | MAY_BE_TRUE),
F1("stream_get_wrappers", MAY_BE_FALSE | MAY_BE_ARRAY | MAY_BE_ARRAY_KEY_LONG | MAY_BE_ARRAY_OF_STRING),
F1("stream_get_transports", MAY_BE_FALSE | MAY_BE_ARRAY | MAY_BE_ARRAY_KEY_LONG | MAY_BE_ARRAY_OF_STRING),
F1("stream_resolve_include_path", MAY_BE_FALSE | MAY_BE_STRING),
@@ -596,13 +516,6 @@ static const func_info_t func_infos[] = {
F0("filesize", MAY_BE_FALSE | MAY_BE_LONG),
F1("filetype", MAY_BE_FALSE | MAY_BE_STRING),
F0("file_exists", MAY_BE_FALSE | MAY_BE_TRUE),
F0("is_writable", MAY_BE_FALSE | MAY_BE_TRUE),
F0("is_writeable", MAY_BE_FALSE | MAY_BE_TRUE),
F0("is_readable", MAY_BE_FALSE | MAY_BE_TRUE),
F0("is_executable", MAY_BE_FALSE | MAY_BE_TRUE),
F0("is_file", MAY_BE_FALSE | MAY_BE_TRUE),
F0("is_dir", MAY_BE_FALSE | MAY_BE_TRUE),
F0("is_link", MAY_BE_FALSE | MAY_BE_TRUE),
F1("stat", MAY_BE_FALSE | MAY_BE_ARRAY | MAY_BE_ARRAY_KEY_ANY | MAY_BE_ARRAY_OF_FALSE | MAY_BE_ARRAY_OF_TRUE | MAY_BE_ARRAY_OF_LONG | MAY_BE_ARRAY_OF_STRING),
F1("lstat", MAY_BE_FALSE | MAY_BE_ARRAY | MAY_BE_ARRAY_KEY_ANY | MAY_BE_ARRAY_OF_FALSE | MAY_BE_ARRAY_OF_TRUE | MAY_BE_ARRAY_OF_LONG | MAY_BE_ARRAY_OF_STRING),
F0("chown", MAY_BE_FALSE | MAY_BE_TRUE),
@@ -626,40 +539,15 @@ static const func_info_t func_infos[] = {
F0("mail", MAY_BE_FALSE | MAY_BE_TRUE),
F0("ezmlm_hash", MAY_BE_LONG),
#ifdef HAVE_SYSLOG_H
F0("openlog", MAY_BE_FALSE | MAY_BE_TRUE),
F0("syslog", MAY_BE_FALSE | MAY_BE_TRUE),
F0("closelog", MAY_BE_TRUE),
#endif
F0("lcg_value", MAY_BE_DOUBLE),
F1("metaphone", MAY_BE_FALSE | MAY_BE_STRING),
F0("ob_start", MAY_BE_FALSE | MAY_BE_TRUE),
F0("ob_flush", MAY_BE_FALSE | MAY_BE_TRUE),
F0("ob_clean", MAY_BE_FALSE | MAY_BE_TRUE),
F0("ob_end_flush", MAY_BE_FALSE | MAY_BE_TRUE),
F0("ob_end_clean", MAY_BE_FALSE | MAY_BE_TRUE),
F1("ob_get_flush", MAY_BE_FALSE | MAY_BE_STRING),
F1("ob_get_clean", MAY_BE_FALSE | MAY_BE_STRING),
F0("ob_get_length", MAY_BE_FALSE | MAY_BE_LONG),
F0("ob_get_level", MAY_BE_LONG),
F1("ob_get_status", MAY_BE_ARRAY | MAY_BE_ARRAY_KEY_ANY | MAY_BE_ARRAY_OF_LONG | MAY_BE_ARRAY_OF_STRING | MAY_BE_ARRAY_OF_ARRAY),
FN("ob_get_contents", MAY_BE_FALSE | MAY_BE_STRING),
F0("ob_implicit_flush", MAY_BE_NULL),
F1("ob_list_handlers", MAY_BE_ARRAY | MAY_BE_ARRAY_KEY_LONG | MAY_BE_ARRAY_OF_STRING),
F0("ksort", MAY_BE_FALSE | MAY_BE_TRUE),
F0("krsort", MAY_BE_FALSE | MAY_BE_TRUE),
F0("natsort", MAY_BE_FALSE | MAY_BE_TRUE),
F0("natcasesort", MAY_BE_FALSE | MAY_BE_TRUE),
F0("asort", MAY_BE_FALSE | MAY_BE_TRUE),
F0("arsort", MAY_BE_FALSE | MAY_BE_TRUE),
F0("sort", MAY_BE_FALSE | MAY_BE_TRUE),
F0("rsort", MAY_BE_FALSE | MAY_BE_TRUE),
F0("usort", MAY_BE_FALSE | MAY_BE_TRUE),
F0("uasort", MAY_BE_FALSE | MAY_BE_TRUE),
F0("uksort", MAY_BE_FALSE | MAY_BE_TRUE),
F0("shuffle", MAY_BE_FALSE | MAY_BE_TRUE),
F0("array_walk", MAY_BE_FALSE | MAY_BE_TRUE),
F0("array_walk_recursive", MAY_BE_FALSE | MAY_BE_TRUE),
F0("count", MAY_BE_LONG),
FN("end", UNKNOWN_INFO),
FN("prev", UNKNOWN_INFO),
FN("next", UNKNOWN_INFO),
@@ -668,18 +556,13 @@ static const func_info_t func_infos[] = {
FN("key", MAY_BE_NULL | MAY_BE_LONG | MAY_BE_STRING),
FN("min", UNKNOWN_INFO),
FN("max", UNKNOWN_INFO),
F0("in_array", MAY_BE_FALSE | MAY_BE_TRUE),
FN("array_search", MAY_BE_NULL | MAY_BE_FALSE | MAY_BE_LONG | MAY_BE_STRING),
F0("extract", MAY_BE_NULL | MAY_BE_LONG),
F1("compact", MAY_BE_NULL | MAY_BE_ARRAY | MAY_BE_ARRAY_KEY_STRING | MAY_BE_ARRAY_OF_REF | MAY_BE_ARRAY_OF_ANY),
F1("array_fill", MAY_BE_FALSE | MAY_BE_ARRAY | MAY_BE_ARRAY_KEY_LONG | MAY_BE_ARRAY_OF_ANY),
F1("array_fill_keys", MAY_BE_ARRAY | MAY_BE_ARRAY_KEY_ANY | MAY_BE_ARRAY_OF_REF | MAY_BE_ARRAY_OF_ANY),
FC("range", zend_range_info),
F0("array_multisort", MAY_BE_FALSE | MAY_BE_TRUE),
F0("array_push", MAY_BE_FALSE | MAY_BE_LONG),
FN("array_pop", UNKNOWN_INFO),
FN("array_shift", UNKNOWN_INFO),
F0("array_unshift", MAY_BE_LONG),
F1("array_splice", MAY_BE_ARRAY | MAY_BE_ARRAY_KEY_ANY | MAY_BE_ARRAY_OF_REF | MAY_BE_ARRAY_OF_ANY),
F1("array_slice", MAY_BE_ARRAY | MAY_BE_ARRAY_KEY_ANY | MAY_BE_ARRAY_OF_REF | MAY_BE_ARRAY_OF_ANY),
FN("array_merge", MAY_BE_ARRAY | MAY_BE_ARRAY_KEY_ANY | MAY_BE_ARRAY_OF_REF | MAY_BE_ARRAY_OF_ANY),
@@ -719,18 +602,11 @@ static const func_info_t func_infos[] = {
FN("array_map", MAY_BE_ARRAY | MAY_BE_ARRAY_KEY_ANY | MAY_BE_ARRAY_OF_REF | MAY_BE_ARRAY_OF_ANY),
F1("array_chunk", MAY_BE_NULL | MAY_BE_ARRAY | MAY_BE_ARRAY_KEY_ANY | MAY_BE_ARRAY_OF_REF | MAY_BE_ARRAY_OF_ANY),
F1("array_combine", MAY_BE_FALSE | MAY_BE_ARRAY | MAY_BE_ARRAY_KEY_ANY | MAY_BE_ARRAY_OF_REF | MAY_BE_ARRAY_OF_ANY),
F0("array_key_exists", MAY_BE_FALSE | MAY_BE_TRUE),
FN("array_key_first", MAY_BE_NULL | MAY_BE_LONG | MAY_BE_STRING),
FN("array_key_last", MAY_BE_NULL | MAY_BE_LONG | MAY_BE_STRING),
F1("pos", UNKNOWN_INFO),
F0("sizeof", MAY_BE_LONG),
F0("key_exists", MAY_BE_FALSE | MAY_BE_TRUE),
F0("assert", MAY_BE_FALSE | MAY_BE_TRUE),
F1("assert_options", MAY_BE_NULL | MAY_BE_FALSE | MAY_BE_LONG | MAY_BE_STRING | MAY_BE_ARRAY | MAY_BE_ARRAY_KEY_LONG | MAY_BE_ARRAY_OF_STRING | MAY_BE_ARRAY_OF_OBJECT | MAY_BE_OBJECT),
F0("version_compare", MAY_BE_NULL | MAY_BE_FALSE | MAY_BE_TRUE | MAY_BE_LONG),
#if HAVE_FTOK
F0("ftok", MAY_BE_LONG),
#endif
F1("str_rot13", MAY_BE_STRING),
F1("stream_get_filters", MAY_BE_ARRAY | MAY_BE_ARRAY_KEY_LONG | MAY_BE_ARRAY_OF_STRING),
F0("stream_filter_register", MAY_BE_FALSE | MAY_BE_TRUE),
@@ -738,7 +614,6 @@ static const func_info_t func_infos[] = {
F1("stream_bucket_prepend", MAY_BE_FALSE | MAY_BE_OBJECT),
F1("stream_bucket_append", MAY_BE_FALSE | MAY_BE_OBJECT),
F1("stream_bucket_new", MAY_BE_FALSE | MAY_BE_OBJECT),
F0("output_add_rewrite_var", MAY_BE_FALSE | MAY_BE_TRUE),
F0("output_reset_rewrite_vars", MAY_BE_FALSE),
F1("sys_get_temp_dir", MAY_BE_STRING),
@@ -1014,25 +889,7 @@ static const func_info_t func_infos[] = {
/* ext/xml */
FN("xml_parser_create", MAY_BE_FALSE | MAY_BE_OBJECT),
FN("xml_parser_create_ns", MAY_BE_FALSE | MAY_BE_OBJECT),
F0("xml_set_object", MAY_BE_NULL | MAY_BE_FALSE | MAY_BE_TRUE),
F0("xml_set_element_handler", MAY_BE_NULL | MAY_BE_FALSE | MAY_BE_TRUE),
F0("xml_set_character_data_handler", MAY_BE_NULL | MAY_BE_FALSE | MAY_BE_TRUE),
F0("xml_set_processing_instruction_handler",MAY_BE_NULL | MAY_BE_FALSE | MAY_BE_TRUE),
F0("xml_set_default_handler", MAY_BE_NULL | MAY_BE_FALSE | MAY_BE_TRUE),
F0("xml_set_unparsed_entity_decl_handler", MAY_BE_NULL | MAY_BE_FALSE | MAY_BE_TRUE),
F0("xml_set_notation_decl_handler", MAY_BE_NULL | MAY_BE_FALSE | MAY_BE_TRUE),
F0("xml_set_external_entity_ref_handler", MAY_BE_NULL | MAY_BE_FALSE | MAY_BE_TRUE),
F0("xml_set_start_namespace_decl_handler", MAY_BE_NULL | MAY_BE_FALSE | MAY_BE_TRUE),
F0("xml_set_end_namespace_decl_handler", MAY_BE_NULL | MAY_BE_FALSE | MAY_BE_TRUE),
F0("xml_parse", MAY_BE_NULL | MAY_BE_FALSE | MAY_BE_LONG),
F0("xml_parse_into_struct", MAY_BE_NULL | MAY_BE_FALSE | MAY_BE_LONG),
F0("xml_get_error_code", MAY_BE_NULL | MAY_BE_FALSE | MAY_BE_LONG),
F1("xml_error_string", MAY_BE_NULL | MAY_BE_STRING),
F0("xml_get_current_line_number", MAY_BE_NULL | MAY_BE_FALSE | MAY_BE_LONG),
F0("xml_get_current_column_number", MAY_BE_NULL | MAY_BE_FALSE | MAY_BE_LONG),
F0("xml_get_current_byte_index", MAY_BE_NULL | MAY_BE_FALSE | MAY_BE_LONG),
F0("xml_parser_free", MAY_BE_NULL | MAY_BE_FALSE | MAY_BE_TRUE),
F0("xml_parser_set_option", MAY_BE_NULL | MAY_BE_FALSE | MAY_BE_TRUE),
F1("xml_parser_get_option", MAY_BE_NULL | MAY_BE_FALSE | MAY_BE_LONG | MAY_BE_STRING),
F1("utf8_encode", MAY_BE_STRING),
F1("utf8_decode", MAY_BE_STRING),