#
70f83f35 |
| 30-Nov-2012 |
Dmitry Stogov |
. The VM stacks for passing function arguments and syntaticaly nested calls were merged into a single stack. The stack size needed for op_array execution is calculated at compile time and preallocate
. The VM stacks for passing function arguments and syntaticaly nested calls were merged into a single stack. The stack size needed for op_array execution is calculated at compile time and preallocated at once. As result all the stack push operatins don't require checks for stack overflow any more. . Generators implementation was improved using the new VM stack. Now it's a bit more clear and faster.
show more ...
|
#
60871e51 |
| 24-Nov-2012 |
Nikita Popov |
Fix bug #63596: finally in generators segfaults EX(fast_ret) wasn't initialized in this case so the code ended up dereferencing an invalid pointer after the jump.
|
#
eb4825b5 |
| 22-Nov-2012 |
Dmitry Stogov |
Improved "finally" im[plementation
|
Revision tags: php-5.3.19, php-5.4.9, php-5.5.0alpha1, php-5.3.19RC1, php-5.4.9RC1 |
|
#
7bcb8780 |
| 04-Nov-2012 |
Xinchen Hui |
Fixed bug #63428 (The behavior of execute() changed)
|
Revision tags: php-5.3.18, php-5.4.8, php-5.3.18RC1, php-5.4.8RC1 |
|
#
a31fa55b |
| 22-Sep-2012 |
Nikita Popov |
Fixed bug #63132 EG(arg_types_stack) is now also backed up when generators are used. This allows the use of yield in nested method calls. This commit adds two new functions to t
Fixed bug #63132 EG(arg_types_stack) is now also backed up when generators are used. This allows the use of yield in nested method calls. This commit adds two new functions to the zend_ptr_stack API: zend_ptr_stack_push_from_memory zend_ptr_stack_pop_into_memory both taking the following arguments: zend_ptr_stack *stack, int count, void **pointers
show more ...
|
#
a47c11a1 |
| 16-Sep-2012 |
Nikita Popov |
Fix two op_array -> function cast warnings
|
Revision tags: php-5.3.17, php-5.4.7 |
|
#
4a7d1b4e |
| 05-Sep-2012 |
Pierre Joye |
- fix build, declarations must be 1st in a contextgit checkout -f master
|
#
72473962 |
| 05-Sep-2012 |
Dmitry Stogov |
Fixed bug #62991 (Segfault with generator and closure)
|
#
dbc7809b |
| 29-Aug-2012 |
Nikita Popov |
Fix typos
|
#
bef79588 |
| 29-Aug-2012 |
Nikita Popov |
Fix segfault when traversing a by-ref generator twice If you try to traverse an already closed generator an exception will now be thrown. Furthermore this changes the error for
Fix segfault when traversing a by-ref generator twice If you try to traverse an already closed generator an exception will now be thrown. Furthermore this changes the error for traversing a by-val generator by-ref from an E_ERROR to an Exception.
show more ...
|
#
cc07038f |
| 29-Aug-2012 |
Nikita Popov |
Make sure that exception is thrown on rewind() after closing too
|
Revision tags: php-5.4.7RC1 |
|
#
f53225a9 |
| 25-Aug-2012 |
Nikita Popov |
Fix several issues and allow rewind only at/before first yield * Trying to resume a generator while it is already running now throws a fatal error. * Trying to use yield in fina
Fix several issues and allow rewind only at/before first yield * Trying to resume a generator while it is already running now throws a fatal error. * Trying to use yield in finally while the generator is being force-closed (by GC) throws a fatal error. * Rewinding after the first yield now throws an Exception
show more ...
|
#
4d8edda3 |
| 24-Aug-2012 |
Nikita Popov |
Run finally if generator is closed before finishing
|
#
f45a0f31 |
| 20-Aug-2012 |
Nikita Popov |
Disallow serialization and unserialization
|
#
05f10480 |
| 20-Aug-2012 |
Nikita Popov |
Drop Generator::close() method
|
Revision tags: php-5.3.16, php-5.4.6, php-5.4.6RC1 |
|
#
268740d9 |
| 26-Jul-2012 |
Nikita Popov |
Fix implementation of Iterator interface It looks like you have to implement the Iterator interface *before* assigning get_iterator. Otherwise the structure for user iterators isn't
Fix implementation of Iterator interface It looks like you have to implement the Iterator interface *before* assigning get_iterator. Otherwise the structure for user iterators isn't correctly zeroed out. Additionaly I'm setting class_entry->iterator_funcs.funcs now. Not sure if this is strictly necessary, but better safe than sorry ;)
show more ...
|
#
94b2ccae |
| 22-Jul-2012 |
Nikita Popov |
Fix throwing of exceptions within a generator If a generator threw an exception and was iterated using foreach (i.e. not manually) an infinite loop was triggered. The reason was that the
Fix throwing of exceptions within a generator If a generator threw an exception and was iterated using foreach (i.e. not manually) an infinite loop was triggered. The reason was that the exception was not properly rethrown using zend_throw_exception_internal.
show more ...
|
#
c9709bfb |
| 19-Jul-2012 |
Nikita Popov |
Remove asterix modifier (*) for generators Generators are now automatically detected by the presence of a `yield` expression in their body. This removes the ZEND_SUSPEND_AND_RET
Remove asterix modifier (*) for generators Generators are now automatically detected by the presence of a `yield` expression in their body. This removes the ZEND_SUSPEND_AND_RETURN_GENERATOR opcode. Instead additional checks for ZEND_ACC_GENERATOR are added to the fcall_common helper and zend_call_function. This also adds a new function zend_generator_create_zval, which handles the actual creation of the generator zval from an op array. I feel like I should deglobalize the zend_create_execute_data_from_op_array code a bit. It currently changes EG(current_execute_data) and EG(opline_ptr) which is somewhat confusing (given the name).
show more ...
|
Revision tags: php-5.4.5 |
|
#
85f077ce |
| 17-Jul-2012 |
Nikita Popov |
Add support by yielding by-reference
|
Revision tags: php-5.3.15, php-5.3.15RC1, php-5.4.5RC1 |
|
#
ab75ed6b |
| 23-Jun-2012 |
Nikita Popov |
Disallow closing a generator during its execution If a generator is closed while it is running an E_WARNING is thrown and the call is ignored. Maybe a fatal error should be thrown instea
Disallow closing a generator during its execution If a generator is closed while it is running an E_WARNING is thrown and the call is ignored. Maybe a fatal error should be thrown instead?
show more ...
|
#
14766e14 |
| 23-Jun-2012 |
Nikita Popov |
Pass zend_generator directly to Zend VM Previously the zval* of the generator was passed into the VM by misusing EG(return_value_ptr_ptr). Now the zend_generator* itself is directly pass
Pass zend_generator directly to Zend VM Previously the zval* of the generator was passed into the VM by misusing EG(return_value_ptr_ptr). Now the zend_generator* itself is directly passed in. This saves us from always having to pass the zval* around everywhere.
show more ...
|
#
04e781f0 |
| 22-Jun-2012 |
Nikita Popov |
Implement get_iterator This implements the get_iterator handler for Generator objects, thus making direct foreach() iteration significantly faster.
|
#
6233408a |
| 20-Jun-2012 |
Nikita Popov |
Fix thread safe build
|
Revision tags: php-5.3.14, php-5.4.4 |
|
#
d939d2de |
| 11-Jun-2012 |
Nikita Popov |
Add sceleton for yield* expression This does not yet actually implement any delegation.
|
#
f169b26d |
| 08-Jun-2012 |
Nikita Popov |
Fix backtraces and func_get_args() To make the generator function show up in backtraces one has to insert an additional execute_data into the chain, as prev_execute_data->function_state
Fix backtraces and func_get_args() To make the generator function show up in backtraces one has to insert an additional execute_data into the chain, as prev_execute_data->function_state is used to determine the called function. Adding the additional stack frame is also required for func_get_args(), as the arguments are fetched from there too. The arguments have to be copied in order to keep them around. Due to the way they are saved doing so is quite ugly, so I added another function zend_copy_arguments to zend_execute.c which handles this.
show more ...
|