#
8ed8cf86 |
| 22-Mar-2021 |
Dmitry Stogov |
Use zend_string* instead of char* |
#
c732ab40 |
| 16-Mar-2021 |
Dmitry Stogov |
Change Zend Stream API to use zend_string* instead of char*. This allows to eliminate re-calculation of string lenght and hash value. See the detailed list of changes in UPGRADING.INTERN
Change Zend Stream API to use zend_string* instead of char*. This allows to eliminate re-calculation of string lenght and hash value. See the detailed list of changes in UPGRADING.INTERNALS.
show more ...
|
#
65859fe1 |
| 11-Mar-2021 |
Dmitry Stogov |
Inheritance cache optimization |
#
5d160e30 |
| 17-Feb-2021 |
Nikita Popov |
Fix static variable behavior with inheritance When a method is inherited, the static variables will now always use the initial values, rather than the values at the time of inheritan
Fix static variable behavior with inheritance When a method is inherited, the static variables will now always use the initial values, rather than the values at the time of inheritance. As such, behavior no longer depends on whether inheritance happens before or after a method has been called. This is implemented by always keeping static_variables as the original values, and static_variables_ptr as the modified copy. Closes GH-6705.
show more ...
|
#
6aea64c4 |
| 10-Feb-2021 |
Dmitry Stogov |
Reuse single map_ptr slot for indentical class names |
#
4b79dba9 |
| 09-Feb-2021 |
Dmitry Stogov |
Added Inheritance Cache. This is a new transparent technology that eliminates overhead of PHP class inheritance. PHP classes are compiled and cached (by opcahce) separately, howeve
Added Inheritance Cache. This is a new transparent technology that eliminates overhead of PHP class inheritance. PHP classes are compiled and cached (by opcahce) separately, however their "linking" was done at run-time - on each request. The process of "linking" may involve a number of compatibility checks and borrowing methods/properties/constants form parent and traits. This takes significant time, but the result is the same on each request. Inheritance Cache performs "linking" for unique set of all the depending classes (parent, interfaces, traits, property types, method types involved into compatibility checks) once and stores result in opcache shared memory. As a part of the this patch, I removed limitations for immutable classes (unresolved constants, typed properties and covariant type checks). So now all classes stored in opcache are "immutable". They may be lazily loaded into process memory, if necessary, but this usually occurs just once (on first linking). The patch shows 8% improvement on Symphony "Hello World" app.
show more ...
|
#
ce79d947 |
| 04-Feb-2021 |
Nikita Popov |
Merge branch 'PHP-8.0' * PHP-8.0: Try SIGTERM before SIGKILL in opcache restart
|
#
0c6ff5ea |
| 04-Feb-2021 |
Nikita Popov |
Merge branch 'PHP-7.4' into PHP-8.0 * PHP-7.4: Try SIGTERM before SIGKILL in opcache restart
|
#
8b7aaad7 |
| 07-Dec-2020 |
Nikita Popov |
Try SIGTERM before SIGKILL in opcache restart SIGTERM is subject to HANDLE_BLOCK_INTERRUPTIONS(), which will allow code to exit critical sections before it gets terminated. Clos
Try SIGTERM before SIGKILL in opcache restart SIGTERM is subject to HANDLE_BLOCK_INTERRUPTIONS(), which will allow code to exit critical sections before it gets terminated. Closes GH-6493.
show more ...
|
#
83be073a |
| 26-Jan-2021 |
Nikita Popov |
Move optimizer into core This only moves the files, adjusts the build system, exports APIs and does minor fixups to make sure the code builds. This does not yet try to make the
Move optimizer into core This only moves the files, adjusts the build system, exports APIs and does minor fixups to make sure the code builds. This does not yet try to make the optimizer usable independently of opcache. Closes GH-6642.
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 ...
|
#
f9942b06 |
| 15-Dec-2020 |
Nikita Popov |
Merge branch 'PHP-8.0' * PHP-8.0: JIT disabled build fix.
|
#
1e6c7e77 |
| 14-Dec-2020 |
David Carlier |
JIT disabled build fix. Closes GH-6514. |
#
c3c7b673 |
| 14-Dec-2020 |
Dmitry Stogov |
Merge branch 'PHP-8.0' * PHP-8.0: Fixed bug #80506 (Immediate SIGSEGV upon ini_set("opcache.jit_debug", 1))
|
#
a12e7aff |
| 14-Dec-2020 |
Dmitry Stogov |
Fixed bug #80506 (Immediate SIGSEGV upon ini_set("opcache.jit_debug", 1)) |
#
034270d6 |
| 30-Nov-2020 |
Dmitry Stogov |
Merge branch 'PHP-8.0' * PHP-8.0: Disable JIT with incompatible third-party extensions
|
#
d5a82e2c |
| 30-Nov-2020 |
Dmitry Stogov |
Disable JIT with incompatible third-party extensions |
#
6808968c |
| 05-Nov-2020 |
Nikita Popov |
Backport preloading trait fixup fixes This cherry-picks 33969c2252b2c33a72c9039072af8862fd347a5f and 2effbfd8713936742ef46e6e85ce193b320ac005 from PHP-8.0. The issues these comm
Backport preloading trait fixup fixes This cherry-picks 33969c2252b2c33a72c9039072af8862fd347a5f and 2effbfd8713936742ef46e6e85ce193b320ac005 from PHP-8.0. The issues these commits fix could also manifest in PHP 7.4, and a commenter on bug #80307 reports this this might indeed be happening.
show more ...
|
#
04614385 |
| 05-Nov-2020 |
Nikita Popov |
Merge branch 'PHP-8.0' * PHP-8.0: Fixup trait methods even if no traits are used
|
#
2effbfd8 |
| 05-Nov-2020 |
Nikita Popov |
Fixup trait methods even if no traits are used Trait methods might be non-trivially inherited, in which case we may have to perform fixup in classes that do not directly use any trai
Fixup trait methods even if no traits are used Trait methods might be non-trivially inherited, in which case we may have to perform fixup in classes that do not directly use any traits.
show more ...
|
#
1fea1757 |
| 05-Nov-2020 |
Nikita Popov |
Merge branch 'PHP-8.0' * PHP-8.0: Fix multiple trait fixup
|
#
33969c22 |
| 05-Nov-2020 |
Nikita Popov |
Fix multiple trait fixup If a trait method is inherited, preloading trait fixup might be performed on it multiple times. Usually this is fine, because the opcodes pointer will have a
Fix multiple trait fixup If a trait method is inherited, preloading trait fixup might be performed on it multiple times. Usually this is fine, because the opcodes pointer will have already been updated, and will thus not be found in the xlat table. However, it can happen that the new opcodes pointer is the same as one of the old opcodes pointers, if the pointer has been reused by the allocator. In this case we will look up the wrong op array and overwrite the trait method with an unrelated trait method. We fix this by indexing the xlat table not by the opcodes pointer, but by the refcount pointer. The refcount pointer is not changed during optimization, and accurately represents which op arrays should use the same opcodes. Fixes bug #80307. The test case does not reproduce the bug, because this depends on a lot of "luck" with the allocator. The test case merely illustrates a case where orig_op_array would have been NULL in the original code.
show more ...
|
#
313a56ad |
| 04-Nov-2020 |
Nikita Popov |
Merge branch 'PHP-8.0' * PHP-8.0: End output handlers in preload shutdown
|
#
7c7c6b0d |
| 04-Nov-2020 |
Nikita Popov |
End output handlers in preload shutdown Same as in php_request_shutdown(), we need to end any active output handlers, as these may no longer be safe to execute lateron. |
#
d0a07cd0 |
| 03-Nov-2020 |
Nikita Popov |
Merge branch 'PHP-8.0' * PHP-8.0: Report parse errors during preloading
|