master
Commits on Jun 4, 2021
-
-
-
-
JIT/AArch64: [macos] Remove Clang warning due to -Wincompatible-point…
…er-types (#7098) The following warning message would be produced for macOS on Apple silicon. ``` php-src/ext/opcache/jit/zend_jit_arm64.dasc:15356:79: warning: incompatible pointer types passing 'ptrdiff_t *' (aka 'long *') to parameter of type 'int64_t *' (aka 'long long *') [-Wincompatible-pointer-types] const char *name = zend_jit_disasm_find_symbol((ptrdiff_t)cp + offset - 4, &offset); ^~~~~~~ ext/opcache/jit/zend_jit_disasm.c:210:58: note: passing argument to parameter 'offset' here int64_t *offset) { ^ ``` Flag -Wincompatible-pointer-types is enabled by default in Clang [1], but not in GCC [2]. Adding explicit type conversion would remove this warning. [1] https://releases.llvm.org/10.0.0/tools/clang/docs/DiagnosticsReference.html#wincompatible-pointer-types [2] https://gcc.gnu.org/onlinedocs/gcc-9.1.0/gcc/Warning-Options.html#Warning-Options Change-Id: Ia0777a5731ba8f0764e232c0d47aeaab076d13f5
-
JIT/AArch64: Improved code generation for SL/SR and register allocati…
…on (#7096) - perform constant shift by single instruction TODO: DynAsm: can't encode "lsl x0, x0, #var" !!! - avoid usage of REG1 for variable shift (it was x86 limitation) - enable register reuse for SL/SR instructions - remove special scratch register handling for SL/SR (it was x86 limitation) - Remove need for extra scratch registers. AArch64 JIT backend don't use extra register for constants. It uses reserved TMP registers.
Commits on Jun 3, 2021
-
Split fiber status and flags (#7094)
Co-Authored-By: twosee <twose@qq.com>
-
-
Each of these tests took more than ten seconds on a recent AppVeyor CI run; that appears to qualify them to be marked as slow tests. Closes GH-7077.
-
pcntl_rfork: following-up suggestions.
removing RFMEM constant. treating beforehand the only case where rfork would return EINVAL.
-
-
- Move duplicate system independent functions from zend_jit_x86.dasc and zend_jit_arm64.dasc into zend_jit.c * zend_jit_is_constant_cmp_long_long() * zend_jit_needs_call_chain() * skip_valid_arguments() * zend_ssa_cv_info() * zend_jit_may_avoid_refcounting() * zend_get_known_property_info() * zend_may_be_dynamic_property() - Move common definitions from zend_jit_x86.dasc and zend_jit_arm64.dasc into zend_jit.c * GCC_GLOBAL_REGS * PROFITABILITY_CHECKS * BP_JIT_IS * sp_adj_kind * sp_adj[] - Remove unused DynAsm macros * ADDR_CMP (arm64) - Inline and remove DynAsm macros used once * LOAD_BASE_ADDR (arm64 and x86) * PUSH_BASE_ADDR (x86) * MEM_OP3_3 (x86) * SET_Z_PTR (x86) - Rename DynAsm macros * MEM_LOAD_OP_STORE -> MEM_UPDATE (arm64) * MEM_LOAD_OP_STORE_ZTS - > MEM_UPDATE_ZTS (arm64) * ADDR_OP1 -> PUSH_ADDR (x86) * ADDR_OP2_2 -> ADDR_STORE and ADDR_CMP (x86) * MEM_OP2_1_ZTS -> MEM_STORE_ZTS, MEM_CMP_ZTS, MEM_UPDATE_ZTRS (x86) * MEM_OP2_2 -> MEM_LOAD and MEM_LOAD_OP (x86) * MEM_OP2_2_ZTS -> MEM_LOAD_ZTS and MEM_LOAD_OP_ZTS (x86) * SSE_AVX_OP -> DOUBLE_CMP (x86) * SSE_GET_LONG -> DOUBLE_GET_LONG (x86) * SSE_GET_ZVAL_LVAL -> DOUBLE_GET_ZVAL_LVAL (x86) * SSE_GET_ZVAL_LVAL -> DOUBLE_GET_ZVAL_LVAL (x86) * SSE_GET_ZVAL_DVAL -> DOUBLE_GET_ZVAL_DVAL (x86) * SSE_SET_ZVAL_DVAL -> DOUBLE_SET_ZVAL_DVAL (x86)
-
the function fn_complete in libedit null checks matches[2]
Commits on Jun 2, 2021
-
-
This test case did 100,000 includes of a non existing file to show the memory leak; this is not necessary, because after the first failing include, memory is not supposed to increase for further includes. Closes GH-7088.
-
Improve interface non-public method error message
Currently interface methods with visibility `private` or `protected` fail with an error message: Access type for interface method A::b() must be omitted However, explicitly setting visibility `public` is allowed and often desired. This commit updates the error message to: Access type for interface method A::b() must be public
-
JIT/AArch64: Code refactoring for macros (#7082)
* JIT/AArch64: Code refactoring for macros Update the comments and rename arguments for some macros. The following macros are renamed: SAFE_MEM_ACC_WITH_UOFFSET -> MEM_ACC_64_WITH_UOFFSET SAFE_MEM_ACC_WITH_UOFFSET_32 -> MEM_ACC_32_WITH_UOFFSET SAFE_MEM_ACC_WITH_UOFFSET_BYTE -> MEM_ACC_8_WITH_UOFFSET MEM_STORE_BYTE_ZTS -> MEM_STORE_8_ZTS MEM_STORE_ZTS -> MEM_STORE_64_ZTS MEM_LOAD_ZTS -> MEM_LOAD_64_ZTS MEM_LOAD_BYTE_ZTS -> MEM_LOAD_8_ZTS ADD_IP_FROM_CST -> ADD_IP_WITH_CONST The following macros are deprecated and removed: SET_Z_PTR, GET_Z_W2, SET_Z_W2 Change-Id: I767cf70f373e5f5a1090079e70f8e953a654da00 * Use MEM_ACCESS_*_WITH_UOFFSET It's more accurate to use "MEM_ACCESS_*_WITH_UOFFSET" than "MEM_ACC_*_WITH_UOFFSET". Change-Id: I71479a809008848b61c4786016e6c10110e6aa8b * Revert the updates for macros ADD_IP_WITH_CONST and LONG_ADD_SUB_WITH_IMM As pointed by Dmitry, (int32_t) (1LL << 32) would make the assertion "TRUE", which is not expected by us. Change-Id: I767cf70f373e5f5a1090079e70f8e953a654da00
-
-
Merge branch 'PHP-7.4' into PHP-8.0
* PHP-7.4: Try to fix libxml 2.9.12 tests
-
Try to fix libxml 2.9.12 tests
The test expectations here were for PHP 8.0, try to adjust them for PHP 7.4.
-
Add test for unsetting ReflectionClassConstant::$name
This test was supposed to be part of 50b4a7a.
Commits on Jun 1, 2021
Commits on May 31, 2021
-
Implement "Deprecate implicit non-integer-compatible float to int con…
…versions" RFC. (#6661) RFC: https://wiki.php.net/rfc/implicit-float-int-deprecate Co-authored-by: Nikita Popov <nikita.ppv@gmail.com>
-
-
Fix output buffer discard on memory limit
Move this code directly into the error handler, and check the heap->overflow flag. Discarding output here allows us to print the normal memory limit message to standard output. Otherwise nothing would be printed unless a different log medium was used, which makes for a suboptimal debugging experience.
-
Don't automatically adjust memory_limit to 2M
As PHP has a minimum memory usage of 2M (size of allocator chunk), setting a limit below that value is not meaningful and will be automatically rounded up to the chunk size. Rather than doing this silently, show the newly introduced error message. The memory limit had to be increased to 2M for a number of tests. tests/lang/bug45392 has been marked as XFAIL. This old bugfix is not working as intended. The memory limit in main's `PG(memory_limit)` differs from the one in zend_alloc. In zend_alloc the `AG(mm_heap)->limit` is defined as `max(passed_value, ZEND_MM_CHUNK_SIZE)`. The check made in an unclean shutdown will never be true unless the memory limit is lower than ZEND_MM_CHUNK_SIZE, which happened to be the case in the test. https://bugs.php.net/bug.php?id=45392 fcc0fdd
-
Remove zend_set_memory_limit_ex() API
This was added temporarily for the PHP-8.0 branch to avoid an ABI break.
-
Merge branch 'PHP-7.4' into PHP-8.0
* PHP-7.4: Fixed bug #81070 This is a non-trivial merge. To avoid an ABI break, a new zend_set_memory_limit_ex() function is added.
-
When the memory limit is reduced using an `ini_set("memory_limit", ..)` below the currently allocated memory, the out-of-memory check overflowed. Instead of implementing additional checks during allocation, `zend_set_memory_limit()` now validates the new memory limit. When below the current memory usage the ini_set call will fail and throw a warning. This is part of GH-7040. -
Skip pcntl_rfork() in arginfo test
Same as pcntl_fork(), we don't want to have this side-effect in this mass-test.
-
Allow initializing assignment to PDOStatement::$queryString
If the object is not created through PDO::prepare(), e.g. in a mock scenario, it should still be possible to initialize the $queryString property. See bug #81084.