Skip to content

Commit fdc6082

Browse files
authored
Generate optimizer func info from stubs for various extensions (#7409)
ext/hash, ext/iconv, ext/mbstring, ext/xml, ext/zlib
1 parent c95e036 commit fdc6082

File tree

12 files changed

+223
-89
lines changed

12 files changed

+223
-89
lines changed

Zend/Optimizer/zend_func_info.c

Lines changed: 0 additions & 81 deletions
Original file line numberDiff line numberDiff line change
@@ -344,90 +344,9 @@ static const func_info_t old_func_infos[] = {
344344
/* ext/preg */
345345
F1("preg_grep", MAY_BE_FALSE | MAY_BE_ARRAY | MAY_BE_ARRAY_KEY_ANY | MAY_BE_ARRAY_OF_REF | MAY_BE_ARRAY_OF_ANY),
346346

347-
/* ext/mbstring */
348-
F1("mb_convert_case", MAY_BE_STRING),
349-
F1("mb_strtoupper", MAY_BE_STRING),
350-
F1("mb_strtolower", MAY_BE_STRING),
351-
F1("mb_language", MAY_BE_FALSE | MAY_BE_TRUE | MAY_BE_STRING),
352-
F1("mb_internal_encoding", MAY_BE_FALSE | MAY_BE_TRUE | MAY_BE_STRING),
353-
F1("mb_http_input", MAY_BE_FALSE | MAY_BE_STRING| MAY_BE_ARRAY | MAY_BE_ARRAY_KEY_LONG | MAY_BE_ARRAY_OF_STRING),
354-
F1("mb_http_output", MAY_BE_FALSE | MAY_BE_TRUE | MAY_BE_STRING),
355-
F1("mb_detect_order", MAY_BE_TRUE | MAY_BE_ARRAY | MAY_BE_ARRAY_KEY_LONG | MAY_BE_ARRAY_OF_STRING),
356-
F1("mb_substitute_character", MAY_BE_FALSE | MAY_BE_TRUE | MAY_BE_LONG | MAY_BE_STRING),
357-
F1("mb_output_handler", MAY_BE_STRING),
358-
F1("mb_preferred_mime_name", MAY_BE_FALSE | MAY_BE_STRING),
359-
F1("mb_strstr", MAY_BE_FALSE | MAY_BE_STRING),
360-
F1("mb_strrchr", MAY_BE_FALSE | MAY_BE_STRING),
361-
F1("mb_stristr", MAY_BE_FALSE | MAY_BE_STRING),
362-
F1("mb_strrichr", MAY_BE_FALSE | MAY_BE_STRING),
363-
F1("mb_substr", MAY_BE_STRING),
364-
F1("mb_strcut", MAY_BE_STRING),
365-
F1("mb_strimwidth", MAY_BE_STRING),
366-
F1("mb_convert_encoding", MAY_BE_FALSE | MAY_BE_STRING | MAY_BE_ARRAY | MAY_BE_ARRAY_KEY_ANY | MAY_BE_ARRAY_OF_ANY),
367-
F1("mb_detect_encoding", MAY_BE_FALSE | MAY_BE_STRING),
368-
F1("mb_list_encodings", MAY_BE_ARRAY | MAY_BE_ARRAY_KEY_LONG | MAY_BE_ARRAY_OF_STRING),
369-
F1("mb_encoding_aliases", MAY_BE_ARRAY | MAY_BE_ARRAY_KEY_LONG | MAY_BE_ARRAY_OF_STRING),
370-
F1("mb_convert_kana", MAY_BE_STRING),
371-
F1("mb_encode_mimeheader", MAY_BE_STRING),
372-
F1("mb_decode_mimeheader", MAY_BE_STRING),
373-
F1("mb_convert_variables", MAY_BE_FALSE | MAY_BE_STRING),
374-
F1("mb_encode_numericentity", MAY_BE_STRING),
375-
F1("mb_decode_numericentity", MAY_BE_STRING),
376-
F1("mb_get_info", MAY_BE_FALSE | MAY_BE_LONG | MAY_BE_STRING | MAY_BE_ARRAY | MAY_BE_ARRAY_KEY_ANY | MAY_BE_ARRAY_OF_LONG | MAY_BE_ARRAY_OF_STRING | MAY_BE_ARRAY_OF_ARRAY),
377-
378-
F1("mb_regex_encoding", MAY_BE_FALSE | MAY_BE_TRUE | MAY_BE_STRING),
379-
F1("mb_regex_set_options", MAY_BE_STRING),
380-
F1("mb_ereg_replace", MAY_BE_NULL | MAY_BE_FALSE | MAY_BE_STRING),
381-
F1("mb_eregi_replace", MAY_BE_NULL | MAY_BE_FALSE | MAY_BE_STRING),
382-
F1("mb_ereg_replace_callback", MAY_BE_NULL | MAY_BE_FALSE | MAY_BE_STRING),
383-
F1("mb_split", MAY_BE_FALSE | MAY_BE_ARRAY | MAY_BE_ARRAY_KEY_LONG | MAY_BE_ARRAY_OF_STRING),
384-
F1("mb_ereg_search_pos", MAY_BE_FALSE | MAY_BE_ARRAY | MAY_BE_ARRAY_KEY_LONG | MAY_BE_ARRAY_OF_LONG),
385-
F1("mb_ereg_search_regs", MAY_BE_FALSE | MAY_BE_ARRAY | MAY_BE_ARRAY_KEY_ANY | MAY_BE_ARRAY_OF_FALSE | MAY_BE_ARRAY_OF_STRING),
386-
F1("mb_ereg_search_getregs", MAY_BE_FALSE | MAY_BE_ARRAY | MAY_BE_ARRAY_KEY_ANY | MAY_BE_ARRAY_OF_FALSE | MAY_BE_ARRAY_OF_STRING),
387-
388-
/* ext/iconv */
389-
F1("iconv", MAY_BE_FALSE | MAY_BE_STRING),
390-
F1("iconv_get_encoding", MAY_BE_FALSE | MAY_BE_STRING | MAY_BE_ARRAY | MAY_BE_ARRAY_KEY_STRING | MAY_BE_ARRAY_OF_STRING),
391-
F1("iconv_substr", MAY_BE_FALSE | MAY_BE_STRING),
392-
F1("iconv_mime_encode", MAY_BE_FALSE | MAY_BE_STRING),
393-
F1("iconv_mime_decode", MAY_BE_FALSE | MAY_BE_STRING),
394-
F1("iconv_mime_decode_headers", MAY_BE_FALSE | MAY_BE_ARRAY | MAY_BE_ARRAY_KEY_STRING | MAY_BE_ARRAY_OF_STRING | MAY_BE_ARRAY_OF_ARRAY),
395-
396-
/* ext/xml */
397-
F1("xml_error_string", MAY_BE_NULL | MAY_BE_STRING),
398-
F1("xml_parser_get_option", MAY_BE_LONG | MAY_BE_STRING),
399347
F1("utf8_encode", MAY_BE_STRING),
400348
F1("utf8_decode", MAY_BE_STRING),
401349

402-
/* ext/zlib */
403-
F1("gzfile", MAY_BE_FALSE | MAY_BE_ARRAY | MAY_BE_ARRAY_KEY_LONG | MAY_BE_ARRAY_OF_STRING),
404-
F1("gzcompress", MAY_BE_FALSE | MAY_BE_STRING),
405-
F1("gzuncompress", MAY_BE_FALSE | MAY_BE_STRING),
406-
F1("gzdeflate", MAY_BE_FALSE | MAY_BE_STRING),
407-
F1("gzinflate", MAY_BE_FALSE | MAY_BE_STRING),
408-
F1("gzencode", MAY_BE_FALSE | MAY_BE_STRING),
409-
F1("gzdecode", MAY_BE_FALSE | MAY_BE_STRING),
410-
F1("zlib_encode", MAY_BE_FALSE | MAY_BE_STRING),
411-
F1("zlib_decode", MAY_BE_FALSE | MAY_BE_STRING),
412-
F1("zlib_get_coding_type", MAY_BE_FALSE | MAY_BE_STRING),
413-
F1("ob_gzhandler", MAY_BE_FALSE | MAY_BE_STRING),
414-
415-
/* ext/hash */
416-
F1("hash", MAY_BE_FALSE | MAY_BE_STRING),
417-
F1("hash_file", MAY_BE_FALSE | MAY_BE_STRING),
418-
F1("hash_hmac", MAY_BE_FALSE | MAY_BE_STRING),
419-
F1("hash_hmac_algos", MAY_BE_ARRAY | MAY_BE_ARRAY_KEY_LONG | MAY_BE_ARRAY_OF_STRING),
420-
F1("hash_hmac_file", MAY_BE_FALSE | MAY_BE_STRING),
421-
F1("hash_hkdf", MAY_BE_STRING),
422-
F1("hash_init", MAY_BE_OBJECT),
423-
F1("hash_final", MAY_BE_STRING),
424-
F1("hash_copy", MAY_BE_OBJECT),
425-
F1("hash_algos", MAY_BE_ARRAY | MAY_BE_ARRAY_KEY_LONG | MAY_BE_ARRAY_OF_STRING),
426-
F1("hash_pbkdf2", MAY_BE_STRING),
427-
F1("mhash_keygen_s2k", MAY_BE_FALSE | MAY_BE_STRING),
428-
F1("mhash_get_hash_name", MAY_BE_FALSE | MAY_BE_STRING),
429-
F1("mhash", MAY_BE_FALSE | MAY_BE_FALSE | MAY_BE_STRING),
430-
431350
/* ext/filter */
432351
F1("filter_var_array", MAY_BE_NULL | MAY_BE_FALSE | MAY_BE_ARRAY | MAY_BE_ARRAY_KEY_ANY | MAY_BE_ARRAY_OF_ANY | MAY_BE_ARRAY_OF_REF),
433352

Zend/Optimizer/zend_func_infos.h

Lines changed: 95 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -25,6 +25,32 @@ static const func_info_t func_infos[] = {
2525
F1("spl_classes", MAY_BE_ARRAY|MAY_BE_ARRAY_KEY_STRING|MAY_BE_ARRAY_OF_STRING),
2626
F1("spl_object_hash", MAY_BE_STRING),
2727
FN("socket_export_stream", MAY_BE_RESOURCE|MAY_BE_FALSE),
28+
F1("iconv_substr", MAY_BE_STRING|MAY_BE_FALSE),
29+
F1("iconv_mime_encode", MAY_BE_STRING|MAY_BE_FALSE),
30+
F1("iconv_mime_decode", MAY_BE_STRING|MAY_BE_FALSE),
31+
F1("iconv_mime_decode_headers", MAY_BE_ARRAY|MAY_BE_ARRAY_KEY_STRING|MAY_BE_ARRAY_OF_STRING|MAY_BE_ARRAY_OF_ARRAY|MAY_BE_FALSE),
32+
F1("iconv", MAY_BE_STRING|MAY_BE_FALSE),
33+
F1("iconv_get_encoding", MAY_BE_ARRAY|MAY_BE_ARRAY_KEY_STRING|MAY_BE_ARRAY_OF_STRING|MAY_BE_STRING|MAY_BE_FALSE),
34+
F1("hash", MAY_BE_STRING|MAY_BE_FALSE),
35+
F1("hash_file", MAY_BE_STRING|MAY_BE_FALSE),
36+
F1("hash_hmac", MAY_BE_STRING|MAY_BE_FALSE),
37+
F1("hash_hmac_file", MAY_BE_STRING|MAY_BE_FALSE),
38+
F1("hash_init", MAY_BE_OBJECT),
39+
F1("hash_final", MAY_BE_STRING),
40+
F1("hash_copy", MAY_BE_OBJECT),
41+
F1("hash_algos", MAY_BE_ARRAY|MAY_BE_ARRAY_KEY_LONG|MAY_BE_ARRAY_OF_STRING),
42+
F1("hash_hmac_algos", MAY_BE_ARRAY|MAY_BE_ARRAY_KEY_LONG|MAY_BE_ARRAY_OF_STRING),
43+
F1("hash_pbkdf2", MAY_BE_STRING),
44+
F1("hash_hkdf", MAY_BE_STRING),
45+
#if defined(PHP_MHASH_BC)
46+
F1("mhash_get_hash_name", MAY_BE_STRING|MAY_BE_FALSE),
47+
#endif
48+
#if defined(PHP_MHASH_BC)
49+
F1("mhash_keygen_s2k", MAY_BE_STRING|MAY_BE_FALSE),
50+
#endif
51+
#if defined(PHP_MHASH_BC)
52+
F1("mhash", MAY_BE_STRING|MAY_BE_FALSE),
53+
#endif
2854
FN("dba_popen", MAY_BE_RESOURCE|MAY_BE_FALSE),
2955
FN("dba_open", MAY_BE_RESOURCE|MAY_BE_FALSE),
3056
F1("date", MAY_BE_STRING),
@@ -58,7 +84,20 @@ static const func_info_t func_infos[] = {
5884
F1("date_sunset", MAY_BE_STRING|MAY_BE_LONG|MAY_BE_DOUBLE|MAY_BE_FALSE),
5985
F1("date_sun_info", MAY_BE_ARRAY|MAY_BE_ARRAY_KEY_STRING|MAY_BE_ARRAY_OF_FALSE|MAY_BE_ARRAY_OF_TRUE|MAY_BE_ARRAY_OF_LONG),
6086
FN("bzopen", MAY_BE_RESOURCE|MAY_BE_FALSE),
87+
F1("ob_gzhandler", MAY_BE_STRING|MAY_BE_FALSE),
88+
F1("zlib_get_coding_type", MAY_BE_STRING|MAY_BE_FALSE),
89+
F1("gzfile", MAY_BE_ARRAY|MAY_BE_ARRAY_KEY_LONG|MAY_BE_ARRAY_OF_STRING|MAY_BE_FALSE),
6190
F1("gzopen", MAY_BE_RESOURCE|MAY_BE_FALSE),
91+
F1("zlib_encode", MAY_BE_STRING|MAY_BE_FALSE),
92+
F1("zlib_decode", MAY_BE_STRING|MAY_BE_FALSE),
93+
F1("gzdeflate", MAY_BE_STRING|MAY_BE_FALSE),
94+
F1("gzencode", MAY_BE_STRING|MAY_BE_FALSE),
95+
F1("gzcompress", MAY_BE_STRING|MAY_BE_FALSE),
96+
F1("gzinflate", MAY_BE_STRING|MAY_BE_FALSE),
97+
F1("gzdecode", MAY_BE_STRING|MAY_BE_FALSE),
98+
F1("gzuncompress", MAY_BE_STRING|MAY_BE_FALSE),
99+
F1("xml_error_string", MAY_BE_STRING|MAY_BE_NULL),
100+
F1("xml_parser_get_option", MAY_BE_STRING|MAY_BE_LONG),
62101
#if HAVE_NANOSLEEP
63102
F1("time_nanosleep", MAY_BE_ARRAY|MAY_BE_ARRAY_KEY_STRING|MAY_BE_ARRAY_OF_LONG|MAY_BE_BOOL),
64103
#endif
@@ -324,6 +363,62 @@ static const func_info_t func_infos[] = {
324363
F1("bcpowmod", MAY_BE_STRING),
325364
F1("bcpow", MAY_BE_STRING),
326365
F1("bcsqrt", MAY_BE_STRING),
366+
F1("mb_language", MAY_BE_STRING|MAY_BE_BOOL),
367+
F1("mb_internal_encoding", MAY_BE_STRING|MAY_BE_BOOL),
368+
F1("mb_http_input", MAY_BE_ARRAY|MAY_BE_ARRAY_KEY_LONG|MAY_BE_ARRAY_OF_STRING|MAY_BE_STRING|MAY_BE_FALSE),
369+
F1("mb_http_output", MAY_BE_STRING|MAY_BE_BOOL),
370+
F1("mb_detect_order", MAY_BE_ARRAY|MAY_BE_ARRAY_KEY_LONG|MAY_BE_ARRAY_OF_STRING|MAY_BE_TRUE),
371+
F1("mb_substitute_character", MAY_BE_STRING|MAY_BE_LONG|MAY_BE_BOOL),
372+
F1("mb_preferred_mime_name", MAY_BE_STRING|MAY_BE_FALSE),
373+
F1("mb_output_handler", MAY_BE_STRING),
374+
F1("mb_strstr", MAY_BE_STRING|MAY_BE_FALSE),
375+
F1("mb_strrchr", MAY_BE_STRING|MAY_BE_FALSE),
376+
F1("mb_stristr", MAY_BE_STRING|MAY_BE_FALSE),
377+
F1("mb_strrichr", MAY_BE_STRING|MAY_BE_FALSE),
378+
F1("mb_substr", MAY_BE_STRING),
379+
F1("mb_strcut", MAY_BE_STRING),
380+
F1("mb_strimwidth", MAY_BE_STRING),
381+
F1("mb_convert_encoding", MAY_BE_ARRAY|MAY_BE_ARRAY_KEY_LONG|MAY_BE_ARRAY_KEY_STRING|MAY_BE_ARRAY_OF_ANY|MAY_BE_STRING|MAY_BE_FALSE),
382+
F1("mb_convert_case", MAY_BE_STRING),
383+
F1("mb_strtoupper", MAY_BE_STRING),
384+
F1("mb_strtolower", MAY_BE_STRING),
385+
F1("mb_detect_encoding", MAY_BE_STRING|MAY_BE_FALSE),
386+
F1("mb_list_encodings", MAY_BE_ARRAY|MAY_BE_ARRAY_KEY_LONG|MAY_BE_ARRAY_OF_STRING),
387+
F1("mb_encoding_aliases", MAY_BE_ARRAY|MAY_BE_ARRAY_KEY_LONG|MAY_BE_ARRAY_OF_STRING),
388+
F1("mb_encode_mimeheader", MAY_BE_STRING),
389+
F1("mb_decode_mimeheader", MAY_BE_STRING),
390+
F1("mb_convert_kana", MAY_BE_STRING),
391+
F1("mb_convert_variables", MAY_BE_STRING|MAY_BE_FALSE),
392+
F1("mb_encode_numericentity", MAY_BE_STRING),
393+
F1("mb_decode_numericentity", MAY_BE_STRING),
394+
F1("mb_get_info", MAY_BE_ARRAY|MAY_BE_ARRAY_KEY_LONG|MAY_BE_ARRAY_KEY_STRING|MAY_BE_ARRAY_OF_LONG|MAY_BE_ARRAY_OF_STRING|MAY_BE_ARRAY_OF_ARRAY|MAY_BE_STRING|MAY_BE_LONG|MAY_BE_FALSE),
395+
#if defined(HAVE_MBREGEX)
396+
F1("mb_regex_encoding", MAY_BE_STRING|MAY_BE_BOOL),
397+
#endif
398+
#if defined(HAVE_MBREGEX)
399+
F1("mb_ereg_replace", MAY_BE_STRING|MAY_BE_FALSE|MAY_BE_NULL),
400+
#endif
401+
#if defined(HAVE_MBREGEX)
402+
F1("mb_eregi_replace", MAY_BE_STRING|MAY_BE_FALSE|MAY_BE_NULL),
403+
#endif
404+
#if defined(HAVE_MBREGEX)
405+
F1("mb_ereg_replace_callback", MAY_BE_STRING|MAY_BE_FALSE|MAY_BE_NULL),
406+
#endif
407+
#if defined(HAVE_MBREGEX)
408+
F1("mb_split", MAY_BE_ARRAY|MAY_BE_ARRAY_KEY_LONG|MAY_BE_ARRAY_OF_STRING|MAY_BE_FALSE),
409+
#endif
410+
#if defined(HAVE_MBREGEX)
411+
F1("mb_ereg_search_pos", MAY_BE_ARRAY|MAY_BE_ARRAY_KEY_LONG|MAY_BE_ARRAY_OF_LONG|MAY_BE_FALSE),
412+
#endif
413+
#if defined(HAVE_MBREGEX)
414+
F1("mb_ereg_search_regs", MAY_BE_ARRAY|MAY_BE_ARRAY_KEY_LONG|MAY_BE_ARRAY_KEY_STRING|MAY_BE_ARRAY_OF_STRING|MAY_BE_ARRAY_OF_FALSE|MAY_BE_FALSE),
415+
#endif
416+
#if defined(HAVE_MBREGEX)
417+
F1("mb_ereg_search_getregs", MAY_BE_ARRAY|MAY_BE_ARRAY_KEY_LONG|MAY_BE_ARRAY_KEY_STRING|MAY_BE_ARRAY_OF_STRING|MAY_BE_ARRAY_OF_FALSE|MAY_BE_FALSE),
418+
#endif
419+
#if defined(HAVE_MBREGEX)
420+
F1("mb_regex_set_options", MAY_BE_STRING),
421+
#endif
327422
F1("session_name", MAY_BE_STRING|MAY_BE_FALSE),
328423
F1("session_module_name", MAY_BE_STRING|MAY_BE_FALSE),
329424
F1("session_save_path", MAY_BE_STRING|MAY_BE_FALSE),

ext/hash/hash.stub.php

Lines changed: 30 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1,14 +1,20 @@
11
<?php
22

33
/** @generate-class-entries */
4+
5+
/** @refcount 1 */
46
function hash(string $algo, string $data, bool $binary = false, array $options = []): string|false {}
57

8+
/** @refcount 1 */
69
function hash_file(string $algo, string $filename, bool $binary = false, array $options = []): string|false {}
710

11+
/** @refcount 1 */
812
function hash_hmac(string $algo, string $data, string $key, bool $binary = false): string|false {}
913

14+
/** @refcount 1 */
1015
function hash_hmac_file(string $algo, string $data, string $key, bool $binary = false): string|false {}
1116

17+
/** @refcount 1 */
1218
function hash_init(string $algo, int $flags = 0, string $key = "", array $options = []): HashContext {}
1319

1420
function hash_update(HashContext $context, string $data): bool {}
@@ -19,34 +25,55 @@ function hash_update_stream(HashContext $context, $stream, int $length = -1): in
1925
/** @param resource|null $stream_context */
2026
function hash_update_file(HashContext $context, string $filename, $stream_context = null): bool {}
2127

28+
/** @refcount 1 */
2229
function hash_final(HashContext $context, bool $binary = false): string {}
2330

31+
/** @refcount 1 */
2432
function hash_copy(HashContext $context): HashContext {}
2533

34+
/**
35+
* @return array<int, string>
36+
* @refcount 1
37+
*/
2638
function hash_algos(): array {}
2739

40+
/**
41+
* @return array<int, string>
42+
* @refcount 1
43+
*/
2844
function hash_hmac_algos(): array {}
2945

46+
/** @refcount 1 */
3047
function hash_pbkdf2(string $algo, string $password, string $salt, int $iterations, int $length = 0, bool $binary = false): string {}
3148

3249
function hash_equals(string $known_string, string $user_string): bool {}
3350

51+
/** @refcount 1 */
3452
function hash_hkdf(string $algo, string $key, int $length = 0, string $info = "", string $salt = ""): string {}
3553

3654
#ifdef PHP_MHASH_BC
3755
/** @deprecated */
3856
function mhash_get_block_size(int $algo): int|false {}
3957

40-
/** @deprecated */
58+
/**
59+
* @refcount 1
60+
* @deprecated
61+
*/
4162
function mhash_get_hash_name(int $algo): string|false {}
4263

43-
/** @deprecated */
64+
/**
65+
* @refcount 1
66+
* @deprecated
67+
*/
4468
function mhash_keygen_s2k(int $algo, string $password, string $salt, int $length): string|false {}
4569

4670
/** @deprecated */
4771
function mhash_count(): int {}
4872

49-
/** @deprecated */
73+
/**
74+
* @refcount 1
75+
* @deprecated
76+
*/
5077
function mhash(int $algo, string $data, ?string $key = null): string|false {}
5178
#endif
5279

ext/hash/hash_arginfo.h

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,5 @@
11
/* This is a generated file, edit the .stub.php file instead.
2-
* Stub hash: 8c35168fb1c95e76c5c77fd0c0e8d295e13a0414 */
2+
* Stub hash: d0ed07f608581a5700a10ec53a817ca788ef9638 */
33

44
ZEND_BEGIN_ARG_WITH_RETURN_TYPE_MASK_EX(arginfo_hash, 0, 2, MAY_BE_STRING|MAY_BE_FALSE)
55
ZEND_ARG_TYPE_INFO(0, algo, IS_STRING, 0)

ext/iconv/iconv.stub.php

Lines changed: 12 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -4,20 +4,32 @@
44

55
function iconv_strlen(string $string, ?string $encoding = null): int|false {}
66

7+
/** @refcount 1 */
78
function iconv_substr(string $string, int $offset, ?int $length = null, ?string $encoding = null): string|false {}
89

910
function iconv_strpos(string $haystack, string $needle, int $offset = 0, ?string $encoding = null): int|false {}
1011

1112
function iconv_strrpos(string $haystack, string $needle, ?string $encoding = null): int|false {}
1213

14+
/** @refcount 1 */
1315
function iconv_mime_encode(string $field_name, string $field_value, array $options = []): string|false {}
1416

17+
/** @refcount 1 */
1518
function iconv_mime_decode(string $string, int $mode = 0, ?string $encoding = null): string|false {}
1619

20+
/**
21+
* @return array<string, string|array>|false
22+
* @refcount 1
23+
*/
1724
function iconv_mime_decode_headers(string $headers, int $mode = 0, ?string $encoding = null): array|false {}
1825

26+
/** @refcount 1 */
1927
function iconv(string $from_encoding, string $to_encoding, string $string): string|false {}
2028

2129
function iconv_set_encoding(string $type, string $encoding): bool {}
2230

31+
/**
32+
* @return array<string, string>|string|false
33+
* @refcount 1
34+
*/
2335
function iconv_get_encoding(string $type = "all"): array|string|false {}

ext/iconv/iconv_arginfo.h

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,5 @@
11
/* This is a generated file, edit the .stub.php file instead.
2-
* Stub hash: c7b11a7cd853ede0ca7c5540995d8a7224d00da0 */
2+
* Stub hash: c7198f92b39f7a15d242a74ed5f42036f858da2e */
33

44
ZEND_BEGIN_ARG_WITH_RETURN_TYPE_MASK_EX(arginfo_iconv_strlen, 0, 1, MAY_BE_LONG|MAY_BE_FALSE)
55
ZEND_ARG_TYPE_INFO(0, string, IS_STRING, 0)

0 commit comments

Comments
 (0)