History log of /PHP-7.4/Zend/zend_compile.c (Results 26 – 50 of 2214)
Revision (<<< Hide revision tags) (Show revision tags >>>) Date Author Comments
Revision tags: php-7.4.0RC3, php-7.2.23, php-7.3.10, php-7.4.0RC2
# 4226c824 13-Sep-2019 Nikita Popov

Fix use-after-free in assign-ref compilation

zend_emit_op_data may reallocate the op_array, so the assignment
of the RETURNS_FUNCTION flag may happen on an outdated opline.

Rest

Fix use-after-free in assign-ref compilation

zend_emit_op_data may reallocate the op_array, so the assignment
of the RETURNS_FUNCTION flag may happen on an outdated opline.

Restructure the code a bit to set the flag before calling
zend_emit_op_data().

show more ...


# e45a757b 13-Sep-2019 Dmitry Stogov

Fixed incorrect usage of QM_ASSIGN instruction


# 4b9ebd83 11-Sep-2019 Nikita Popov

Allow throwing exception while loading parent class

This is a fix for symfony/symfony#32995.

The behavior is:

* Throwing exception when loading parent/interface is allowed

Allow throwing exception while loading parent class

This is a fix for symfony/symfony#32995.

The behavior is:

* Throwing exception when loading parent/interface is allowed
(and we will also throw one if the class is simply not found).
* If this happens, the bucket key for the class is reset, so
it's possibly to try registering the same class again.
* However, if the class has already been used due to a variance
obligation, the exception is upgraded to a fatal error, as we
cannot safely unregister the class stub anymore.

show more ...


# d88b212e 11-Sep-2019 Nikita Popov

Improve "already declared" error message

If this error is missing because the rtd_key was renamed to lcname,
fetch the class based on lcname and use the class type and cased
name fro

Improve "already declared" error message

If this error is missing because the rtd_key was renamed to lcname,
fetch the class based on lcname and use the class type and cased
name from there.

show more ...


Revision tags: php-7.2.23RC1, php-7.3.10RC1
# e81751ce 06-Sep-2019 Nikita Popov

Fixed bug #78502

We need to make sure that the function is fully compiled before we
calculate the stack size. There already was a check for directly
recursive calls, but the same iss

Fixed bug #78502

We need to make sure that the function is fully compiled before we
calculate the stack size. There already was a check for directly
recursive calls, but the same issue exists with indirectly recursive
calls.

I'm using DONE_PASS_TWO as the indication that the function is
fully compiled.

show more ...


Revision tags: php-7.4.0RC1, php-7.1.32, php-7.2.22, php-7.3.9, php-7.4.0beta4
# d1157cbc 16-Aug-2019 Nikita Popov

Relax closure $this unbinding deprecation

Only deprecate unbinding of $this from a closure if $this is
syntactically used within the closure.

This is desired to support Laravel'

Relax closure $this unbinding deprecation

Only deprecate unbinding of $this from a closure if $this is
syntactically used within the closure.

This is desired to support Laravel's macro system, see laravel/framework#29482.

This should still allow us to implement the performance improvements
we're interested in for PHP 8, without breaking existing use-cases.

show more ...


Revision tags: php-7.2.22RC1, php-7.3.9RC1
# f3fdf570 12-Aug-2019 Nikita Popov

Intern alias old_name early

This is likely going to end up interned lateron at some point
when the new_name is referenced somewhere. However, it may be
that there are some uses that

Intern alias old_name early

This is likely going to end up interned lateron at some point
when the new_name is referenced somewhere. However, it may be
that there are some uses that do not get interned before that.
In this case we will intern a string that already have zval
users, without updating the refcounted flag on those zvals.

In particular this can happen with something like [Foo::class],
where Foo is an imported symbol. The string it resolves to won't
get interned right away, but may be interned later.

use Foo as Bar;
$x = [Bar::class];
var_dump(Bar::X);
debug_zval_dump($x); // Will show negative refcount
class Foo {
const X = 1;
}

However, this doesn't really fix the root cause, there are probably
other situations where something similar can occur.

show more ...


Revision tags: php-7.4.0beta2
# afd96392 01-Aug-2019 Nikita Popov

Revert "Use RW fetch for argument unpacking"

This reverts commit 6913ec3282149914e999d91b056fe1cc68d15ed7.
This reverts commit a9e332e02777c9b3805f6af846a4f48504109d2b.

Causes h

Revert "Use RW fetch for argument unpacking"

This reverts commit 6913ec3282149914e999d91b056fe1cc68d15ed7.
This reverts commit a9e332e02777c9b3805f6af846a4f48504109d2b.

Causes https://bugs.php.net/bug.php?id=78356, which I don't have
a good solution for.

show more ...


Revision tags: php-7.1.31, php-7.2.21, php-7.3.8
# 6913ec32 30-Jul-2019 Nikita Popov

Use RW fetch for argument unpacking

Argument unpacking may need to create references inside the array
that is being unpacked. However, it currently can only do this
if a plain variab

Use RW fetch for argument unpacking

Argument unpacking may need to create references inside the array
that is being unpacked. However, it currently can only do this
if a plain variable is unpacked, not for any nested accesses,
because the value is fetched for read. Resolve this by fetching
the operands for RW.

show more ...


# 4ae807e8 29-Jul-2019 Nikita Popov

Fixed bug #78344

When performing a constant visibility check during compilation we
might be dealing with unlinked classes and as such should account
for the possibility of unresolved

Fixed bug #78344

When performing a constant visibility check during compilation we
might be dealing with unlinked classes and as such should account
for the possibility of unresolved parents.

show more ...


Revision tags: php-7.4.0beta1, php-7.2.21RC1, php-7.3.8RC1
# 4e190691 11-Jul-2019 Nikita Popov

Deprecate is_real() function


# 445d5134 19-Jul-2019 Dmitry Stogov

Use run-time cache to avoid repeatable hash lookups in ZEND_DECLARE_CLASS_DELAYED


Revision tags: php-7.4.0alpha3, php-7.3.7, php-7.2.20, php-7.4.0alpha2, php-7.3.7RC3, php-7.3.7RC2, php-7.2.20RC2, php-7.4.0alpha1, php-7.3.7RC1, php-7.2.20RC1, php-7.2.19, php-7.3.6, php-7.1.30, php-7.2.19RC1, php-7.3.6RC1, php-7.1.29, php-7.2.18, php-7.3.5, php-7.2.18RC1, php-7.3.5RC1, php-7.2.17, php-7.3.4, php-7.1.28, php-7.3.4RC1, php-7.2.17RC1
# d574df63 13-Mar-2019 rjhdby

Deprecate alternative array access syntax

RFC: https://wiki.php.net/rfc/deprecate_curly_braces_array_access


# d5943f5a 19-Jul-2019 Dmitry Stogov

Use run-time cache to avoid repeatable hash lookups when creating anonymous functions and classes


# b065fbde 19-Jul-2019 Dmitry Stogov

ZEND_DECLARE_ANON_CLASS doesn't need to skip anything now. It's immediatelly followed by ZEND_NEW.


# c5f1b384 15-Jul-2019 Nikita Popov

Move shebang handling into the lexer

Instead of handling shebang lines by adjusting the file pointer in
individual SAPIs, move the handling into the lexer, where this is
both a lot s

Move shebang handling into the lexer

Instead of handling shebang lines by adjusting the file pointer in
individual SAPIs, move the handling into the lexer, where this is
both a lot simpler and more robust. Whether the shebang should be
skipped is controlled by CG(skip_shebang) -- we might want to do
that in more cases.

This fixed bugs #60677 and #78066.

show more ...


# 48ca5a1e 05-Jul-2019 Dmitry Stogov

Replace ZEND_ASSIGN_ADD (and others) by ZEND_ASSIGN_OP, ZEND_ASSIGN_DIM_OP, ZEND_ASSGIN_OBJ_OP and ZEND_ASSIGN_STATIC_PROP_OP


# 9f81c56e 28-Jun-2019 Nikita Popov

Fix out-of-bounds read in array compilation

UNPACK elements only have one child. Don't access the second one
until we have excluded this case.


# 83b99527 26-Jun-2019 Dmitry Stogov

Avoid double checks on early binding


# 1d534b9d 25-Jun-2019 Dmitry Stogov

Set ZEND_ACC_LINKED flag after early binding (for consistency)


# e8f1f701 25-Jun-2019 Dmitry Stogov

Reduce overhead of delayed early binding


# 759f4ecd 25-Jun-2019 Dmitry Stogov

Keep lowercased parent class name as second argument of DECLARE_CLASS to avoid extra work at run-time


# 0f29fb5c 24-Jun-2019 Dmitry Stogov

Fixed bug 78175 (Preloading must store default values of static variables and properties)


# f601eb15 12-Jun-2019 Nikita Popov

Fix -Wmissing-braces warnings

Unfortunate that = {} is a GNU extension.


# 8f8fcbbd 27-May-2019 Nikita Popov

Support full variance if autoloading is used

Keep track of delayed variance obligations and check them after
linking a class is otherwise finished. Obligations may either be
unresolv

Support full variance if autoloading is used

Keep track of delayed variance obligations and check them after
linking a class is otherwise finished. Obligations may either be
unresolved method compatibility (because the necessecary classes
aren't available yet) or open parent/interface dependencies. The
latter occur because we allow the use of not fully linked classes
as parents/interfaces now.

An important aspect of the implementation is we do not require
classes involved in variance checks to be fully linked in order for
the class to be fully linked. Because the involved types do have to
exist in the class table (as partially linked classes) and we do
check these for correct variance, we have the guarantee that either
those classes will successfully link lateron or generate an error,
but there is no way to actually use them until that point and as
such no possibility of violating the variance contract. This is
important because it ensures that a class declaration always either
errors or will produce an immediately usable class afterwards --
there are no cases where the finalization of the class declaration
has to be delayed until a later time, as earlier variants of this
patch did.

Because variance checks deal with classes in various stages of
linking, we need to use a special instanceof implementation that
supports this, and also introduce finer-grained flags that tell us
which parts have been linked already and which haven't.

Class autoloading for variance checks is delayed into a separate
stage after the class is otherwise linked and before delayed
variance obligations are processed. This separation is needed to
handle cases like A extends B extends C, where B is the autoload
root, but C is required to check variance. This could end up
loading C while the class structure of B is in an inconsistent
state.

show more ...


12345678910>>...89