Revision tags: php-8.0.7RC1 |
|
#
5fe20625 |
| 18-May-2021 |
Dmitry Stogov |
Correct DWARF frame description. Now GDB correctly shows backtraces that involves JIT-ed code for functional/tracing JIT, HYBRID/CALL VM, x86/AArch64 CPU. (opcache.jit_debug=0x100 sh
Correct DWARF frame description. Now GDB correctly shows backtraces that involves JIT-ed code for functional/tracing JIT, HYBRID/CALL VM, x86/AArch64 CPU. (opcache.jit_debug=0x100 should be set).
show more ...
|
Revision tags: php-7.4.20RC1, php-8.0.6, php-7.4.19 |
|
#
2b9c2886 |
| 28-Apr-2021 |
Dmitry Stogov |
ZREG_REG0 is not available in x86 build |
#
c114e491 |
| 28-Apr-2021 |
Dmitry Stogov |
Support for tracing JIT |
Revision tags: php-7.4.18, php-7.3.28, php-8.0.5, php-8.0.5RC1, php-7.4.18RC1 |
|
#
657b00d7 |
| 09-Apr-2021 |
haosun01 |
Hybrid use of registers 1. one **hybrid** solution of register usage After the discussion with Dmitry, we may want to propose one hybrid solution of register usage. 1) Follo
Hybrid use of registers 1. one **hybrid** solution of register usage After the discussion with Dmitry, we may want to propose one hybrid solution of register usage. 1) Following the x86 implementation, we define REG0/1/2 to be the scratch registers. Clever tricks are utilized in x86 implementation for better register allocation. Note that we define REG0/1/2 as x8/9/10. One reason is that R0 and FCARG1 should be distinguished. 2) Temporary registers are also reserved(i.e. they are excluded from the candidates of register allocator), and they would be used due to the different addressing modes in AArch64. 2. update the 'make clean' target. 3. remove the unnecessary AArch64 related macros in zend_jit_internal.h. [ci skip] Change-Id: I627157b88b2344530d705751eb7f73a223ed83e5 CustomizedGitHooks: yes
show more ...
|
#
c94bb373 |
| 13-May-2021 |
Dmitry Stogov |
Fixed indirect variable access detection when opcache.jit=1252 This fixes `make test TESTS="-d opcache.jit=1252 --repeat 3 Zend/tests/global_with_side_effect_name.phpt"` |
#
01b3fc03 |
| 06-May-2021 |
KsaR |
Update http->https in license (#6945) 1. Update: http://www.php.net/license/3_01.txt to https, as there is anyway server header "Location:" to https. 2. Update few license 3.0 to 3.01 as
Update http->https in license (#6945) 1. Update: http://www.php.net/license/3_01.txt to https, as there is anyway server header "Location:" to https. 2. Update few license 3.0 to 3.01 as 3.0 states "php 5.1.1, 4.1.1, and earlier". 3. In some license comments is "at through the world-wide-web" while most is without "at", so deleted. 4. fixed indentation in some files before |
show more ...
|
Revision tags: php-8.0.4RC1, php-7.4.17RC1, php-8.0.3, php-7.4.16, php-8.0.3RC1, php-7.4.16RC1, php-8.0.2, php-7.4.15, php-7.3.27, php-8.0.2RC1, php-7.4.15RC2, php-7.4.15RC1, php-8.0.1, php-7.4.14, php-7.3.26, php-7.4.14RC1, php-8.0.1RC1, php-7.3.26RC1, php-8.0.0, php-7.3.25, php-7.4.13, php-8.0.0RC5, php-7.4.13RC1, php-8.0.0RC4, php-7.3.25RC1, php-7.4.12, php-8.0.0RC3, php-7.3.24, php-8.0.0RC2, php-7.4.12RC1, php-7.3.24RC1, php-7.2.34, php-8.0.0rc1 |
|
#
5caaf40b |
| 29-Sep-2020 |
George Peter Banyard |
Introduce pseudo-keyword ZEND_FALLTHROUGH And use it instead of comments |
#
7b2b9b40 |
| 25-Mar-2021 |
Dmitry Stogov |
Improved JIT for TYPE_CHECK opcode |
#
c290de15 |
| 23-Mar-2021 |
Dmitry Stogov |
Move x86 dependent code out from platform independed parts. |
#
2d0e2733 |
| 18-Mar-2021 |
Nikita Popov |
Support prototypes in call graph Even if we don't know the exact method being called, include it in the call graph with the is_prototype flag. In particular, we can still make use of
Support prototypes in call graph Even if we don't know the exact method being called, include it in the call graph with the is_prototype flag. In particular, we can still make use of return types from prototype methods, as PHP 8 makes LSP violations a hard error. Most other places are adjusted to skip calls with !is_prototype. Maybe some of them would be fine, but ignoring them is conservative.
show more ...
|
#
5c78e873 |
| 17-Feb-2021 |
Dmitry Stogov |
Merge branch 'PHP-8.0' * PHP-8.0: Fixed bug #80745 (JIT produces Assert failure and UNKNOWN:0 var_dumps in code involving bitshifts)
|
#
7f68a7af |
| 17-Feb-2021 |
Dmitry Stogov |
Fixed bug #80745 (JIT produces Assert failure and UNKNOWN:0 var_dumps in code involving bitshifts) |
Revision tags: php-7.4.11, php-7.3.23, php-8.0.0beta4, php-7.4.11RC1, php-7.3.23RC1, php-8.0.0beta3, php-7.4.10, php-7.3.22, php-8.0.0beta2, php-7.3.22RC1, php-7.4.10RC1, php-8.0.0beta1, php-7.4.9, php-7.2.33, php-7.3.21, php-8.0.0alpha3, php-7.4.9RC1, php-7.3.21RC1, php-7.4.8, php-7.2.32, php-8.0.0alpha2, php-7.3.20, php-8.0.0alpha1, php-7.4.8RC1, php-7.3.20RC1, php-7.4.7, php-7.3.19, php-7.4.7RC1, php-7.3.19RC1 |
|
#
d9510342 |
| 16-May-2020 |
Tyson Andre |
Optimize ZEND_COUNT opcodes on arrays in the jit Avoid the overhead of a call and checking types when the argument is definitely an array. Avoid the overhead of gc when `__destruct`
Optimize ZEND_COUNT opcodes on arrays in the jit Avoid the overhead of a call and checking types when the argument is definitely an array. Avoid the overhead of gc when `__destruct` won't get called. This seemed cheap enough to check for in the jit. Because of https://wiki.php.net/rfc/restrict_globals_usage we can be sure in the ZEND_COUNT handler that the array count does not have to be recomputed in php 8.1. The below example took 0.854 seconds before the optimization, and 0.564 seconds after the optimization, giving the same result ```php <?php /** @jit */ function bench_count(int $n): int { $total = 0; $arr = []; for ($i = 0; $i < $n; $i++) { $arr[] = $i; $total += count($arr); } return $total; } function main() { $n = 1000; $iterations = 50000; $start = microtime(true); $result = 0; for ($i = 0; $i < $iterations; $i++) { $result += bench_count($n); } $elapsed = microtime(true) - $start; printf("Total for n=%d, iterations=%d = %d, elapsed=%.3f\n", $n, $iterations, $result, $elapsed); } main(); ``` Before ```asm mov $0x7feb8cf8a858, %r15 mov $ZEND_COUNT_SPEC_CV_UNUSED_HANDLER, %rax call *%rax ``` After ```asm mov 0x70(%r14), %rdi - Copy the count from the `zend_array*` pointer mov %rdi, (%rax) - Store the count in the destination's value mov $0x4, 0x8(%rax) - Store IS_LONG(4) in the destination's type ``` And add tracing jit support Closes GH-5584
show more ...
|
#
3e01f5af |
| 15-Jan-2021 |
Nikita Popov |
Replace zend_bool uses with bool We're starting to see a mix between uses of zend_bool and bool. Replace all usages with the standard bool type everywhere. Of course, zend_bool
Replace zend_bool uses with bool We're starting to see a mix between uses of zend_bool and bool. Replace all usages with the standard bool type everywhere. Of course, zend_bool is retained as an alias.
show more ...
|
#
3edf5c96 |
| 14-Jan-2021 |
Dmitry Stogov |
Fixed bug #80422 (php_opcache.dll crashes when using Apache 2.4 with JIT) |
#
35e0506a |
| 11-Jan-2021 |
Dmitry Stogov |
Add guard if lvalue of assignment may be a reference, but wasn't a reference during recording |
#
23bbff2b |
| 24-Dec-2020 |
Dmitry Stogov |
Eliminate redundand comparison insructions |
#
dde55729 |
| 10-Dec-2020 |
Dmitry Stogov |
Eliminate some repeatable IS_REFERENCE checks |
#
e9f9e9f8 |
| 09-Dec-2020 |
Dmitry Stogov |
Perform early guard type check for result of FETCH_CONSTANT |
#
1674c96c |
| 01-Dec-2020 |
Dmitry Stogov |
Bug #80447 (Strange out of memory error when running with JIT) |
#
5f36d049 |
| 30-Nov-2020 |
Dmitry Stogov |
Fixed "may be used uninitialized" compilation warnings |
#
3697648b |
| 26-Nov-2020 |
Dmitry Stogov |
Eliminate deafd stores |
#
586ccfdf |
| 23-Nov-2020 |
Dmitry Stogov |
Fixed use-after-free in PHPUnit tests |
#
c0d1dbcb |
| 20-Nov-2020 |
Dmitry Stogov |
Fixed incorrect TRACE_FRAME_MASK_NESTED flag setting |
#
069f9cba |
| 19-Nov-2020 |
Dmitry Stogov |
Added missing deoptimization code for trampoline handling |