#
5350952a |
| 25-Dec-2023 |
Dmitry Stogov |
Fix assertion Fixes oss-fuzz #65233
|
#
3e0e7e3f |
| 24-Aug-2023 |
ju1ius |
releases property attributes of internal classes (#11980) * adds test case for internal class property attribute * releases property attributes of internal classes
|
#
02a80c5b |
| 14-Aug-2023 |
George Peter Banyard |
Fix various bugs related to DNF types - GH-11958: DNF types in trait properties do not get bound properly - GH-11883: Memory leak in zend_type_release() for non-arena allocated DNF typ
Fix various bugs related to DNF types - GH-11958: DNF types in trait properties do not get bound properly - GH-11883: Memory leak in zend_type_release() for non-arena allocated DNF types - Internal trait bound to userland class would not be arena allocated - Property DNF types were not properly deep copied during lazy loading Co-authored-by: Ilija Tovilo <ilija.tovilo@me.com> Co-authored-by: ju1ius <jules.bernable@gmail.com>
show more ...
|
Revision tags: php-8.2.0RC1, php-8.1.10, php-8.0.23, php-8.0.23RC1, php-8.1.10RC1, php-8.2.0beta3 |
|
#
0b1d750d |
| 11-Aug-2022 |
Ilija Tovilo |
Allow arbitrary expressions in static variable initializer Closes GH-9301
|
#
d5c649b3 |
| 23-Feb-2023 |
Max Kellermann |
zend_compiler, ...: use `uint8_t` instead of `zend_uchar` (#10621) `zend_uchar` suggests that the value is an ASCII character, but here, it's about very small integers. This is misleadi
zend_compiler, ...: use `uint8_t` instead of `zend_uchar` (#10621) `zend_uchar` suggests that the value is an ASCII character, but here, it's about very small integers. This is misleading, so let's use a C99 integer instead. On all architectures currently supported by PHP, `zend_uchar` and `uint8_t` are identical. This change is only about code readability.
show more ...
|
#
821fc55a |
| 22-Feb-2023 |
Niels Dossche <7771979+nielsdos@users.noreply.github.com> |
Implement GH-9826: Make class_alias() work with internal classes (#10483) We can't increase the refcount of internal classes during request time. To work around this problem we simply do
Implement GH-9826: Make class_alias() work with internal classes (#10483) We can't increase the refcount of internal classes during request time. To work around this problem we simply don't refcount aliases anymore and add a check in the destruction to skip aliases entirely. There were also some checks which checked for an alias implicitly by comparing the refcount, these have been replaced by checking the type of the zval instead.
show more ...
|
#
482ae71f |
| 31-Oct-2022 |
Dmitry Stogov |
Fix memory leak
|
#
fe0eaf10 |
| 16-Sep-2022 |
Ilija Tovilo |
Fix UB pointer arithmetics on NULL Closes GH-9559
|
Revision tags: php-8.2.0beta2, php-8.1.9, php-8.0.22 |
|
#
dc5475c1 |
| 28-Jul-2022 |
Bob Weinand |
Save previous observer on the VM stack This avoids a possible significant performance penalty, when some leaf function was observed, deep in the stack. As a side effect, we are not itera
Save previous observer on the VM stack This avoids a possible significant performance penalty, when some leaf function was observed, deep in the stack. As a side effect, we are not iterating over prev_execute_data anymore and thus, non-observed fake frames, possibly on stack, cannot have any impact on the observer anymore (especially within zend_observer_fcall_end_all). Saving the previous observer happens now directly on the VM stack. If there is any observer, function frames are allocated an extra zval (the last temporary), which will, on observed frames, contain the previous observed frame address.
show more ...
|
Revision tags: php-8.1.9RC1, php-8.2.0beta1, php-8.0.22RC1, php-8.0.21, php-8.1.8, php-8.2.0alpha3 |
|
#
76fcd70c |
| 25-Jun-2022 |
Ilija Tovilo |
Fix enum preloading again (#8859)
|
Revision tags: php-8.1.8RC1, php-8.2.0alpha2, php-8.0.21RC1, php-8.0.20, php-8.1.7, php-8.2.0alpha1, php-7.4.30, php-8.1.7RC1, php-8.0.20RC1, php-8.1.6, php-8.0.19, php-8.1.6RC1, php-8.0.19RC1, php-8.0.18, php-8.1.5, php-7.4.29, php-8.1.5RC1, php-8.0.18RC1, php-8.1.4, php-8.0.17 |
|
#
ddc0b490 |
| 10-Mar-2022 |
Ilija Tovilo |
Allow arbitrary const expressions in backed enums Closes GH-7821 Closes GH-8190 Closes GH-8418
|
#
f135ed9a |
| 23-May-2022 |
Dmitry Stogov |
Fix memory leak This fixes oss-fuzz #47527
|
#
b1b79c74 |
| 11-May-2022 |
Dmitry Stogov |
Fix memory leak This fixes oss-fuzz #47088
|
#
fbb73939 |
| 17-Apr-2022 |
Nikita Popov |
Handle other DO_FCALL opcodes in NEW live range calculation Make this robust against the case where NEW is terminated by something other than DO_FCALL, e.g. DO_UCALL. This can't currentl
Handle other DO_FCALL opcodes in NEW live range calculation Make this robust against the case where NEW is terminated by something other than DO_FCALL, e.g. DO_UCALL. This can't currently happen.
show more ...
|
#
0d7e10c1 |
| 07-Mar-2022 |
Tim Düsterhus |
Fix memory leak of function attribute hash table (#8070) ==109253== 280 (56 direct, 224 indirect) bytes in 1 blocks are definitely lost in loss record 4 of 4 ==109253== at 0x4
Fix memory leak of function attribute hash table (#8070) ==109253== 280 (56 direct, 224 indirect) bytes in 1 blocks are definitely lost in loss record 4 of 4 ==109253== at 0x483B7F3: malloc (in /usr/lib/x86_64-linux-gnu/valgrind/vgpreload_memcheck-amd64-linux.so) ==109253== by 0x6D9FA2: __zend_malloc (zend_alloc.c:3068) ==109253== by 0x745138: zend_add_attribute (zend_attributes.c:226) ==109253== by 0x6680D1: zend_add_parameter_attribute (zend_attributes.h:102) ==109253== by 0x66B787: zm_startup_zend_test (test.c:478) ==109253== by 0x7224CD: zend_startup_module_ex (zend_API.c:2202) ==109253== by 0x72252C: zend_startup_module_zval (zend_API.c:2217) ==109253== by 0x734288: zend_hash_apply (zend_hash.c:2011) ==109253== by 0x722C30: zend_startup_modules (zend_API.c:2328) ==109253== by 0x67409B: php_module_startup (main.c:2256) ==109253== by 0x88EDDE: php_cli_startup (php_cli.c:409) ==109253== by 0x890F61: main (php_cli.c:1334)
show more ...
|
Revision tags: php-8.1.4RC1, php-8.0.17RC1, php-8.1.3, php-8.0.16, php-7.4.28, php-8.1.3RC1, php-8.0.16RC1, php-8.1.2, php-8.0.15, php-8.1.2RC1, php-8.0.15RC1 |
|
#
4543cd32 |
| 30-Dec-2021 |
Nikita Popov |
Remove JMPZNZ opcode While JMPZNZ can avoid execution of a separate JMP opcode in some cases, it also prevents smart branch optimization, so creating JMPZNZ may actually have a negat
Remove JMPZNZ opcode While JMPZNZ can avoid execution of a separate JMP opcode in some cases, it also prevents smart branch optimization, so creating JMPZNZ may actually have a negative effect. It also adds additional complexity for optimizations. Drop JMPZNZ in favor of JMPZ+JMP or JMPNZ+JMP. Closes GH-7857.
show more ...
|
Revision tags: php-8.0.14, php-8.1.1, php-7.4.27, php-8.1.1RC1, php-8.0.14RC1 |
|
#
024d5f4b |
| 01-Dec-2021 |
Tyson Andre |
Cache method overrides of ArrayAccess in zend_class_entry Previously, code such as subclasses of SplFixedArray would check for method overrides when instantiating the objects. T
Cache method overrides of ArrayAccess in zend_class_entry Previously, code such as subclasses of SplFixedArray would check for method overrides when instantiating the objects. This optimization was mentioned as a followup to GH-6552
show more ...
|
Revision tags: php-7.4.27RC1, php-8.1.0, php-8.0.13, php-7.4.26 |
|
#
44e5d253 |
| 16-Nov-2021 |
Nikita Popov |
Fix inheritance of class constants if mutable data used Class constants from parents should always be directly reused, rather than re-evaluated as a separate copy. Previously this used
Fix inheritance of class constants if mutable data used Class constants from parents should always be directly reused, rather than re-evaluated as a separate copy. Previously this used to happen automatically, as we'd just inherit the class constant entry from the parent class. With mutable data there may now be a separate copy of the constant, so we need to use that copy when updating constants. Otherwise we may evaluate the same constant multiple times. Closes GH-7658.
show more ...
|
Revision tags: php-7.3.33 |
|
#
8c4a7f20 |
| 11-Nov-2021 |
Nikita Popov |
Fix COPY_TMP live range construction with optimization The use may be optimized away, leaving us only with the free use. Also fix off-by-one error in the other optimization case.
|
Revision tags: php-8.1.0RC6 |
|
#
90b7bde6 |
| 03-Nov-2021 |
Dmitry Stogov |
Use more compact representation for packed arrays. - for packed arrays we store just an array of zvals without keys. - the elements of packed array are accessible throuf as ht->arPacked[
Use more compact representation for packed arrays. - for packed arrays we store just an array of zvals without keys. - the elements of packed array are accessible throuf as ht->arPacked[i] instead of ht->arData[i] - in addition to general ZEND_HASH_FOREACH_* macros, we introduced similar familied for packed (ZEND_HASH_PACKED_FORECH_*) and real hashes (ZEND_HASH_MAP_FOREACH_*) - introduced an additional family of macros to access elements of array (packed or real hashes) ZEND_ARRAY_ELEMET_SIZE, ZEND_ARRAY_ELEMET_EX, ZEND_ARRAY_ELEMET, ZEND_ARRAY_NEXT_ELEMENT, ZEND_ARRAY_PREV_ELEMENT - zend_hash_minmax() prototype was changed to compare only values Because of smaller data set, this patch may show performance improvement on some apps and benchmarks that use packed arrays. (~1% on PHP-Parser) TODO: - sapi/phpdbg needs special support for packed arrays (WATCH_ON_BUCKET). - zend_hash_sort_ex() may require converting packed arrays to hash.
show more ...
|
Revision tags: php-7.4.26RC1, php-8.0.13RC1, php-8.1.0RC5, php-7.3.32, php-7.4.25, php-8.0.12, php-8.1.0RC4, php-8.0.12RC1, php-7.4.25RC1 |
|
#
bbd3f714 |
| 05-Oct-2021 |
Nikita Popov |
Fix COPY_TMP live range construction after optimization If we optimize the FREE away, we should switch to constructing a normal live range, rather than a split live range. Fixes
Fix COPY_TMP live range construction after optimization If we optimize the FREE away, we should switch to constructing a normal live range, rather than a split live range. Fixes oss-fuzz #39548.
show more ...
|
Revision tags: php-8.1.0RC3, php-8.0.11, php-7.4.24, php-7.3.31 |
|
#
7257e7e5 |
| 16-Sep-2021 |
Nikita Popov |
Handle SWITCH_STRING with optimized away FREE This can happen in degenerate cases where we know that the SWITCH_STRING argument is not refcounted. We should be treating it in the sam
Handle SWITCH_STRING with optimized away FREE This can happen in degenerate cases where we know that the SWITCH_STRING argument is not refcounted. We should be treating it in the same way as SWITCH_LONG here.
show more ...
|
Revision tags: php-8.1.0RC2, php-7.4.24RC1, php-8.0.11RC1, php-8.1.0RC1, php-7.4.23, php-8.0.10, php-7.3.30, php-8.1.0beta3, php-8.0.10RC1, php-7.4.23RC1, php-8.1.0beta2, php-8.0.9 |
|
#
e0119525 |
| 28-Jul-2021 |
Nikita Popov |
Preload unlinked classes, remove preload autoload (#7311) Currently, classes that can't be linked get moved back into the original script and are not preloaded. As such classes may be re
Preload unlinked classes, remove preload autoload (#7311) Currently, classes that can't be linked get moved back into the original script and are not preloaded. As such classes may be referenced from functions that did get preloaded, there is a preload autoload mechanism to load them at runtime. Since PHP 8.1, we can safely preload unlinked classes, which will then go through usual lazy loading. This means that we no longer need the preload autoload mechanism. However, we need to be careful not to modify any hash table buckets in-place, and should create new buckets for lazy loaded classes.
show more ...
|
Revision tags: php-7.4.22 |
|
#
a374230c |
| 22-Jul-2021 |
Nikita Popov |
Add support for internal enums This adds support for internal enums with the same basic approach as userland enums. Enum values are stored as CONSTANT_AST and objects created during
Add support for internal enums This adds support for internal enums with the same basic approach as userland enums. Enum values are stored as CONSTANT_AST and objects created during constant updating at runtime. This means that we need to use mutable_data for internal enums. This just adds basic support and APIs, it does not include the stubs integration from #7212. Closes GH-7302.
show more ...
|
#
36d2dd08 |
| 23-Jul-2021 |
Nikita Popov |
Remove redundant static_members/mutable_data cleanup static_members, mutable_data and static vars in methods are cleaned up during an earlier shutdown phase (because this has to happen
Remove redundant static_members/mutable_data cleanup static_members, mutable_data and static vars in methods are cleaned up during an earlier shutdown phase (because this has to happen before we destroy the object store). There is no need to repeat this cleanup when destroying the classes.
show more ...
|