mirror of
https://github.com/php/php-src.git
synced 2026-04-24 00:18:23 +02:00
88eae43ff9
The DECLARE_(ANON_)INHERITED_CLASS(_DELAYED) opcodes were referencing the parent ce VAR through extended_value. This is hacky and we can't track the def-use chain in SSA. To avoid this, the layout of declaration opcodes is changed as follows: op1 points to the lcname and rtd_key literals, in that order. (For anon/lambda declarations only one of lcname or rtd_key is present.) This frees up op2, which is now used to reference the parent ce VAR in inheriting declarations. The jmp offset for anon class declarations is moved frop op2 to extended_value. The changes were applied both to class and function declarations to keep everything symmetric.