-
Notifications
You must be signed in to change notification settings - Fork 7.9k
Optimize strlen() and in_array() opcodes #4981
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Conversation
6c702cb
to
6755808
Compare
- Don't save the opline or check for exceptions if it isn't needed. (only affects temporary expressions, not $cv) - Be more specific about the way to free string operands ```php // test_strlen(10000000): .402 -> .387 at 2.5GHz function test_strlen(int $n) { $total = 0; for ($i = 0; $i < $n; $i++) { $total += strlen((string)$i); } return $total; } // test_in_array(40000000): .54 -> .44 at 2.5GHz function test_in_array(int $n) { $total = 0; for ($i = 0; $i < $n; $i++) { if (in_array($i, [1, 50, 100], true)) { $total += $i; } } return $total; } ```
6755808
to
cfde857
Compare
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
I'll fix and commit this.
FREE_OP1(); | ||
ZEND_VM_SMART_BRANCH(result, 1); | ||
ZEND_VM_SMART_BRANCH(result, OP1_TYPE & (IS_TMP_VAR|IS_VAR)); |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
zend_compare() may throw exception
if (Z_TYPE_P(op1) == IS_STRING) { | ||
result = zend_hash_find_ex(ht, Z_STR_P(op1), OP1_TYPE == IS_CONST); | ||
} else if (Z_TYPE_P(op1) == IS_LONG) { | ||
result = zend_hash_index_find(ht, Z_LVAL_P(op1)); | ||
} |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
These checks make sense only if op1
was IS_REFERENCE
result = zend_hash_find_ex(ht, ZSTR_EMPTY_ALLOC(), 1); | ||
FREE_OP1(); | ||
ZEND_VM_SMART_BRANCH(result, 1); |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
It doesn't make a lot of sense to over-optimize for exceptional cases.
} | ||
ZEND_VM_SMART_BRANCH(0, 0); |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
FREE_OP1() and exception checks missing
The most important issue, that in case of |
Merged as f8cf715 |
Aaron Piotrowski (29): Implement Fibers Fix exception thrown during fiber destruction Minor fiber fixes Improve fiber backtraces Check current_execute_data instead of flags in fiber destructor Catch and repeat zend_bailout in fibers Add sanitizer fiber switching support Rename sanitizer members for clarity Move fiber stack allocation within try Do not free tick function entry Fix tick function with arguments Remove unnecessay NULL Switch register_tick_function back to zend_parse_parameters Add internal Fiber API (#7045) Split fiber status and flags (#7094) Improve Fiber::getReturn() Merge fiber switching functions (#7106) Improve fiber interoperability (#7128) Reorganize zend_test and add custom fiber implementation tests (#7137) Change stack field to a pointer in fiber context Add test for leaking prior context with symmetric coroutines Add API to prevent Fiber switch in select contexts Remove fiber context embedding Drop fiber block hooks Rename Fiber::this() to Fiber::getCurrent() (#7155) Fiber cleanup Remove copying of fiber result to transfer value Allow creating Graceful/UnwindExit and use when destroying a fiber (#7174) Fiber ucontext support (#7226) Adam Baratz (2): Add MSSQL setup to Azure Pipelines build Remove flakiness from tests Alex Dowad (136): Avoid compiler warnings related to mbstring flush functions Refactor UTF-16LE -> wchar conversion code Remove useless validity check when converting UTF-16LE -> wchar Remove useless constants MBFL_CHP_{CTL,DIGIT,UALPHA,LALPHA,MSPECIAL} Refactor mbfl_ident.c, mbfl_encoding.c, mbfl_memory_device.c, mbfl_string.c Add mbstring identify filter for '7bit' encoding Handle illegal bytes properly when converting to '7bit' encoding Add identify filter for UTF-16, UTF-16LE, UTF-16BE Add mbstring identify filter for 'binary' encoding Add identify filter for UCS-2, UCS-2BE, and UCS-2LE encodings Add comment explaining mUTF-7 to mbfilter_utf7imap.c Add 'mUTF-7' alias for UTF7-IMAP encoding mUTF-7 (UTF7-IMAP) conversion: handle illegal (non-RFC-compliant) input correctly Remove unused IS_SJIS1 and IS_SJIS2 macros Add identify filter for ISO-8859-16 (Latin-10) encoding Add identify filter for ISO-8859-3 (Latin-3) Add identify filter for ISO-8859-6 (Latin/Arabic) Add identify filter for ISO-8859-7 (Latin/Greek) Add identify filter for ISO-8859-8 (Latin/Hebrew) Do not pass invalid ISO-8859-{3,6,7,8} characters through silently Add test suite for ISO-8859-x encoding verification and conversion UTF-16 text conversion handles truncated characters as illegal Improve error handling for UTF-16{,BE,LE} Add identify filter for UTF-32{,BE,LE} UTF-32 conversion treats truncated characters as illegal Fix mbstring support for CP1252 encoding Add test suite for CP1252 encoding Test cases for mbstring encodings are less repetitive Fix mbstring support for CP1251 encoding Add test suite for CP1251 encoding Fix mbstring support for CP1254 encoding Add test suite for CP1254 encoding All bytes are valid in CP866 encoding Remove dead code from mbfilter_cp866.c (and do general code cleanup) Add test suite for CP866 encoding All bytes are valid in CP850 encoding Remove dead code from mbfilter_cp850.c (and do general code cleanup) Add test suite for CP850 encoding All bytes are valid in KOI8-R encoding Remove dead code from mbfilter_koi8r.c Remove dead code from mbfilter_iso8859_{2,4,5,9,10,13,14,15,16}.c Add test suite for KOI8-R encoding All bytes are valid in KOI8-U encoding Remove dead code from mbfilter_koi8u.c (and do general code cleanup) Add test suite for KOI8-U encoding Optimize (AND FIX) mb_check_encoding (cut execution time by 50%+) Fix mbstring support for ARMSCII-8 Add test suite for ARMSCII-8 encoding Fix issues with mbstring encoding tests Remove useless byte{2,4}{be,le} encodings from mbstring Fix mbstring support for Shift-JIS Fix mbstring support for EUC-JP text encoding Treat non-ASCII characters as erroneous when converting ASCII text Remove mbstring identify filters Test EUC-JP and Shift-JIS more thoroughly Don't redundantly flush mbstring filters multiple times Fix broken binary search function in mbstring SJIS-2004 encoding conversion: handle invalid (or truncated) 2nd byte for Kanji correctly Don't mangle non-Japanese chars which appear after a 'combining' kana in SJIS-2004 Add test suite for SJIS-2004 encoding SJIS-mac encoding conversion: handle invalid (or truncated) 2nd byte for Kanji correctly Convert Unicode halfwidth Yen sign to MacJapanese halfwidth Yen sign SJIS-mac encoding conversion: Stop the carnage of innocent Unicode codepoints Unicode -> SJIS-mac conversion doesn't reject valid codepoints after a bad transcoding hint Add test suite for SJIS-mac encoding Leading BOM is stripped for UTF-32 Enhance mbstring support for UCS-2 text Consolidate all single-byte encodings in one source file Bugfixes for findInvalidChars (helper for mbstring test suite) Enhance handling of CP932 text encoding Don't pass invalid JIS X 0208 characters through Don't pass invalid JIS X 0212, JIS X 0213, and Windows-CP932 characters through Combine MBFL_ENCTYPE_WCS{2,4}{BE,LE} constants Combine MBFL_ENCTYPE_MWC2{BE,LE} constants Fix mbstring support for SJIS-Mobile (DoCoMo, KDDI, and Softbank variants of Shift-JIS) Enhance handling of CP51932 encoding 0x5C is not a backslash in Shift-JIS-2004 0x5C is not a Yen sign in CP932 (or CP51932) 0x7E is not a tilde in Shift-JIS{,-2004} Convert U+203E (OVERLINE) to 0x8150 (FULLWIDTH MACRON) in some SJIS variants Convert U+FF5E (FULLWIDTH TILDE) to 0x8160 (WAVE DASH) in SJIS variants Convert U+00AF (MACRON) to 0x8150 (FULLWIDTH MACRON) in some SJIS variants ISO-2022-JP-2004 conversion: represent backslash and tilde as ASCII ISO-2022-JP-2004 conversion: treat unrecognized escapes as error ISO-2022-JP-2004 conversion: handle invalid characters correctly Add comment explaining why ISO-2022-JP-2004, etc strings end with ESC ( B JIS7/JIS8 encoding: treat unrecognized escapes as error JIS7/JIS8 encoding: use JISX0201 for U+203E (overline) JIS7/JIS8 encoding: handle invalid 2nd byte for Kanji correctly JIS7/JIS8 encoding: treat truncated multibyte characters as error Stricter handling of erroneous input when converting CP5022{0,1,2} text encoding CP5022{0,1,2}: convert characters in ku 0x2D (13th row) correctly CP5022{0,1,2}: convert Unicode codepoints in 'user' area (0xE000-E757) correctly CP5022{0,1,2}: use JISX0201 for U+203E (overline) CP5022{0,1,2}: treat unrecognized escapes as error Add test suite for CP5022{0,1,2} CP5022{0,1,2}: treat truncated multibyte characters as error Remove useless mbstring encoding 'CP50220-raw' Remove useless mbstring encoding 'JIS-ms' Remove unused macros from mbfilter_cp51932.c, mbfilter_iso2022jp_mobile.c Remove useless constant MBFL_ENCTYPE_MBCS Update 'East Asian Width' table to comply with Unicode 13.0 Remove useless function mbfl_filt_tl_jisx0201_jisx0208_init Remove unused 'next_filter' member from mbfl_filt_tl_jisx0201_jisx0208_param struct Remove unneeded 'filter_ctor' member from mbfl_convert_filter struct Simplify code for working with halfwidth/fullwidth kana conversion filter Refactor mbfl_filt_tl_jisx0201_jisx0208 by moving kana conversion into helper function Fix error reporting bug for Unicode -> CP50220 conversion Code cleanup in mbfilter_utf7.c Catch and handle errors in UTF-7 text conversion Code cleanup in mbfilter_utf7imap.c Catch and handle errors in mUTF-7 (IMAP) conversion Add test suite for mUTF-7 (IMAP) encoding Fix mbstring support for ISO-2022-JP-KDDI encoding Fix mbstring support for ISO-2022-JP-MS encoding Improve documentation for contributors Add test suite for UTF-{7,8,16,32} Remove duplicate implementation of CP932 from mbstring Mark CP932 and CP51932 encoding tests as 'slow tests' Minor formatting tweaks in mbfilter_uhc.c Strict conversion of UHC text to Unicode When flushing CP5022x conversion filter, also flush next filter in chain Minor formatting tweaks in mbfilter_euc_kr.c Fix conversion of HZ text (and add test suite) Fix conversion of CP936 text (and add test suite) Remove table generation scripts which have not been used for years Fix conversion of EUC-KR text (and add test suite) Fix conversion of EUC-CN text (and add test suite) Fix conversion of EUC-TW text (and add test suite) Fix conversion of EUC-JP-2004 text (and add test suite) Code cleanup in mbfilter_uhc.c Fix conversion of ISO-2022-KR text (and add test suite) Fix conversion of Big5 and CP950 text (and add test suite) Reduce size of conversion tables for CP936 Fix conversion of GB18030 text (and add test suite) Fix typo in mbfilter.h Alex Erohin (1): Coding style tweaks for zend_vm_gen.php Alex McLean (1): Add test cases for bcmath ValueErrors Alexander Moskalev (1): cURL: make possible to send file from buffer string Anatol Belski (41): hash: Add MurmurHash3 with streaming support NEWS: Add murmurhash info [ci skip] UPGRADING: Add murmurhash note [ci skip] hash: murmur: Suppress sanitize warnings under GCC hash: murmur: Fix GCC support version for no_sanitize hash: murmur: Initialize final hash explicitly hash: Add build dir for ext/hash/murmur hash: Support custom algo parameters UPGRADING: Document algorithm specific hash options [ci skip] UPGRADING.INTERNALS: Document hash init signature changes [ci skip] hash: Fix signatures in the final callback defs hash: Implement xxHash hash: Use hrtime() in the bench script [ci skip] UPGRADING: Add xxHash notes [ci skip] NEWS: Add xxhash note [ci skip] NEWS: Fix typo [ci skip] hash: Implement secret support for xxh3 and xxh128 UPGRADING: Add note about xxHash secret and fix a typo NEWS: Associate FR to xxHash additions hash: xxhash: Use canonicalization routine from existing API hash: Fix -Warray-parameter= warnings fileinfo: Port libmagic 5.40 fileinfo: Restore config.h for libmagic fileinfo: Fix VS compat fileinfo: More VS compat fileinfo: Update libmagic.patch fileinfo: Turn back the WS check mitigation fileinfo: Update the patch fileinfo: Fix version in patch update script fileinfo: Pull upstream tests fileinfo: Obey POSIX in pattern conversion Revert "fileinfo: Obey POSIX in pattern conversion" libtool: Add CC tag explicitly Zend: Cleanup dead assignment in zend_compile_class_const ext: Cleanup some dead assignments pcre2lib: Pull PCRE2 10.37 pcre2lib: Fix wrong check-in NEWS: UPGRADING.INTERNALS: Add PCRE2 10.37 info pcre: Workaround bug #81101 pcre: Apply upstream patch for bug #81101 to bundled libpcre phar: crc32: Extend and cleanup API for the new bulk crc32 functions Andrii Dembitskyi (1): Fix SplFileObject::fseek() method description (#7321) Andy Postnikov (1): Backport libgd commit Anna Filina (1): Add test to verify file_get_contents error with folder Anton Vasiliev (1): Fix typo Ayesh Karunaratne (10): FTP: Disallow direct `FTPConnection` construction IMAP: Disallow direct `new IMAPConnection()` construct IMAP: Declare `IMAPConnection` class as `final` (stub+test) Curl: Add CURLOPT_DOH_URL option [skip-ci] Update UPGRADING file with new `IMAP` namespace Move FTP extension class `FTPConnection` to `FTP\Connection` Move resource-object classes of LDAP to `\LDAP` namespaces (#6963) Move resource-object classes of PSpell to `\PSpell` namespace Improve interface non-public method error message Update deprecation message for incompatible float to int conversion Bartosz Gorski (1): Removed mentions of git.php.net from the documentation Ben Morss (5): Add avif support to ext/gd Reduce girl.avif by 4x AVIF support for getimagesize() and imagecreatefromstring() Disable strict pixi requirement for libavif >= 0.9.1 Lossless conversion for webp Ben Ramsey (10): Add entries for new behavior of PDO_ODBC server info/version attributes Add entries for new Sodium functions to NEWS Revert "Remove no longer used "log_errors_max_len" ini directive (#6838)" Fix typo in ezmlm command in release-process doc The master branch is now for 8.1.0alpha3 The master branch is now for 8.1.0beta1 The master branch is now for 8.1.0beta2 Change release process to create branch at RC1 The master branch is now for 8.1.0beta3 Update versions for PHP 8.1.0beta3 Benjamin Eberlei (2): Add host for php_network_getaddresses getaddrinfo failed error message. (#7181) Fix #80097: Have ReflectionAttribute implement Reflector and __toString Björn Tantau (1): Fix #77372: Retain full path of files for directory uploads (#6917) Brent Roose (1): Fix typo "without-pcre-jit" Calison (1): Return early on php display error for better legibility Calvin Buckley (3): Check liveness in PDO_ODBC Implement server type/version for PDO_ODBC getAttr (#6935) AIX/XCOFF support for fibers (#7338) Cameron Hall (1): Fix #42357: fputcsv() has an optional parameter for line endings Cameron Porter (2): Fixed bug #80724 Fixed bug #81085: Add version 7.71.0 blob options. Cees-Jan Kiewiet (1): Add support for openmetrics formatting to FPM status Christoph M. Becker (29): Remove IGNORE_URL_WIN macro Raise E_WARNING on PHP related errors Add --repeat flag to usage info of run-tests.php Fix inclusion order for phpize builds on Windows Fix typos in comments php_tidy_create_node() expects a fixed set of node_types Return early from php_search_array() Clarify and assert that printf() and friends never return NULL Disallow version_compare() $operator abbreviations Convert file_info resources to objects Fix #77423: parse_url() will deliver a wrong host to user Initalize return_value before use Fix new test wrt. removed skipif.inc Migrate skip checks to --EXTENSIONS-- for ext/gd Adjust run-tests.php to dynamic extension loading Don't add unnecessary extensions to the test INI for AppVeyor Speed up test case Mark slow tests bug81119.phpt requires ext/gmp Remove temporary workaround for installing libavif Improve performance of AppVeyor test runs Deprecate $num_points parameter of image(open|filled)polygon Fix Windows debug builds Provide bless_tests.patch for failing tests on AppVeyor Skip new preload test on Windows [ci skip] UPGRADING: oci8.old_oci_close_semantics has been deprecated Use --EXTENSIONS-- instead of --SKIPIF-- in new test case Remove full stop from error message Fix #78919: CLI server: insufficient cleanup if request startup fails Christopher Jones (4): Fix PDO_OCI build Fix failures due to new deprecations Update NEWS for #77120 Update OCI8 tests for oci8.old_oci_close_semantics deprecation Craig Francis (1): Use ENT_QUOTES|ENT_SUBSTITUTE default for HTML encoding and decoding functions DannyS712 (1): zend_language_parser.y: Fix a documentation typo Darek Slusarczyk (2): Fix #80330: Replace language in APIs and source code/docs Fix #80329: Add option to specify LOAD DATA LOCAL white list folder David CARLIER (14): hrtime implementation update for Mac Distinguishing opcache SHM on stats tools for Mac Fix ubsan warning on macos Use VM_MAKE_TAG for macos memory tag fpm master/child process rename, enable on mac os. stream: Fix MacOS build. fsync as alias for fdatasync. (#6882) Add FreeBSD to CI (#6974) pcntl add darwin specific flags for who/which especially (#7075) fdatasync disable warning on macOS. (#7122) Litespeed sapi OpenBSD build fix (#3999) define SO_ACCEPTFILTER separately where supported (#7146) exposing few macOS socket options to give hints how to handle data, Fix pointer constness warning in crc32 module on arm64 (#7225) Fix dns resolv linkage issue on haiku (#7350) David Carlier (10): posix: adding freebsd specific rlimit constants Implement fetching TLS TCB offset on MacOS Avoid repeatedly calling strlen in FPM setproctitle implementation pcntl: Adding pcntl_rfork support. Pull #6989 FreeBSD defines SO_ACCEPTFILTER pcntl_rfork: following-up suggestions. crc32 feature detection from auxiliary vectors on FreeBSD sockets exposing TC_DEFER_ACCEPT to optimise tcp exchanges. sockets enabling SO_MARK socket option which is relatively similar getrandom support for DragonFlyBSD too. David Gebler (2): Add IL compat flag to Windows builds Add fsync() and fdatasync() functions Derick Alangi (1): [skip-ci] Improve documentation for better clarity to readers (#7066) Derick Rethans (9): Updated to version 2020.3 (2020c) Updated to version 2020.4 (2020d) Updated to version 2021.1 (2021a) Upgrade timelib to 2021.03 and fix many date/time issues Skip test on 32bit, as the timestamp range is outside 32bit range Upgrade timelib to 2021.06 Import timelib 2021.07 Fixed bug #80963: DateTimeZone::getTransitions() truncated Fixed test by adding echo and expected string Dharman (9): Avoid throwing warnings in mysqlnd client_info is a constant and doesn't need a connection Remove unused mysqli global Remove redundant macros in mysqli_driver implementation Clean up mysqli_driver test cases Deprecate mysqli driver_version property Add CLEAN sections to mysqli and PDO mysql tests Change the default error mode of mysqli Deprecate OO style mysqli::get_client_info method Dmitry Stogov (304): Fix conflict Remove redundand IS_INDIRECT checks (they were necessary for $GLOBALS handling) Better CPU registers usage PHP array cannot refer to EG(symbol_table) any more. Replace corresponding checks by ZEND_ASSERT(). Cleanup: Always use CG(arena) for unin type lists Avoid modification of trait info Mark classes cached by opcache by ZEND_ACC_CACHED flag and prevent useless copying and desrpoying of immutable data. Fixed crash in ZTS build with --repeat option Remove useless zend_update_class_constants() calls Added Inheritance Cache. Use IS_ALIAS_PTR to make distinct between aliasses and real classes Reuse single map_ptr slot for indentical class names Fixed map_ptr slot sharing for trait/self Use zend_type.ce_cache__ptr for caching class resulution during argument/result type checks Unserialize op_array->scope before passing to zend_file_cache_unserialize_type(). Link unbound simple classes (without parent/intefaces/traits) in first place. Avoid useless SHM data duplication Persist class name before methods, because it may be used insted of "self" Microoptimization of STRLEN and IN_ARRAY opcodes (based on https://github.com/php/php-src/pull/4981) Improved unserialize() performance. Checks for object propery "visibility change" were moved, to be performed only if name/visibility had been really changed. unserialize() optimization. Omit class name validation before hash lookup, and perform it only before autoloading. We don't need map_ptr slots for op_array.run_time_cache during preloading. Properly relove self::CONSTANT at compile time Improve basename(). Avoid calling mblen() for ASCII compatible locales. Attempt to fix ext\standard\tests\file\basename_bug66395_variation2-win32.phpt and ext\standard\tests\file\pathinfo_basic1-win32.phpt Fixed NULL pointer dereference Reduce ZPP API overhead Remove class validation. zend_lookup_class_ex() performs it anyway. Revert "Remove class validation. zend_lookup_class_ex() performs it anyway." Fixed error message Switch few functions useful in Symphony apps to new ZPP API. Speed up __sleep() and __wakeup() calls Improve SPL directory and stat() cache using zend_srting* instead of char* Optimize out zend_strpprintf() usage for simple concationaton serialize() optimization Change the order of properties used for var_dump(), serialize(), comparison, etc. Added UPGRADING note. Incomplete class may have only single "MAGIC_MEMBER" Optimized object serialization without rebulding properties HashTable Optimized object encoding without rebulding properties HashTable Optimized object conversion to array without rebulding properties HashTable Loop invariant code motion Switch to new ZPP Switch to new ZPP Avoid useless date conversion Cache haschildren/getchildren methods of recursive iterators. typo Use spl_filesystem_object.file_name for SPL_FS_DIR as a cache and prevent multiple file name reconstruction. Fixed assertion (ext/opcache/zend_persist.c:327: zend_accel_get_type_map_ptr: Assertion `ret > 2' failed) Inheritance cache optimization Avoid repeatable work when error_reporting() is called with the same argument few times. zend_verify_recv_arg_type_helper is not "cold". Inline "array" part of FE_FETCH_R handler into HYBRID VM Fixed compilation warning Remove deprecated code Change Zend Stream API to use zend_string* instead of char*. Fix CLANG/RELEASE build (this is a workaround for probable bug in CLANG) "zend-test" was renamed to "zend_test" XFAIL on WIN64 because of problem in libffi micro-optimization Add zend_hash_lookup() and zend_hash_index_lookup() functions. Use zend_hash_lookup() Use better function Use zend_string* instead of char* strtr() optimization Use capstone disassembler, if available. Move x86 dependent code out from platform independed parts. Move system independent code out from x86 specific header Replace function with macro Improved type inference for FE_FETCH_R Improve JIT for IS_IDENTICAL Improved JIT for TYPE_CHECK opcode Simplify auto-globals checks We don't create an actual variable for $GLOBALS any more. Use better function Remove reference to $GLOBALS. We don't create an actual variable for $GLOBALS any more . Merge upstream DynAsm changes from LuaJIT Avoid reading of property name in FETCH_OBJ_R/IS if it can be accessed through run-time cache slot. Avoid reading of property name in ASSIGN_OBJ if it can be accessed through run-time cache slot. Reduce number of stat() calls We don't have to clear zend_object structure, it's initialized by zend_object_std_init() anyway. clear only neccessary part of spl_filesystem_object Attempt to fix ext/spl/tests/bug67359.phpt broken by f323baa845b51e00e8116bc55fa40400a0f70e44 Fixed macros Set expectations micro-optimization Fixed unintended string duplication Extend ZEND_HASH_FILL_* API with ZEND_HASH_FILL_GROW and use it to optimize get_declared_classes() Use ZEND_HASH_FILL_* API for explode() Use zend_hash_append*() in zend_fetch_debug_backtrace() unserialize() optimization Fast Class Cache Prevent call of var_push_dtor_value() on hot path. Avoid destructor call for LONG keys Use Fast Class Cache to speedup object unserialization Use Fast Class Cache Don't evalutae ZEND_AST_CLASS_CONST to ZEND_AST_CONSTANT ar Use fast class cache Call zend_generator_check_placeholder_frame() only for frames with Initialize fast class cache Stop inserting fake frames on VM stack. Keep fci->object unchanged Better support for cross-compilation Fixed use-after-free introduced by ca49e53670631ed9754810d7ec6d56ede0d06cca Fixed possible incorrect assumption if constant is a power of 2. Fixed incorrect error message Remove useless masking Fixed CPU detection JIT class methods only when class entry is completely persistent. Fixed tracing JIT + preloading failures: DynASM/x86: Fix x64 .aword refs. Add .qword, .quad, .addr and .long. Fixed possible use after free Fixed indirect variable access detection when opcache.jit=1252 JIT/x86: disable register allocation for expected ++/-- overflow case. Fixed JIT failure after overflow detection (bench.php failure in 32-bit Replace --SKIPIF-- by --EXTENSIONS-- JIT/AArch64: INIT_FCALL and DO_FCALL support for optimized function code-generation (1204/1205) Replace "brk #0" with "NIY" (Not Implemented Yet) macro Use NIY_STUB instead of NIY in stubs Avoid useless "flags" byte extraction (it was inspired by unsuitable x86 Trmporary disable PROFITABILITY_CHECKS for better test coverage Added tests for ASSIGN Support for most "uncommon" ASSIGN cases Support for missed case in zend_jit_tail_handler(). Support for IS_LONG SUB and XOR. Support for bitwise operations with the same operands ($a ^ $a) Support for bitwise operations with non-integer arguments Support for RECV/RECV_INIT Support for passing extra arguments. Support for most cases of BOOL/BOOL_NOT/JMPZNZ/JMP[N]Z_EX Support for DOUBLE math Support for LONG math (except of MUL overflow detection) Remove dead conditions Fixed possible incorrect assumption if constant is a power of 2. Support for INC/DEC Support for CONCAT Support for comparison opcodes Support for BOOL/BOOL_NOT with DOUBLE operand Fixed copy/paste error Support for IS_IDENTICAL/IS_NOT_IDENTICAL Support for FETCH_DIM* and ASSIGN_DIM (exception handling is incomplete) Don't use FPR1 for consistency with x86 Fixed incorrect register usage Fixed copy/paste error Accurate RETVAL register usage Support for ISSET_DIM Support for ASSIGN_OP Support for ASSIGN_DIM_OP Support for SEND_VAL/SEND_VAR/SEND_REF/CHECK_FUNC_ARG/CHECK_UNDEF_ARGS Support for more cases in INIT_METHOD_CALL, DO_FCALL* and RETURN Get rid of some NIY traps in DynADM macros Support for ECHO with non-constant operand Support for missed IS_NOT_IDENTICAL cases Support for FREE and FE_FREE Support for DEFINED Support for STRLEN and COUNT Support for moving between allocated registers Support for FE_RESET and FE_FETCH Fixed reference-countoing. Use 32-bit registers. Support for FETCH_CONST Support for TYPE_CHECK Support for BIND_GLOBAL Support for FETCH_THIS, FETCH_OBJ, ASSIGN_OBJ and ASSIGN_OBJ_OP Get rid of testing NIY_STUBs Support for PRE/POST_INC/DEC_OBJ Get rid of NIY in spill code Support for VERIFY_RETURN_TYPE, ISSET_ISEMPTY_CV, IN_ARRAY and ADD with Implement exceptional stubs Get rid of NYI in call/return sequences Temporary diable JIT for SWITCH and MATCH instructions (SWITCH should Fixed INC/DEC_PROP (tests/classes/incdec_property_*.phpt) Fixed load of incorrect size Fixed map_ptr resolution Fixed compilation warnings Support for interupts Fixed type check Wrong register Fixed condition and avoid usage of non-temporary registers Disable unsuitable optimization Fixed incorrect efree() Create C call frames for helper functions that perform nested calls Fixed type checks and return value handling Added missed UNDEF_OPLINE_RESULT typo Duplicate return Missed instruction Make bit helpers to be inline Use "red zone" for HYBRID VM. Disable "red zone" usage (it leads to crashes). Support for ZTS Enable register allocator (it was disabled because ZREG_NUM wasn't Fixed some compilation warnings Implement obvious trace side exits Fixed incorrect register usage Implement trace patching Fixed assertion Support for tracin JIT (incomplete, but abble to run Zend/bench.php) Support for tracing JIT Fixed register allocation. Attempt to fix Windows build ZREG_REG0 is not available in x86 build Use TST_32_WITH_CONST macro Remove useless SAFE_MEM_ACC_WITH_UOFFSET* Fixed signed/unsigned comparison mess Moved tests from ext/opcache/tests/jit/arm64 to ext/opcache/tests/jit Fixed signed/unsigned comparison mess and add one missing case Temporary disable PROFITABILITY_CHECKS for better test coverage and to Skip 64-bit related tests on 32-bit platforms Don't optimize MUL into SHIFT if we have to check for overflow Improve code for MUL overflow detection (less instructions and less Optimize AArch64 code generator Introduce CMP_64_WITH_CONST/CMP_64_WITH_CONST_32/CMP_32_WITH_CONST macros Introduce ADD_SUB_64_WITH_CONST/ADD_SUB_64_WITH_CONST_32/ADD_SUB_32_WITH_CONST macros Use less temporary registers Use single instruction Imroved code for CV initialization Imroved code for constants loading Use B/BL intead of BR/BLR if possible Fix compilation warning Use proper macro 'lea' -> 'add' Fixed profile based JIT (opcache.jit=1225) Fixed JIT failure on Zend/tests/bug43175.phpt ZTS build, CALL VM. Fix compilation warnings Use better code for prologue and fix code generaion for "return -1". Peephole Code Optimization: Fixed incorrect stack size calculation (sizeof(zval) == 16) Fixed incorrect range check (missed sign bit) Reenable PROFITABILITY_CHECKS Implemented AArch64 support for GDB/JIT interface. Fixed JIT memory usage debug info (opcache.jit_debug=0x200) Allow to print JIT assemble without binary addresses (opcache.jit_debug=0x001) and with (opcache.jit_debug=0x401) for both ARM and x86. Remove unused TMP4. Use intra-precedure call scratch registers for TMP2 and TMP3. Use better code for trace exits. Don't store CPU registers that can't be used by deoptimizer. Use symbolic labels for BL and ADR instructions Fixed ZTS build. DynASM/ARM64: Add abiulity to plug-in generation of veneers to perform long jumps. Generate veneers to perform long jumps. JIT/AArch64: disable register allocation for expected ++/-- overflow case. Fixed format specifier Fix "store to misaligned address" ASAN warnings Fixed possible failure when repair after overflow detection Remove unnecessary #ifdef Fixed zend_long_is_power_of_two/zend_long_floor_log2 mess Correct DWARF frame description. Introduce and use ZEND_JIT_TARGET_X86 and ZEND_JIT_TARGET_ARM64 macros. JIT/AArch64: Rename B_IMM26 into B_IMM. DynASM/ARM64: Fixed incorrect ADRP instruction encoding JIT/AArch64: Use ADR/ADRP if it makes sense JIT/AArch64: Combine ADRP+ADD+LDR into ADRP+LDR DynASM/ARM64: Fixed incorrect ADRP instruction encoding (-4 => +4) JIT/AArch64: Fixed code alignment JIT: Don't include zend_jit_trace_info.jmp_table_size into zend_jit_trace_info.code_size JIT/AArch64: Link traces through exit tables. JIT/AArch64: Fixed DWARF frame description for helper stubs JIT/AArch64: Fixed incorrect MEM_LOAD usage Merge branch 'PHP-8.0' Fixed 32-bit x86 disassembler Fixed Zend/tests/type_declarations/union_types/incdec_prop.phpt failure Fix register save/restore around calls. (This fixes ext/opcache/tests/jit/fetch_dim_rw_001.phpt with -d opcache.jit=1202 without PROFITABILITY_CHECKS) DynASM/ARM64: Fix ADRP encoding with absolute address. Fix edge cases in JIT for ASSIGN_DIM_OP. Fix edge cases in JIT for ASSIGN_DIM_OP. Fixed ARM64 JIT build Resolve CG(map_ptr_base) in disassembler Separate common code JIT Refactoring: "http://" -> "https://" JIT/AArch64: Improved code generation for SL/SR and register allocation (#7096) JIT/AArch64: Use LSL instruction (DynAsm was fixed by JIT/AArch64: Complete logical_immediate_p() using DynAsm helpers JIT/AArch64: Use only reserved TMP registers for EG(jit_trace_num) assignment. JIT/AArch64: Use only reserved TMP registers for EG(vm_interrupt) checks. JIT/x86: Reuse code when MOD is going to be converted to AND. JIT/ARM64: Improve JIT for MOD instruction. JIT/ARM64: Remove redundand x86 specific optimization for recursive calls Typo Fixed bug #81096: Inconsistent range inferece for variables passed by reference Functions with static variables are not separated anymore. Reorder conditions and always mark methods in SHM as ZEND_ACC_IMMUTABLE Fix assertions Fixed incorrect map_ptr slots counting JIT: Avoid too aggressive loop unrolling JIT/ARM64: Fixed "may be used uninitialized" compilation warning JIT/ARM64: Fixed possible incorrect register allocation Move the whole "cold" path into the "cold" function. JIT/ARM64: Fixed possible incorrect exception catching in function JIT. JIT/ARM64: Fixed incorrect trace linking. FFI::CType reflection API Fixed bug #81256 (Assertion `zv != ((void *)0)' failed for "preload" with JIT) Fixed test Fixed test JIT: avoid $this check in closures called from methods Improve Range Inference Optimize "$x * 2" into "$x + $x" Make private functions "static" and remove unused zend_inference_check_recursive_dependencies(). Implement range inference for traces Use ZEND_HASH_FILL_* API. Eliminate "h < ht->nNumUsed" check in zend_hash_next_index_insert_new() JIT: Use zend_hash_index_lookup() instead of zend_hash_index_add_new(EG(uninitialized_zval)) Fixed incorrect condition Fixed conditional jump on uninitialised value (Zend/tests/match/028.phpt failure with function JIT) Better specialization for packed/hash arrays Dusk (1): Add array_is_list(array $array) function Dylan T (1): zend_compile.c: fix typo Florian Engelhardt (1): Create filter_null_on_failure.phpt Florian Sowade (1): Add dependency tracking for header files Frago9876543210 (1): Fixed failed test in extension skeleton Gabriel Caruso (3): Prepare for PHP 8.1 [ci-skip] Use HTTPS for links on PHP ini files Replaced deprecated `hw.ncpu` with `hm. logicalcpu` Ganesh Kandu (1): Fix typedef redefinition warnings. George Peter Banyard (119): Fix [-Wduplicated-cond] in MBString extension Fix [-Wduplicated-cond] in MySQLnd driver Fix [-Wduplicated-branches] in CLI SAPI Fix [-Wlogical-op] in IMAP Suppress bogus [-Wlogical-op] warning from GCC Add -Wno-logical-op compiler flag to Sodium extension Add compiler flags which aren't included in -Wall or -Wextra Modernize IMAP tests Make all IMAP fetch*() tests conflict with the default mailbox Fix parallel testing for IMAP Stabalize IMAP parallel testing, again Convert IMAP resource to object Add IMAP resource to object conversion to UPGRADING Optimize Dovecot configuration for IMAP tests Make imap_errors() test no hang EXPECTF imap_errors() test's authentication error Update hash for IMAP stubs after adding final qualifier Remove superfluous return statement. Implement Explicit octal notation for integers RFC Convert strcmp() usage to zend_string_equals_literal() Add/expand comments for PDO handlers Formalize pdo_dbh_check_liveness_func() return type to zend_result Boolify PDO's transaction handlers Boolify PDO's set_attribute driver function Boolify PDO's quoter handler Voidify PDO's closer handler Boolify PDO's preparer handler Voidify PDO's fetch_error handler Update UPGRADIN.INTERNALS Refactor PDO's quoter handler to return a zend_string Refactor PDO placeholder's quoted string to zend_string [skip-ci] Add minimal build instruction for Fedora Refactor PDO doer handler to use zend_string Refactor PDO's last inserted ID handler to use and return zend_string Remove unnecessary (char*) casts php_pdo_register_driver() might fail Use standard C99 64bits int types Use zend_string_equals() in PDO Remove usage of float keys in arrays Remove quicktester Use zend_string* & more legible API for php_get_display_errors_mode() Remove php_pdo_str_tolower_dup() function Voidify internal pdo_sqlstate_init_error_table() Boolify pdo_stmt_describe_columns() Boolify pdo_hash_methods() Boolify pdo_dbh_attribute_set() Add comment explaining empty default case Validate string is numeric for integer PDO attribute value Use standard PDO way for fetching integer attribute values Add API to fetch bool value for PDO attribute values Use zend_string_equals() API instead of strcmp() in main.c Use zend_string_equals() API instead of strcmp() in SOAP extension Use zend_string_equals() API instead of strcmp() in PGSQL extension Use zend_string_equals() API instead of strcmp() in Filter extension Use zend_string_equals() API instead of strcmp() in Date extension Use zend_string_equals() API instead of strcmp() in COM extension Use zend_string_equals() API instead of strcmp() in various places Drop unneessary if branch and adjust arg_num type [skip-ci] Update UPGRADING documents for the new argument for fputcsv() Align types with the output of zend_hash_num_elements() Fix necessary extensions list for OPcache test Add missing break; in Zlib extension Introduce pseudo-keyword ZEND_FALLTHROUGH Use zend_string_equals_(literal_)ci() API more often Refactor SNMP extension a bit Refactor dom_has_feature() to use zend_string* Fix SNMP Signal that the stream option passed is an error Use ZEND_FALLTHROUGH instead of a comment in PDO Drop -Wno-implicit-fallthrough compiler flag Fix test output due to float to string locale independent change Boolify _php_pgsql_detect_identifier_escape() and rename it Boolify _php_pgsql_link_has_results() Use ZEND_NUM_ARGS() explicitly Use ZEND_ASSERT() instead of plain assert() ValueError if lengths is less than 0 Formalize return type to zend_result for PGSQL_API functions Boolify do_exec() Refactor PGSQL extension to use zend_string* Introduce zend_error_unchecked() Convert IMAPConnection to IMAP\Connection Refactor php_date_initialize_from_hash() Throw directly instead of replacing error handler in ext/date (#6954) Remove unnecessary error handler replacement in SPL Refactor register_tick_function mechanism (#5828) Refactor register shutdown function mechanism Use uint32_t for number of variadic arguments in ZPP Mark various functions with void arguments. Do not reuse errno as local variable name Use standard function declaration style instead of K&R in libbcmath Use standard function signature instead of K&R in Intrl extension Specify function pointer signature for scanf implementation Fix [-Wstrict-prototypes] warning in PCNTL extension Fix remaining [-Wstrict-prototypes] warnings Add -Wstrict-prototypes compiler warning Remove 'register' type qualifier (#6980) Use zend_string_equals_* API in a couple of more place Fix test expectation now that -a doesn't work without readline Use equals OR equal instead of >= && <= Implement "Deprecate implicit non-integer-compatible float to int conversions" RFC. (#6661) Refactor spl_array_has_dimension_ex() Add proper EXTENSIONS section for tests in Zend/ Refactor SplFixedArray (#7168) Fix deprecated float to int tests Pure Intersection types (#6799) Deprecate using the implicit default PgSQL connection Use standard bool type instead of bool_int Use standard bool type instead of boolean_e Remove unused macro Refactor conversion function Use standard 64bit unsigned int type Use standard 64bit signed int type Drop register keyword Make syslog() binary safe Fix bug pointed out in feature request 81268 Fix intersection types being nullable via implicit forced nullability [skip-ci] Fixup UPGRADING documents [skip-ci] Fix comments and UPGRADING.INTERNALS for zend_type changes Refactor proc_open() implementation (#7255) Hao Sun (77): Initial support of JIT/arm64 Support failed JIT test case: assign_002.phpt Support failed JIT test case: assign_010.phpt Support failed JIT test case: assign_012.phpt Support failed JIT test case: assign_027.phpt Support failed JIT test case: assign_024.phpt Support failed JIT test case: assign_022.phpt Support failed JIT test case: assign_025.phpt Support failed JIT test case: assign_026.phpt Support failed JIT test case: assign_dim_op_001.phpt Support failed JIT test case: assign_dim_002.phpt Support failed JIT test case: assign_static_prop_001.phpt Support failed JIT test case: assign_036.phpt Support failed JIT test case: assign_035.phpt Support failed JIT test case: fetch_dim_func_args_001.phpt Support failed JIT test case: fetch_dim_r_002.phpt Support failed JIT test case: fetch_dim_rw_001.phpt Support failed JIT test case: fetch_obj_004.phpt Support failed JIT test case: fetch_obj_002.phpt Support failed JIT test case: fetch_obj_003.phpt Add necessary assertions on range for INIT_FCALL and DO_FCALL Fix one bug in macro IF_GC_MAY_NOT_LEAK Support failed JIT test case: fetch_obj_001.phpt Support failed JIT test case: cmp_001.phpt Support failed JIT test case: cmp_002.phpt Support failed JIT test case: cmp_004.phpt Support failed JIT test case: cmp_003.phpt Support failed JIT test case: shift_left_001.phpt Support failed JIT test case: shift_left_002.phpt Support failed JIT test case: shift_right_001.phpt Support failed JIT test case: shift_right_003.phpt Support failed JIT test case: mod_001.phpt Support failed JIT test case: send_ref_001.phpt Support failed JIT test case: send_val_001.phpt Support failed JIT test case: send_var_ex_001.phpt Support failed JIT test case: jmpz_001.phpt Support failed JIT test case: jmpz_ex_001.phpt Support failed JIT test case: reg_alloc_003.phpt Support failed JIT test case: reg_alloc_002.phpt Updates for commits between 121a0f7 and 12dcf34 Remove the duplicate macro DOUBLE_GET_ZVAL_DVAL Revisit the encoding of immediate Support LONG MUL with overflow detection Optimizing LONG MUL to SHIFT: refine the trigger condition and add overflow detection Remove the TODO comments for DOUBLE CMP Support failed test case: switch_jumptable.phpt Fix the encoding of immediate for logical instructions Add the helper to check whether an immediate is valid for logical instructions Remove the unnecessary 'bvs' check for IS_NOT_IDENTICAL case Optimizing LONG MUL to SHIFT: add overflow detection for x86 Support ZEND_JIT_ON_PROF_REQUEST mode Support ZEND_JIT_ON_HOT_COUNTERS mode Fix incorrect macro LDR_STR_PIMM Add the missing parts for macros ZVAL_COPY_CONST and ZVAL_COPY_CONST_2 Revisit 32-bit logical operations with constants Don't use TMP3 except ZTS Use ADD_SUB_IMM for macros ADD_SUB_*_WITH_CONST* Use macros CMP_*_WITH_CONST if possible Remove the deprecated macros Improve macro LONG_ADD_SUB_WITH_IMM Use fewer temporary registers if possible Fix commit 6e344ed: temporary register should be kept for GET_ZVAL_LVAL Revert the macro uses for Z_TYPE_P(val) in commit 1fff62b Fix commit 8143a49: macro ADD_SUB_64_WITH_CONST_32 should be used JIT/AArch64: Fix typo in commit dc0e259 (#7021) JIT/AArch64: [macos] Fix arguments to variadic function (#7023) JIT/AArch64: [macos][ZTS] Support fast path for tlv_get_addr (#7042) JIT/AArch64: Use D registers for floating-point operations (#7080) JIT/AArch64: Use ZR directly to zero FP register (#7081) JIT/AArch64: Code refactoring for macros (#7082) JIT/AArch64: [macos] Remove Clang warning due to -Wincompatible-pointer-types (#7098) JIT/AArch64: Optimize add+ldr to ldr (#7109) JIT/AArch64: Use 'shifted register' if available (#7108) JIT/AArch64: Fix codestyle issues (#7125) JIT/AArch64: Use 'tbnz/tbz' to check the signedness (#7123) JIT/AArch64: Support shifted immediate (#7165) Fix a typo in function execute_ex (#7315) Himanshu (1): Exclude more text-only paths from azure pipelines (#6876) Ilija Tovilo (3): Add tokenizer_data_gen to build process Implement enums Add enums to UPGRADING [ci skip] Jakub Zelenka (10): Bump minimal OpenSSL version to 1.0.2 Fix indent in FPM openmetrics status Upadate NEWS and UPRADING with info about FPM openmetrics format addition Update NEWS for FPM process renaming on macOS Fix types in FPM status openmetrics format Do not check exact values of unstable metrices in FPM status test Add extra run test for pm.max_spawn_rate Update NEWS and UPGRADING for FPM addition of pm.max_spawn_rate Sync the FPM openmetrics status with php-fpm_exporter Make CertificateGenerator not dependent on external config in OpenSSL 3.0 Jan-E (1): Windows: allow GD ext without avif.dll Janakarajan Natarajan (1): Use arm64-graviton2 on Travis (#7016) Javier Eguiluz (3): Fix some typos (#7320) Fix some mismatches in preprocessor directive comments Remove a redundant expression Jeremy Mikola (1): Include class name in Serializable deprecation message Joe Watkins (36): update release process doc (#6829) Revert "Exclude more text-only paths from azure pipelines (#6876)" exclude markdown ReflectionFunctionAbstract::getClosureUsedVariables note in upgrading for b227a722859e83fdba230f746477f6322ae33609 fix stub for pcntl_rfork Fix bug #24214 implement access to skip_last in user API for backtrace fix optimizer pass registration test Revert "Fix bug #24214 implement access to skip_last in user API for backtrace" move zend_vm_stack_new_page into header for sharing with fibers ditch function from zend_fiber drop phpdbg web helper extension and wait command (#7144) fix news Set BUILD_CC for phpize ditch remote Fix #81135 unknown help topic in phpdbg fails assertion Fix #81136 opcache header not installed, causing shared build to fail Revert "hrtime implementation update for Mac" reset blocking state on init Adds zend_fiber_startup at the right stage, moves setting of switch hooks remove specialized printing from phpdbg (#7156) Fix bug #81163 __sleep allowed to return non-array missing news/upgrading entry Fix #81202 powerpc64 build fails on fibers Fix bug #81200 ReflectionMethod::isStatic belongs on ReflectionFunctionAbstract replace phpdbg custom opcode dumper with O+ dump (#7227) Fix bug #81237 comparison of fake closures doesn't work Add first-class callables Not serializable flag permeation Drop serial denier functions drop unused header in fibers more fiber notifications (#7293) Extend resource reservation to Fibers (#7292) Fix bug #81303 improve match errors Drop TsHashTable (#7351) Fix bug #81280 refuse to allow unicode chars in prompts Josh Soref (1): Fix spelling and grammar mistakes Juliette (1): UPGRADING: update information re: return type for internal methods (#7182) K (5): SplHeap: replace zend_parse_parameters with ZEND_PARSE_PARAMETERS* macros SplPriorityQueue performance improvements (#6859) Speed up array_column for consecutive objects of the same class Simplify unpack logic (#6908) Optimize unpack() for named fields (#6958) Kamil Tekiela (22): Fix typos in fetch_all error message Remove unused properties in mysqlnd (#6849) Deprecate unused mysqli constants (#6850) Mysqli bind in execute (#6271) Silence the deprecation notice on var_dump Add ZEND_ASSERT to stmt->errorCode Add test case for errorCode() Implement mysqli_fetch_column (#6798) Add error reporting to mysqli_options (#7036) Fix typo, there is no MySQL 8.2.10 Fix libmysql test cases (#7097) Fix broken test due to missing skipif.inc optimize skip condition for the test Sccp new functions for ct (#7220) Deprecate autovivification on false Remove wrappers for *printf functions (#7313) Remove mysqlnd_field_type_name Remove get_parameter_metadata Drop mysqlnd statistics triggers Fix typo [no-ci] Fix typos (#7327) Replace macro with inline function (#7365) Kennedy Tedesco (1): Use ZVAL_TRUE() directly KsaR (1): Update http->https in license (#6945) Levi Morrison (8): Remove very old -no-cpp-precomp compatibility flag on Mac Fix ubsan error on Mac Skip invalid file descriptor test on Mac Document .dtor_obj and .free_obj Sort some decls in spl_iterators.h Add const to zend_extension_version_info.build_id Revert "Revert "Revert "[skip-ci] Fix typo""" Remove leading underscore for _zend_hash_find_known_hash (#7260) Marco Pivetta (1): Make ReflectionProperty/Method always accessible Mark Gallagher (1): run-tests: Fix warning when specifying xdebug as a required extension Markus Staab (1): Fix typo [ci skip] Martin Schröder (7): Alternative Fiber Internals Refactoring (#7101) Add fiber type to better support custom fiber APIs (#7105) Unify control & data transfer between fibers (#7120) Destroy previous fiber context in trampoline as needed (#7143) Do not expose fiber VM state management (#7170) Flexible fiber bailout handling (#7163) Implemented Fiber GC handler Matt Brown (1): Implement never return type Matteo Beccati (1): Fix test on non-UTC setups Max Semenik (14): run-tests.php: move JUnit stuff into a class run-tests: fix JUnit counts Remove stray mentions of mbstring.func_overload CI: add --depth 1 to git clone for speed run-tests: add skip cache run-tests: drop support for ancient Valgrind versions Fix E_DEPRECATED in zend_vm_gen.php Update mysqli tests to work with newer MySQL server run-tests.php: class for test file loading run-tests: use the EXTENSIONS section for skipping Migrate skip checks to --EXTENSIONS--, p1 Migrate skip checks to --EXTENSIONS--, p2 Migrate skip checks to --EXTENSIONS--, p3 Migrate skip checks to --EXTENSIONS--, p4 Meletis Flevarakis (1): Verify exception on ZipArchive::getExternalAttributesName when $name is empty (#7230) Michael Voříšek (5): Remove spaces around version built type Remove no longer used "log_errors_max_len" ini directive (#6838) Remove no longer used "log_errors_max_len" ini directive (#6838) Remove randominess from spl_object_hash Fix typo in enum test (#7368) Mike Pall (6): DynASM/ARM64: Add VREG support. DynASM: Fix global label references DynASM/ARM64: Add .long expr. Add .quad/.addr expr + refs. DynASM: Bump version to 1.5.0. DynASM/ARM64: Fix LSL/BFI* encoding with variable shifts. DynASM/x86: Add missing escape in pattern. Máté Kocsis (85): Add support for generating class entries from stubs Generate class entries for a few extensions Generate class entries from stubs for another batch of extensions Implicitly enable function entry generation when class entry generation is enabled Generate ext/intl class entries from stubs Remove a few more unnecessary @generate-function-entries annotations Enable class entry generation for sapi extensions Generate zend class entries based on stubs Generate class entries from stubs for oci8, odbc, openssl, pcntl, pdo, pgsql Generate class entries from stubs for phar, posix, pspell, readline, reflection, session, shmop Generate class entries for snmp, soap, sockets, sodium, sqlite3, sysv*, tidy Improve class entry generation Generate class entries from stubs for ldap, libxml, mbstring and mysqli Add support for generating properties with union type of multiple classes Generate ext/spl class entries from stubs Generate class entries from stubs for com, standard, xmlreader, xmlwriter, xsl, zip, Zend Declare XMLReader properties Fix bug #80816 Document the removal of alias class entries from ext/spl Use typed properties in ext/mysqli Promote DOM invalid state errors during property access Declare PDORow::queryString property Update mysqli stub hash Convert resources to objects in ext/ldap Update mysqli arginfo hash Use typed properties in ext/curl Use typed properties in php_user_filter Use typed property in RegexIterator Use typed property in PDOException Get rid of private final methods (#6892) Make some exception properties typed Use typed properties in ext/zip Add reproducer for possible issue with object return type inheritance (#6961) Convert resources to objects in ext/pgsql Add support for tentative return types of internal methods Declare SNMP properties Declare dynamic properties in ext/dom Declare tentative return types for ext/reflection Declare tentative return types for ext/xmlreader Declare tentative return types for ext/xmlwriter Declare tentative return types for ext/xsl Declare tentative return types for ext/pdo Declare tentative return types for ext/tidy Declare tentative return types for ext/simplexml Declare tentative return types for ext/sqlite3 Update mysqli stub hash Declare tentative return types for ext/soap Declare typed properties in ext/dom Declare tentative return types for ext/curl Declare tentative return types for ext/fileinfo Fix the signature of ini_alter() Do not verify the signature of ReflectionEnumUnitCase::getValue() Declare tentative return types for ext/mysqli (#6998) Remove unnecessary return doc comment from PDOStatement::errorInfo() Declare tentative return types for ext/json (#7051) Declare tentative return types for ext/zip (#7053) Promote "Session is not active" warning to exception Declare tentative return types for ext/session (#7005) Declare tentative return types for ext/snmp Declare tentative return types for ext/phar (#7052) Declare tentative return types for ext/oci8 (#7070) Declare tentative return types for ext/standard (#7065) Mention ReturnTypeWillChange attribute in the error message (#7183) Declare tentative return types for ext/intl (#6986) Add support for final class constants Declare tentative return types for ext/spl - part 1 (#7115) Declare tentative return types for ext/spl - part 2 Add support for the never type in gen_stub.php Declare the $value param of define() as mixed Declare tentative return types in ext/spl - part 3 (#7239) Deprecate oci8.old_oci_close_semantics (#7258) Declare tentative return types for Zend (#7251) Fix some smaller formatting inconsistencies in stubs Actually, abstract methods don't have a body Declare tentative return types for ext/dom (#6985) Indent stubs inside global namespace blocks (#7261) Use single line phpdoc in stubs where possible Migrate to PHP-Parser 4.12.0 and regenerate some arginfos Add support for generating readonly properties via stubs (#7297) Fix oci8.old_oci_close_semantics deprecation is always displayed Display the readonly property modifier when printing reflection info Validate that promoted readonly properties have a type Improve class inheritance error messages (#7307) Add support for generating classynopses from stubs Fix another DOMNameSpaceNode casing issue Add support for replacing class synopses based on stubs (#7340) Nikita Popov (657): Add scheduled builds to yaml pipeline Add GC support for PDO driver data Sanity check zpp max argument count Remove unused global Don't use global for array_walk_fci Add zend_accel_error_noreturn() helper Use zend_accel_error_noreturn in more places Don't allow properties on former resource objects Remove unused single.leaf member Remove unused pasv_listen() function Accept zend_string in highlight_string API Fix zpp for GdFont|int Use ephemeral port in ftp tests Fix pasv_port determination Use ephemeral port in more server tests Allow running session tests in parallel waitpid in ftp server tests Remove dated results from ext/hash/bench.php Check for null dbh methods in get_gc Add --repeat testing mode Use pkg-config for libargon2 Don't pass null to strlen() Determine run-tests executables consistently Don't try to open null file Ensure consistent error message in phpdbg parser Don't disable phpdbg on macos Increase timeout on msan job Fix signed/unsigned warnings in PDO ODBC Allow building dblib with machine-dependent libdir Fix MHANDLEFUNC signature Fix compile warnings in PDO Firebird PDO: Store/pass query_string as zend_string MySQLnd: Remove fail thresholds from infallible allocators MySQLnd: Remove some unnecessary allocator failure checks Remove MYSQLND_STRING_TO_INT_CONVERSION define Remove more OOM checks mysqlnd_error_info_init() cannot fail Use zmm for row_c data MySQLnd: Remove unused fetch_field_data method Remove mysqlnd_extension enum MySQLnd: Simplify management of zval row buffer MySQLnd: Drop free_result_internal Fix ATTR_ORACLE_NULLS with PARAM_ZVAL Drop support for max_length in mysqli_fetch_fields() MySQLnd: Clean up and optimize mysqlnd result set handling PDO MySQL: Use native types for results MySQLnd: Avoid some reallocations in PS decoder MySQLnd: Fix potential leak when reading cursor MySQLnd: Remove mnd_malloc/free etc. PDO MySQL: Use correct type when setting INT_AND_FLOAT_NATIVE PDO MySQL: Make test libmysql compatible Make mysqli_stmt_next_result available under libmysql Move fetch_all implementation out of mysqlnd Add basic libmysqlclient CI job Try to fix azure pipelines config Remove unused pdo_pgsql_column member Remove unused smax member from memory stream Back memory stream by a zend_string Fix leak PDO: Honor ATTR_STRINGIFY_FETCHES for booleans Build PDO odbc on azure PDO Firebird: Fix uninitialized var warning Show slow SKIPIF sections as well Build PDO Firebird on Azure Suppress zend_signals warnings if pdo_firebird loaded PDO Firebird: Use recreate table Fix bug_69356.phpt for firebird Add CONFLICTS file for PDO firebird tests Don't use explicitly nullable column in bug_73234.phpt Rewrite PDO result binding Support native types in PDO SQLite Skip tests under asan Export php_getenv() API Use single typedef for curl callbacks Don't allocate php_curlm_handlers separately Don't allocate php_curl_handlers separately Remove unused still_running member Remove method member from php_curl_callback Manually store CURLOPT_PRIVATE data Fix curl_getinfo() funcinfo Fix lexing of zero octal followed by whitespace Fix use-after-scope in SplObjectStorage::unserialize() Restrict allowed usages of $GLOBALS Remove some INDIRECT handling in VM Remove some INDIRECT handling in standard library Remove unnecessary INDIRECT checks in JIT helpers Fold dirname in sccp for non-windows platforms Remove freeq member Switch bound_param_map to zend_string Switch name variable to zend_string Remove some unnecessary zend_delete_global_variable uses Fuzzer: Gracefully handle hashes that cannot be serialized Remove unused bind_hash member Fix INDIRECT elements leaked by SPL __serialize implementations Remove SEPARATE_ARG_IF_REF macro Remove SEPARATE_ZVAL_IF_NOT_REF() macro Remove Z_PARAM separate params where they don't make sense Make convert_to_*_ex simple aliases of convert_to_* Remove zend_locale_sprintf_double() Remove the convert_to_long_base function compare_function() returns zend_result Fix misleading indentation warning in pdo_oci Build PDO OCI and OCI8 on azure Print "interned" instead of fake refcount in debug_zval_dump() Replace zend_bool uses with bool Check for append to $GLOBALS Limit unserialization element count more aggressively Protect against buffer overflow in xxhash unserialization Fix $GLOBALS[] in isset and unset Fix memsize check for xxh32 Remove redundant posix_getrlimit_basic.phpt gen_stub: Automatically add function name to exceptions gen_stub: Allow additional text after @return gen_stub: Compare phpdoc return type in --verify gen_stub: Don't use $aliasMap during verification gen_stub: Also verify implementation-alias Rename zend-test to zend_test Accept zend_string in zend_prepare_string_for_scanning Disable jit in observer opline test Improve error message for leading comma in keyed list assignment Fix parsing of semi-reserved tokens at offset > 4 GB Remove unnecessary TRUE/FALSE defines in tidy Add missing resource key warning for unset() Fix proptable canonicalization bypass in ArrayObject Remove unused mmap member in phpdbg_file_source Move optimizer into core Create .php and .sh on valgrind failure Skip two gettext tests under --repeat Add support for string keys in array unpacking Handle warnings during sccp function evaluation Allow all scalar types in ini_set() Deprecate passing null to non-nullable arg of internal function Revert "Implement fetching TLS TCB offset on MacOS" Used typed properties for reflection $name and $class Use typed proprety for Transliterator::$id Delref only after successful allocation Fix quadratic slowdown under asan in timelib Fix unused variable warning Avoid writing zend_vm_opcodes.h if it did not change Don't use unmangled name if property not found Initialize property to UNDEF on unserialize overwrite Fix static variable behavior with inheritance Fixed bug #75474 Fixed bug #53826 Fix crash during default value evaluation Fix closure GC handler for fake closures Don't resolve special class names Fixed bug #80761 Remove resize_chunk API Remove free_chunk API Fix Windows build Allow pointer to end of memory in IS_UNSERIALIZED() Clarify types in XmlReader property handling Reference dynamic functions through dynamic_defs Fixed bug #80808 Explicitly print re…
(only affects temporary expressions, not $cv)