Commit Graph

631 Commits

Author SHA1 Message Date
Xinchen Hui
a28ce57bc5 Merge branch 'refactoring2' of github.com:zendtech/php into refactoring2 2014-02-19 18:42:22 +08:00
Xinchen Hui
75f583de91 Fixed memory leak (forgot to release the zval) 2014-02-19 18:41:50 +08:00
Dmitry Stogov
9187abfaef Merge branch 'refactoring2' of github.com:zend-dev/php into refactoring2 2014-02-19 14:36:05 +04:00
Dmitry Stogov
8bae1daa0c Use better data structures (incomplete) 2014-02-19 14:35:28 +04:00
Xinchen Hui
757facf6c1 Fixed segfault in BEGIN/END SILENT 2014-02-19 18:34:27 +08:00
Dmitry Stogov
9067dbcd0d Use better data structures (incomplete) 2014-02-19 12:03:01 +04:00
Dmitry Stogov
557994d50d Use better data structures (incomplete) 2014-02-19 01:12:05 +04:00
Dmitry Stogov
bb58ea348c Use better data structures (incomplete) 2014-02-18 18:10:54 +04:00
Dmitry Stogov
5de7115679 Use better data structures (incomplete; able to run bench.php) 2014-02-18 16:27:38 +04:00
Dmitry Stogov
1c4f3d39a8 Use better data structures (incomplete) 2014-02-18 11:44:58 +04:00
Dmitry Stogov
a0fe8e5a91 Use better data structures (incomplete) 2014-02-18 01:41:23 +04:00
Dmitry Stogov
be82a07776 Use better data structures (incomplete) 2014-02-12 18:08:11 +04:00
Dmitry Stogov
4e66abad54 Use better data structures (incomplete) - refactored return_value handling 2014-02-12 14:29:51 +04:00
Dmitry Stogov
f4cfaf36e2 Use better data structures (incomplete) 2014-02-10 10:04:30 +04:00
Nikita Popov
89eab884d9 Merge branch 'PHP-5.6' 2014-01-18 14:44:57 +01:00
Nikita Popov
31a2ac470c Fix argument unpacking across stack pages
If multiple unpacks were used (or mixed with normal arguments)
parts of the arguments could land on different stack pages. If
this occurs the arguments will now be copied to a new stack page.

The code used to do this is copied verbatim from the PHP 5.4 branch
and only modified to reduce the amount of inlined code.
2014-01-18 14:41:33 +01:00
Nikita Popov
4facc35413 Merge branch 'PHP-5.6' 2014-01-11 12:54:08 +01:00
Nikita Popov
2c47dfbaeb Implement argument unpacking
RFC: https://wiki.php.net/rfc/argument_unpacking
2014-01-11 12:42:08 +01:00
Xinchen Hui
0f53e37494 Merge branch 'PHP-5.6' 2014-01-03 11:09:07 +08:00
Xinchen Hui
c081ce628f Bump year 2014-01-03 11:08:10 +08:00
krakjoe
8ce521a6a7 missing, apparently 2013-12-22 13:19:35 +00:00
Kalle Sommer Nielsen
aed4b086ac Eliminate the TSRMLS_FETCH() calls in the ticks functions and hook 2013-12-18 09:32:26 +01:00
Kalle Sommer Nielsen
2eb9bd316d Merge branch 'master' of https://git.php.net/push/php-src 2013-12-18 07:27:14 +01:00
Kalle Sommer Nielsen
d14670ccdb Eliminate another TSRMLS_FETCH() in i_zend_is_true()
# Affected extensions have all been updated, ext/opcache and ext/zip
# both have macros for cross version compatibility
2013-12-18 07:25:05 +01:00
Xinchen Hui
b331a219be Use memcmp here is better 2013-12-17 15:37:10 +08:00
Xinchen Hui
794a888a48 Fixed bug #65784 (Segfault with finally). 2013-12-13 00:16:08 +08:00
Nikita Popov
e2a8d7dc17 Merge branch 'PHP-5.5' into PHP-5.6 2013-11-30 13:40:17 +01:00
Nikita Popov
9589cae8cb 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.
2013-11-30 13:08:31 +01:00
Bob Weinand
d36cf90291 Merge branch 'const_scalar_exprs' into PHP-5.6
Conflicts:
	Zend/zend_extensions.h
2013-11-28 13:41:42 +01:00
Dmitry Stogov
57c1335fec Don't check argument types for internal functions without type hinting 2013-11-28 11:44:14 +04:00
Dmitry Stogov
43e3933fa3 Removed deprecated AI_SET_PTR()s 2013-11-27 20:30:35 +04:00
Dmitry Stogov
a908afeaa5 Merge branch 'PHP-5.5' into PHP-5.6
* PHP-5.5:
  Fixed bug #65969 (Chain assignment with T_LIST failure)

Conflicts:
	NEWS
	Zend/zend_vm_def.h
	Zend/zend_vm_execute.h
2013-11-27 14:56:18 +04:00
Dmitry Stogov
92b76680e9 Merge branch 'PHP-5.4' into PHP-5.5
* PHP-5.4:
  Fixed bug #65969 (Chain assignment with T_LIST failure)

Conflicts:
	NEWS
	Zend/zend_vm_def.h
	Zend/zend_vm_execute.h
2013-11-27 14:39:40 +04:00
Dmitry Stogov
16d59aa171 Fixed bug #65969 (Chain assignment with T_LIST failure) 2013-11-27 14:26:34 +04:00
Dmitry Stogov
9647c61dc1 Constant expressions refactoring 2013-11-06 22:21:07 +04:00
Dmitry Stogov
af600c240d Merge branch 'const_scalar_exprs' of github.com:bwoebi/php-src into const_scalar_exprs
* 'const_scalar_exprs' of github.com:bwoebi/php-src:
  Removed operations on constant arrays. They make no sense as constants are not allowed to be arrays. And as just properties are allowed to; no problem, we still don't need operations on any constant array.
  Added a few more operators
  Whitespace fix
  converted several switches to ifs and made more opcache friendly
  Fatal error about self referencing constants fixed
  Fixed mem leaks, added tests and ternary operator
  Working commit for constant scalar expressions (with constants). Tests will follow.

Conflicts:
	Zend/Makefile.am
	configure.in
	win32/build/config.w32
2013-11-06 15:41:33 +04:00
Bob Weinand
b45043a1b7 converted several switches to ifs and made more opcache friendly 2013-11-01 16:16:58 +01:00
Bob Weinand
2361745806 Working commit for constant scalar expressions (with constants).
Tests will follow.
2013-10-31 08:57:12 +01:00
Dmitry Stogov
3b2ca392f1 Removed unnecessary GC checks 2013-10-31 11:33:39 +04:00
Dmitry Stogov
592be912c2 Merge branch 'PHP-5.5'
* PHP-5.5:
  Use zval* instead of zval**

Conflicts:
	Zend/zend_vm_def.h
	Zend/zend_vm_execute.h
2013-10-28 15:23:10 +04:00
Dmitry Stogov
2d14cc2a49 Use zval* instead of zval** 2013-10-28 14:44:07 +04:00
Nikita Popov
ff46b6f633 Merge branch 'PHP-5.5' 2013-10-04 13:15:45 +02:00
Nikita Popov
536260f2c5 Fix bug #65821: By-ref foreach on property access of string offset segfaults
This removes the now unnecessary ZEND_FETCH_ADD_LOCK on the
container of a property fetch of a by-reference foreach.
2013-10-04 13:13:46 +02:00
Nikita Popov
0d7a638866 Implement variadic function syntax
As per RFC: https://wiki.php.net/rfc/variadics
2013-09-26 18:39:17 +02:00
Nikita Popov
bdfa03d79d Save a TSRMLS_FETCH() for zval_ptr_dtor in executor
This gives me about 9% improvement on Zend/bench.php for a zts build.
2013-09-14 23:02:26 +02:00
Nikita Popov
96b1c2145c Provide more macros for handling of interned strings
* str_erealloc behaves like erealloc for normal strings, but will
   use emalloc+memcpy for interned strings.
 * str_estrndup behaves like estrndup for normal strings, but will
   not copy interned strings.
 * str_strndup behaves like zend_strndup for normal strings, but
   will not copy interned strings.
 * str_efree_rel behaves like efree_rel for normal strings, but
   will not free interned strings.
 * str_hash will return INTERNED_HASH for interned strings and
   compute it using zend_hash_func for normal strings.
2013-09-13 19:42:10 +02:00
Gustavo André dos Santos Lopes
d515455589 Implement phase 1 of rfc/incompat_ctx
Just changing the error level of the message from E_STRICT to
E_DEPRECATED. This comes one version later than the timeline
mentioned in the RFC.

Oddly, there were no tests for this ‘feature’. I added a simple
one.
2013-09-02 01:53:06 +02:00
Nikita Popov
0856714576 Always pass return_value_ptr to internal functions
Previous some places passed return_value_ptr only if the function
returned by reference. Now return_value_ptr is always set, even
for functions returning by-value.

This allows you to return zvals without copying their contents. For
this purpose two new macros RETVAL_ZVAL_FAST and RETURN_ZVAL_FAST
are added:

    RETVAL_ZVAL_FAST(zv); /* Analog to RETVAL_ZVAL(zv, 1, 0) */
    RETURN_ZVAL_FAST(zv); /* Analog to RETURN_ZVAL(zv, 1, 0) */

These macros behave similarly to the non-FAST versions with
copy=1 and dtor=0, with the difference that the FAST versions
will try return the zval without copying by utilizing return_value_ptr.
2013-08-31 13:16:41 +02:00
Anatol Belski
07fa043cc3 Merge branch 'PHP-5.5'
* PHP-5.5:
  Suppress static analyzer warnings in specialized executor
  Update NEWS
2013-08-23 17:45:45 +02:00
Anatol Belski
716fc80fda Suppress static analyzer warnings in specialized executor
As things like if(0) will be removed by the compiler, no need
to see that tons of warnings with static analyzer enabled.
2013-08-23 17:41:07 +02:00
Xinchen Hui
b6fa0b40f7 Merge branch 'PHP-5.5' 2013-08-14 11:44:53 +08:00
Xinchen Hui
f3d18add08 Merge branch 'PHP-5.4' into PHP-5.5 2013-08-14 11:44:37 +08:00
Xinchen Hui
f4dc2240a0 Fixed #65431 (Discarded qualifiers from pointer target warnings when using --enable-dtrace) by Sixd 2013-08-14 11:42:39 +08:00
Dmitry Stogov
52dac3e8cd Fixed bug #65382 (Segfault in closure_030.phpt) 2013-08-12 10:53:20 +04:00
Xinchen Hui
9b38673776 Merge branch 'PHP-5.5' 2013-08-06 15:39:46 +08:00
Xinchen Hui
aa042d0c35 Merge branch 'PHP-5.4' into PHP-5.5 2013-08-06 15:39:33 +08:00
Xinchen Hui
a831499b4a Re-fix Bug #65372 (Segfault in gc_zval_possible_root when return reference fails)
Missed a zval_copy_ctor there
2013-08-06 15:37:20 +08:00
Xinchen Hui
78673d1bad Merge branch 'PHP-5.5' 2013-08-02 18:39:58 +08:00
Xinchen Hui
1e942dde24 Merge branch 'PHP-5.4' into PHP-5.5 2013-08-02 18:39:18 +08:00
Xinchen Hui
ce9169e360 Fixed bug Bug #65372 (Segfault in gc_zval_possible_root when return reference fails) 2013-08-02 18:37:15 +08:00
Stanislav Malyshev
02457554a3 Merge branch 'PHP-5.5'
* PHP-5.5:
  backward compatibility
  HASH_KEY_NON_EXISTANT fix
2013-07-21 20:10:31 -07:00
Veres Lajos
4749457a49 HASH_KEY_NON_EXISTANT fix 2013-07-21 20:09:53 -07:00
Xinchen Hui
75808151e3 Merge branch 'PHP-5.5'
Conflicts:
	Zend/zend_vm_execute.h
2013-07-14 12:01:50 +08:00
Xinchen Hui
2c4f823437 Merge branch 'PHP-5.4' into PHP-5.5
Conflicts:
	Zend/zend_vm_def.h
	Zend/zend_vm_execute.h
2013-07-14 11:53:56 +08:00
Xinchen Hui
ebad5178c4 Fixed bug #65254 (Exception not catchable when exception thrown in autoload with a namespace). 2013-07-14 11:47:06 +08:00
Xinchen Hui
e14800dd46 Fixed merge wrongly 2013-06-09 14:24:05 +08:00
Xinchen Hui
4600578830 Merge branch 'PHP-5.5' 2013-06-09 13:50:06 +08:00
Xinchen Hui
f372e00332 Merge branch 'PHP-5.4' into PHP-5.5
Conflicts:
	Zend/zend_vm_def.h
2013-06-09 13:49:26 +08:00
Xinchen Hui
ab22fda7e5 Merge branch 'PHP-5.3' into PHP-5.4 2013-06-09 13:35:45 +08:00
Xinchen Hui
e8f004d542 Fixed bug #64966 (segfault in zend_do_fcall_common_helper_SPEC) 2013-06-09 13:20:40 +08:00
Dmitry Stogov
273ad58295 Improved IS_VAR operands fetching 2013-05-17 13:15:09 +04:00
Dmitry Stogov
302de03a5a Merge branch 'PHP-5.5'
* PHP-5.5:
  Fixed incorrect check. SEND_REF may be executed before DO_FCALL when EX(function_state).function is not yet set to the calling function.
2013-04-24 00:04:00 +04:00
Dmitry Stogov
758b666c0a Merge branch 'PHP-5.4' into PHP-5.5
* PHP-5.4:
  Fixed incorrect check. SEND_REF may be executed before DO_FCALL when EX(function_state).function is not yet set to the calling function.

Conflicts:
	Zend/zend_vm_def.h
	Zend/zend_vm_execute.h
2013-04-23 23:59:00 +04:00
Dmitry Stogov
43ab915b41 Merge branch 'PHP-5.3' into PHP-5.4
* PHP-5.3:
  Fixed incorrect check. SEND_REF may be executed before DO_FCALL when EX(function_state).function is not yet set to the calling function.

Conflicts:
	Zend/zend_vm_def.h
	Zend/zend_vm_execute.h
2013-04-23 23:55:47 +04:00
Dmitry Stogov
4cf0647399 Fixed incorrect check. SEND_REF may be executed before DO_FCALL when EX(function_state).function is not yet set to the calling function. 2013-04-23 23:43:23 +04:00
Xinchen Hui
bcb223a626 Merge branch 'PHP-5.5' 2013-04-11 14:29:51 +08:00
Xinchen Hui
a5cfe57e08 Merge branch 'PHP-5.4' into PHP-5.5 2013-04-11 14:29:09 +08:00
Xinchen Hui
ba292b037f Fixed bug (Wrong ce cached) 2013-04-11 14:28:42 +08:00
Xinchen Hui
c2afd2765b Merge branch 'PHP-5.5' 2013-03-26 12:03:37 +08:00
Xinchen Hui
ed31582301 Fixed bug #64515 (Memoryleak when using the same variablename 2times in function declaration) 2013-03-26 12:02:48 +08:00
Xinchen Hui
5e9377ebd5 Fixed bug #64515 (Memoryleak when using the same variablename 2times in function declaration) 2013-03-26 11:44:57 +08:00
Dmitry Stogov
a4c386f32c Merge branch 'PHP-5.5'
* PHP-5.5:
  Fixed bug #63914 (zend_do_fcall_common_helper_SPEC does not handle exceptions properly). (Jeff Welch)
2013-03-25 15:48:13 +04:00
Dmitry Stogov
96e5f5eb05 Merge branch 'PHP-5.4' into PHP-5.5
* PHP-5.4:
  Fixed bug #63914 (zend_do_fcall_common_helper_SPEC does not handle exceptions properly). (Jeff Welch)

Conflicts:
	NEWS
	Zend/zend_vm_def.h
	Zend/zend_vm_execute.h
2013-03-25 15:47:45 +04:00
Dmitry Stogov
e9f996c00d Merge branch 'PHP-5.3' into PHP-5.4
* PHP-5.3:
  Fixed bug #63914 (zend_do_fcall_common_helper_SPEC does not handle exceptions properly). (Jeff Welch)

Conflicts:
	NEWS
	Zend/zend_vm_def.h
	Zend/zend_vm_execute.h
2013-03-25 15:23:49 +04:00
Dmitry Stogov
c4686b4de9 Fixed bug #63914 (zend_do_fcall_common_helper_SPEC does not handle exceptions properly). (Jeff Welch) 2013-03-25 15:07:27 +04:00
Dmitry Stogov
22b0f5d829 Merge branch 'PHP-5.5'
* PHP-5.5:
  Removed redundand code
2013-03-14 14:22:51 +04:00
Dmitry Stogov
dd1c358d1b Merge branch 'PHP-5.5' of git.php.net:php-src into PHP-5.5
* 'PHP-5.5' of git.php.net:php-src:
  fix the fix
  fix for bug  #63530 	mysqlnd_stmt::bind_one_parameter uses wrong alloc for stmt->param_bind
  Forgot to remove some now unused variables
  Add support for non-scalar Iterator keys in foreach
  fixed headers order
  - Updated to version 2013.2 (2013b)
  fixed the test
  Fixed bug #64370 (microtime(true) less than $_SERVER['REQUEST_TIME_FLOAT'])
  Disable zend_always_inline in debug build
2013-03-14 14:19:41 +04:00
Dmitry Stogov
d77c865aff Removed redundand code 2013-03-13 17:51:10 +04:00
Nikita Popov
81623d3a60 Merge branch 'PHP-5.5'
Conflicts:
	UPGRADING
	UPGRADING.INTERNALS
2013-03-12 17:29:54 +01:00
Nikita Popov
fcc6611de9 Add support for non-scalar Iterator keys in foreach
RFC: https://wiki.php.net/rfc/foreach-non-scalar-keys
2013-03-12 17:27:31 +01:00
Stanislav Malyshev
4c293bfe91 Merge branch 'PHP-5.5'
* PHP-5.5:
  news for bug #49348
  fix tests
  fix bug #49348 - issue notice on get_property_ptr_ptr when used for read
2013-02-21 00:57:52 -08:00
Stanislav Malyshev
0c6d903ce7 fix bug #49348 - issue notice on get_property_ptr_ptr when used for read 2013-02-18 20:56:02 -08:00
Xinchen Hui
92046b7ef1 Merge branch 'PHP-5.5' 2013-02-16 22:25:37 +08:00
Xinchen Hui
75742d57eb Exceptions triggered by undefined variable should be handled before FATAL error
this is a enhancement of the fix for bug #64135
2013-02-16 22:22:22 +08:00
Xinchen Hui
7fb07acf98 Merge branch 'PHP-5.5' 2013-02-07 23:46:15 +08:00
Xinchen Hui
290509755a Fixed bug #64135 (Exceptions from set_error_handler are not always propagated) 2013-02-07 23:44:46 +08:00
Gustavo Lopes
ddc98aa814 Merge branch 'PHP-5.5'
* PHP-5.5:
  Fix bug #64023 (__toString() & SplFileInfo)
2013-01-23 13:26:15 +01:00
Gustavo Lopes
fc7b054c2d Merge branch 'PHP-5.4' into PHP-5.5
* PHP-5.4:
  Fix bug #64023 (__toString() & SplFileInfo)
2013-01-23 13:24:50 +01:00
Gustavo Lopes
b8b3bb08b2 Merge branch 'bug64023' into PHP-5.4
* bug64023:
  Fix bug #64023 (__toString() & SplFileInfo)

Conflicts:
	Zend/zend_vm_def.h
	Zend/zend_vm_execute.h
2013-01-22 12:24:33 +01:00
Gustavo Lopes
aa0adce47d Fix bug #64023 (__toString() & SplFileInfo)
Defining a __toString() method was having no effect when concatenating
the object. This was because the cast_object() handler would ignore
__toString().

Using echo() directly would actually use __toString(), but this was a
bug: the ECHO handler would try zend_std_cast_object_tostring() before
cast_object(), but cast_object() should have priority as
zend_std_cast_object_tostring() assumes an object with a
zend_class_entry.
2013-01-22 11:33:29 +01:00
Lars Strojny
b1ddfcbee3 Merge branch 'PHP-5.5' 2013-01-19 01:01:39 +01:00
Lars Strojny
8991ed016f Class Name Resolution As Scalar Via "class" Keyword 2013-01-19 01:00:47 +01:00
Xinchen Hui
f6260b36dd Merge branch 'PHP-5.5' 2013-01-14 16:24:26 +08:00
Xinchen Hui
62059c16ee Fixed bug #63980 (object members get trimmed by zero bytes) 2013-01-14 16:23:22 +08:00
Xinchen Hui
642721b38a Merge branch 'PHP-5.5' 2013-01-01 16:39:03 +08:00
Xinchen Hui
a666285bc2 Happy New Year 2013-01-01 16:37:09 +08:00
Xinchen Hui
0a7395e009 Happy New Year 2013-01-01 16:28:54 +08:00
Xinchen Hui
831fbcf385 Happy New Year 2013-01-01 16:23:31 +08:00
Nikita Popov
4509016309 Merge branch 'PHP-5.5' 2012-12-21 01:58:29 +01:00
Nikita Popov
ffb848b275 Fix bug #63822: Crash when using closures with ArrayAccess
op_array->T was used after the closure's op_array was already freed. This just
swaps the freeing order.
2012-12-21 01:56:37 +01:00
Nikita Popov
5f7c478d53 Merge branch 'PHP-5.5' 2012-12-18 21:41:55 +01:00
Nikita Popov
d53f1bf8ab 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.
2012-12-18 21:39:02 +01:00
Xinchen Hui
210d428f99 ixed bug that exception won't be catched
Related failed test Zend/tests/bug35437.phpt (after he latest
execute_data improvement, run with non CALL vm kind)
2012-12-18 15:34:47 +08:00
Xinchen Hui
d3ec9ceb25 Revert "Fixed bug that exception won't be catched"
This reverts commit 28db07a0e3.

Unexpected vm kind change
2012-12-18 15:27:54 +08:00
Xinchen Hui
28db07a0e3 Fixed bug that exception won't be catched
related failed test Zend/tests/bug35437.phpt (after he latest
execute_data improvement, run with non CALL vm kind)
2012-12-18 15:20:58 +08:00
Xinchen Hui
9fb5cfdeb1 Fixed warning of no return in non-void funciton 2012-12-14 17:21:43 +08:00
Dmitry Stogov
e65b966aac Fixed uninitialized EX(call)->called_scope 2012-12-14 12:10:29 +04:00
Dmitry Stogov
d5c2da5756 Removed unreachable code 2012-12-13 17:51:04 +04:00
Dmitry Stogov
438cd86378 Removed unnecessary checks 2012-12-13 17:29:30 +04:00
Dmitry Stogov
6b0b4bf8eb An exception thrown in try or catch block is disacarded by return statement in finally block. 2012-12-13 02:48:51 +04:00
Dmitry Stogov
9c96fe52d9 Restored proper generators behaviour in conjunction with "finally". (Nikita) 2012-12-12 17:47:55 +04:00
Dmitry Stogov
a9a5f7aca6 - generators API exported for extensions
- improved RETURN sequence to avoid redundant check if op_array is a generator
2012-12-11 17:25:32 +04:00
Dmitry Stogov
e3b2a5cf74 Generatirs are going to be used less than regular functions 2012-12-06 13:14:31 +04:00
Dmitry Stogov
fa30e4754b Slight performance improvement 2012-12-05 13:23:37 +04:00
Dmitry Stogov
61dbf35cfc Moved zend_create_execute_data_from_op_array() implementation from zend_vm_execute.skl to zend_execute.c 2012-12-04 10:42:19 +04:00
Dmitry Stogov
7651d64556 Optimized access to temporary and compiled VM variables 2012-12-04 10:14:39 +04:00
Dmitry Stogov
70f83f35d0 . 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.
2012-11-30 13:39:23 +04:00
Dmitry Stogov
eb4825b50b Improved "finally" im[plementation 2012-11-22 15:17:05 +04:00
Xinchen Hui
7bcb8780e0 Fixed bug #63428 (The behavior of execute() changed) 2012-11-04 12:48:35 +08:00
Stanislav Malyshev
531e2533dd Use zend_execute_internal always to call internal functions 2012-10-05 08:14:20 +02:00
Nikita Popov
aaabac2473 Merge branch 'PHP-5.4'
Conflicts:
	Zend/zend_vm_def.h
2012-09-27 18:46:27 +02:00
Nikita Popov
592b232e83 Fix bug #63173: Crash when invoking invalid array callback
The code did not check whether the zend_hash_index_find calls succeded,
so PHP crashed when an array callback was called that contains two elements
which don't have the indices 0 and 1.
2012-09-27 18:40:00 +02:00
Xinchen Hui
fd0b3ea663 Fixed bug #61442 (exception threw in __autoload can not be catched) 2012-09-19 19:40:59 +08:00
Nikita Popov
a47c11a13d Fix two op_array -> function cast warnings 2012-09-16 22:01:07 +02:00
Nikita Popov
fb03ce93d3 Fix invalid read / remove useless code
Generators follow a different cleanup path, so the extra check for freeing
the execute_data is unnecessary there. It actually caused problems because
op_array->fn_flags could be in freed memory at that time (in case op_array
came from a closure in an ArrayAccess container).

This fixes the valgrind warning in Zend/tests/bug54367.phpt.
2012-09-16 21:48:57 +02:00
Nikita Popov
dffffdeb3d Fix leak when yielding array as key
The code was copy-pasted and I forgot to change OP1 to OP2 in that one
place.
2012-09-01 20:31:40 +02:00
Nikita Popov
d60e3c6ef5 Merge remote-tracking branch 'php-src/master' into addGeneratorsSupport
Conflicts:
	Zend/zend_language_parser.y
	Zend/zend_vm_execute.skl
2012-08-26 13:03:55 +02:00
Nikita Popov
bd70d15588 Remove implementation stubs for yield delegation
I decided to leave out yield delegation for an initial proposal, so remove
the stubs for it too.
2012-08-25 19:03:23 +02:00
Nikita Popov
f53225a99e 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
2012-08-25 17:40:08 +02:00
Xinchen Hui
326aa08753 Prefer no finally block for most situations 2012-08-25 21:14:51 +08:00
Nikita Popov
68c1e1cfe9 Add dedicated opcode for returns from a generator
Generators don't have a return value, so it doesn't make sense to have
a shared implementation here.
2012-08-24 13:51:39 +02:00
Nikita Popov
6517ed0215 Merge remote-tracking branch 'php-src/master' into addGeneratorsSupport
Conflicts:
	Zend/zend_vm_def.h
	Zend/zend_vm_execute.h
2012-08-24 13:29:40 +02:00
Xinchen Hui
60a29791e4 Fixed bug that jmp in try block jmp over finally block
Refactor the implemention,  make codes clear
2012-08-22 18:32:03 +08:00
Xinchen Hui
703a4e390d stash 2012-08-22 13:51:44 +08:00
Nikita Popov
1823b16fa1 Merge remote-tracking branch 'php-src/master' into addGeneratorsSupport
Merging master to fix Windows build

Conflicts:
	Zend/zend_language_scanner.c
	Zend/zend_language_scanner_defs.h
	Zend/zend_vm_def.h
2012-08-20 13:37:53 +02:00
Xinchen Hui
72b9b8f380 Make the codes clearer, and also check continue statement 2012-08-18 11:44:09 +08:00
Xinchen Hui
c64f4e736c Add functions declarations, use tabs 2012-08-14 08:59:40 +08:00
Anatoliy Belsky
baea290b6c fix windows build 2012-08-13 19:44:45 +02:00
Nikita Popov
ae716939eb Support trivial finally in generators (no yield, no return)
The finally clause is now properly run when an exception is thrown in the
try-block. It is not yet run on `return` and also not run when the generator
is claused within a try block.

I'll add those two things as soon as laruence refactored the finally code.
2012-08-13 17:22:21 +02:00
Nikita Popov
f4ce364628 Merge remote-tracking branch 'php-src/master' into addGeneratorsSupport
This is just an intial merge. It does not yet make generators and finally
work together.

Conflicts:
	Zend/zend_language_scanner.c
	Zend/zend_language_scanner_defs.h
	Zend/zend_vm_def.h
	Zend/zend_vm_execute.h
	Zend/zend_vm_execute.skl
	Zend/zend_vm_opcodes.h
2012-08-13 16:54:53 +02:00