History log of /PHP-7.0/Zend/zend_generators.c (Results 101 – 125 of 178)
Revision (<<< Hide revision tags) (Show revision tags >>>) Date Author Comments
# 4e66abad 12-Feb-2014 Dmitry Stogov

Use better data structures (incomplete) - refactored return_value handling


Revision tags: php-5.6.0alpha2
# f4cfaf36 10-Feb-2014 Dmitry Stogov

Use better data structures (incomplete)


Revision tags: php-5.5.9, php-5.4.25, php-5.5.9RC1, php-5.4.25RC1, php-5.6.0alpha1, php-5.5.8, php-5.4.24
# c081ce62 03-Jan-2014 Xinchen Hui

Bump year


# 47c90277 03-Jan-2014 Xinchen Hui

Bump year


Revision tags: php-5.4.24RC1, php-5.5.8RC1, php-5.5.7, php-5.4.23, php-5.3.28
# 02dca18b 01-Dec-2013 Nikita Popov

Fix bug #65764

I'm not exactly sure whether this is the right way to fix it. The
question is whether Generator::throw() on a newborn generator (i.e.
a generator that is not yet at yi

Fix bug #65764

I'm not exactly sure whether this is the right way to fix it. The
question is whether Generator::throw() on a newborn generator (i.e.
a generator that is not yet at yield expression) should first advance to
the first yield and throw the exception there or whether it should
instead throw the exception in the caller's context.

The old behavior was to throw it at the start of the function (i.e.
the very first opcode), which causes issues like the one in #65764.
Effectively it's impossible to properly handle the exceptions in this
case.

For now I choose the variant where the generator advances to the
first yield before throwing, as that's consistent with how all other
methods on the Generator object currently behave. This does not
necessarily match the behavior in other languages, e.g. Python would throw
the exception in the caller's context. But then our send() method already
has this kind of deviation, so it stays internally consistent at least.

show more ...


# b4f00be6 30-Nov-2013 Nikita Popov

Cleanup generator closing code a bit

All code dealing with unfinished execution cleanup is now in a separate
function (previously most of it was run even when execution was properly

Cleanup generator closing code a bit

All code dealing with unfinished execution cleanup is now in a separate
function (previously most of it was run even when execution was properly
finished.

Furthermore some code dealing with unclean shutdowns has been removed,
which is no longer necessary, because we no longer try to clean up in
this case.

show more ...


# 9589cae8 30-Nov-2013 Nikita Popov

Fixed bug #66041: list() fails to unpack yielded ArrayAccess object

Yield return values now use IS_VAR rather than IS_TMP_VAR. This
fixes the issue with list() and should also be faster

Fixed bug #66041: list() fails to unpack yielded ArrayAccess object

Yield return values now use IS_VAR rather than IS_TMP_VAR. This
fixes the issue with list() and should also be faster as it avoids
doing a zval copy.

show more ...


Revision tags: php-5.5.7RC1, php-5.4.23RC1, php-5.4.22, php-5.5.6, php-5.4.22RC1, php-5.5.6RC1, php-5.4.21, php-5.5.5, php-5.4.21RC1, php-5.5.5RC1
# 6b68f44e 29-Sep-2013 Nikita Popov

Fix bug #64979: Wrong behavior of static variables in closure generators


Revision tags: php-5.5.4, php-5.4.20
# bdfa03d7 14-Sep-2013 Nikita Popov

Save a TSRMLS_FETCH() for zval_ptr_dtor in executor

This gives me about 9% improvement on Zend/bench.php for a zts build.


Revision tags: php-5.5.4RC1, php-5.4.20RC1
# 47ee4709 26-Aug-2013 Nikita Popov

Make use of direct returns in some places


Revision tags: php-5.5.3, php-5.4.19, php-5.5.2, php-5.4.18, php-5.5.2RC1, php-5.4.18RC2, php-5.5.1, php-5.4.18RC1, php-5.3.27
# 6c4af15d 07-Jul-2013 Veres Lajos

typos (orig)


# b8a2b254 07-Jul-2013 Veres Lajos

typos (orig)


Revision tags: php-5.4.17
# 0f36224b 29-Jun-2013 Nikita Popov

Don't try to clean up generator stack on unclean shutdown

This fixes bugs #65035 and #65161. In one of the bugs the issue is
that function_state.arguments is NULL, but the arg count is p

Don't try to clean up generator stack on unclean shutdown

This fixes bugs #65035 and #65161. In one of the bugs the issue is
that function_state.arguments is NULL, but the arg count is pushed
to the stack and the code tries to free it. In the other bug the
stack of the generator is freed twice, once in generator_close and
later during shutdown.

It's rather hard (if at all possible) to do a proper stack cleanup
on an unclean shutdown, so I'm just disabling it in this case.

show more ...


Revision tags: php-5.5.0, php-5.3.27RC1, php-5.4.17RC1, php-5.5.0RC3, php-5.3.26, php-5.4.16, php-5.5.0RC2, php-5.3.26RC1, php-5.4.16RC1, php-5.5.0RC1, php-5.3.25, php-5.4.15, php-5.3.25RC1, php-5.5.0beta4, php-5.4.15RC1, php-5.4.14, php-5.3.24, php-5.5.0beta3, php-5.3.24RC1, php-5.4.14RC1, php-5.5.0beta2
# 8345abca 25-Mar-2013 Nikita Popov

Remove support for cloning generators


Revision tags: php-5.5.0beta1, php-5.3.23, php-5.4.13, php-5.5.0alpha6, php-5.3.23RC1, php-5.4.13RC1, php-5.3.22, php-5.5.0alpha5, php-5.4.12
# fcc6611d 16-Feb-2013 Nikita Popov

Add support for non-scalar Iterator keys in foreach

RFC: https://wiki.php.net/rfc/foreach-non-scalar-keys


Revision tags: php-5.3.22RC2, php-5.4.12RC2
# 114245c1 01-Feb-2013 Nikita Popov

Fix bug #63830: Segfault on undefined function call in nested generator

This also reverses the destruction order of the pushed arguments to
align with how it is done everywhere else.

Fix bug #63830: Segfault on undefined function call in nested generator

This also reverses the destruction order of the pushed arguments to
align with how it is done everywhere else.

I'm not exactly sure whether this is the right way to fix it, but it
seems to work fine.

show more ...


# 3ee20e45 01-Feb-2013 Nikita Popov

Fix segfault when cloning generator with properties

Rule of thumb: Always implement the object clone handler rather
than the object storage clone handler. Actually I think we should

Fix segfault when cloning generator with properties

Rule of thumb: Always implement the object clone handler rather
than the object storage clone handler. Actually I think we should
drop the latter. It's nearly never usable.

show more ...


Revision tags: php-5.3.22RC1
# 8b972efe 30-Jan-2013 Nikita Popov

Fix potential segfault when finally in a generator is run during shutdown

If a generator is destroyed in a finally block it will resume the generator to run that finally
block before fre

Fix potential segfault when finally in a generator is run during shutdown

If a generator is destroyed in a finally block it will resume the generator to run that finally
block before freeing the generator. This was done in the object storage free handler.

Running user code in the free handler isn't safe though because the free handlers may be run
during request shutdown, already after several key components have been shut down.

This is avoided by doing the finally handling in the dtor handler. These handlers are run at the
start of the shutdown sequence.

show more ...


Revision tags: php-5.4.12RC1, php-5.5.0alpha4, php-5.3.21, php-5.4.11, php-5.5.0alpha3, php-5.3.21RC1, php-5.4.11RC1
# a666285b 01-Jan-2013 Xinchen Hui

Happy New Year


Revision tags: php-5.3.20, php-5.4.10
# be7b0bc3 17-Dec-2012 Nikita Popov

Implement Generator::throw() method

Generator::throw($exception) throws an exception into the generator. The
exception is thrown at the current point of suspension within the generator.

Implement Generator::throw() method

Generator::throw($exception) throws an exception into the generator. The
exception is thrown at the current point of suspension within the generator.
It basically behaves as if the current yield statement were replaced with
a throw statement and the generator subsequently resumed.

show more ...


# 14f13303 21-Dec-2012 Nikita Popov

Fix crash when last yielded value is a closure

If zend_generator_close is called from within zend_generator_resume (e.g.
due to a return statement) then all the EGs will still be using t

Fix crash when last yielded value is a closure

If zend_generator_close is called from within zend_generator_resume (e.g.
due to a return statement) then all the EGs will still be using the values
from the generator. That's why the stack frame has to be the last thing
that is dtored, otherwise some other dtor that is using
EG(current_execute_data) might access the already freed memory segment.
This was the case with the closure dtor.

The fix is to move the dtors for key and value to the start of the handler.
This way the stack frame is the last thing that is freed.

show more ...


# 3e78c6ad 20-Dec-2012 Nikita Popov

Do not add a ref to EX(object) on generator clone

If a ref has to be added it will be already added while walking the call
slots.


# d53f1bf8 18-Dec-2012 Nikita Popov

Fix leak when generator ignores sent value

When the return value of yield wasn't used it was leaked.

This is fixed by using a TMP_VAR return value instead of VAR. TMP_VARs are
a

Fix leak when generator ignores sent value

When the return value of yield wasn't used it was leaked.

This is fixed by using a TMP_VAR return value instead of VAR. TMP_VARs are
automatically freed when they aren't used.

show more ...


Revision tags: php-5.5.0alpha2
# a73a6be7 14-Dec-2012 Xinchen Hui

Fix warning of no return in non-void function


# 9c96fe52 12-Dec-2012 Dmitry Stogov

Restored proper generators behaviour in conjunction with "finally". (Nikita)


12345678