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 |
#
9841e8e4 |
| 17-Nov-2020 |
Dmitry Stogov |
Fixed trampoline handling |
#
e3c63de0 |
| 16-Nov-2020 |
Dmitry Stogov |
Fixed alias handling |
#
edf5c190 |
| 16-Nov-2020 |
Dmitry Stogov |
Fixed incorrect FETCH_THIS optimization |
#
64dc79f9 |
| 16-Nov-2020 |
Dmitry Stogov |
Trampoline cleanup |
#
9acebe14 |
| 11-Nov-2020 |
Dmitry Stogov |
Fixed incorrectly eliminated type store |
#
03e78543 |
| 11-Nov-2020 |
Dmitry Stogov |
Remove assertion |
#
2d2d42b2 |
| 11-Nov-2020 |
Dmitry Stogov |
Fixed incorrect invariant guard motion |
#
a0de82ad |
| 11-Nov-2020 |
Dmitry Stogov |
Fixed reference-counting propagation |
#
4bbe55b2 |
| 09-Nov-2020 |
Dmitry Stogov |
Fixed missaligned access |
#
98e4f946 |
| 06-Nov-2020 |
Dmitry Stogov |
Move stack overflow checks out of the loops |
#
ff918006 |
| 05-Nov-2020 |
Dmitry Stogov |
Fixed incorrect invariant guard motion |
#
b133183e |
| 30-Oct-2020 |
Dmitry Stogov |
Create TSSA loops for recursive call/return traces and move invariant type guards out of loops. |