Commit graph

1767 commits

Author SHA1 Message Date
Dmitry Stogov
3b8cb2119b Fixed bug #72347 (VERIFY_RETURN type casts visible in finally)
Fixed bug #72216 (Return by reference with finally is not memory safe)
Fixed bug #72215 (Wrong return value if var modified in finally)
2016-07-13 15:08:28 +03:00
Dmitry Stogov
fbca255cd0 Fixed bug #71539 (Memory error on $arr[$a] =& $arr[$b] if RHS rehashes) 2016-07-07 00:59:44 +03:00
Dmitry Stogov
023b812593 Fixed bug #72543 (Different references behavior comparing to PHP 5) 2016-07-06 20:46:43 +03:00
Aaron Piotrowski
d9a9cf8eca Merge branch 'master' into iterable 2016-07-03 22:42:10 -05:00
Xinchen Hui
d1dd474ff9 Fixed bug #72523 (dtrace issue with reflection (failed test)) 2016-07-01 18:50:35 +08:00
Dmitry Stogov
1a14533806 Introduce new CHECK_VAR instruction to keep warnings about undefined variables. 2016-06-30 21:40:34 +03:00
Nikita Popov
45cfe7852a Merge branch 'PHP-7.0'
Conflicts:
	Zend/zend_vm_def.h
	Zend/zend_vm_execute.h
2016-06-28 20:57:55 +02:00
Nikita Popov
fafe01b07b Make call_user_func() on reference args consistent
Previously reference arguments were allowed if call_user_func()
was compiled to SEND_USER and not otherwise. Make it consistent
by always forbidding them.
2016-06-28 20:43:38 +02:00
Dmitry Stogov
044e2718fe Fixed executor without global register variales (gcc warnings or clang errors) 2016-06-27 10:36:41 +03:00
Dmitry Stogov
a6387c0aa5 Added ability to make non-local control transfer through interrupt function 2016-06-24 12:20:41 +03:00
Dmitry Stogov
d0460d8f6b Turn safe timeout handling into general interrupt handling ability. 2016-06-23 15:01:23 +03:00
Dmitry Stogov
ebb99a1a3a Fixed compilation warnings 2016-06-21 16:55:17 +03:00
Dmitry Stogov
1616038698 Added ZEND_ATTRIBUTE_FORMAT to some middind functions.
"%p" replaced by ZEND_LONG_FMT to avoid compilation warnings.
Fixed most incorrect use cases of format specifiers.
2016-06-21 16:00:37 +03:00
Dmitry Stogov
ff363e2e7c Implemented RFC: Replace "Missing argument" warning with "Too few arguments" exception
Squashed commit of the following:

commit 8b45fa2acb
Author: Dmitry Stogov <dmitry@zend.com>
Date:   Thu Jun 16 01:52:50 2016 +0300

    Separate slow path of ZEND_RECV into a cold function.

commit 9e18895ee5
Author: Dmitry Stogov <dmitry@zend.com>
Date:   Wed Jun 15 23:26:28 2016 +0300

    Required argument can't be IS_UNDEF anymore.

commit 662db66e39
Author: Dmitry Stogov <dmitry@zend.com>
Date:   Tue May 31 17:14:50 2016 +0300

    Replace "Missing argument" warning by "Too few arguments" exception.
2016-06-16 02:32:02 +03:00
Dmitry Stogov
a9512af810 Implemented RFC: Fix inconsistent behavior of $this variable
Squashed commit of the following:

commit bdd3b6895c
Author: Dmitry Stogov <dmitry@zend.com>
Date:   Thu Jun 16 00:19:42 2016 +0300

    Fixed GOTO VM

commit 2f1d7c8b89
Author: Dmitry Stogov <dmitry@zend.com>
Date:   Wed Jun 15 21:01:57 2016 +0300

    Removed unused variable

commit cf749c42b0
Author: Dmitry Stogov <dmitry@zend.com>
Date:   Wed Jun 15 19:06:16 2016 +0300

    Protection from $this reassign through mb_parse_str()

commit 59a9a6c83c
Author: Dmitry Stogov <dmitry@zend.com>
Date:   Wed Jun 15 18:14:50 2016 +0300

    Added type inference rule for FETCH_THIS opcode

commit 73f8d14a85
Author: Dmitry Stogov <dmitry@zend.com>
Date:   Wed Jun 15 18:11:18 2016 +0300

    Restored PHP-7 behavior of isset($this->foo).
    It throws exception if not in object context.
    Removed useless opcode handlers.

commit fa0881381e
Author: Dmitry Stogov <dmitry@zend.com>
Date:   Tue May 31 12:25:47 2016 +0300

    Changed "Notice: Undefined variable: this" into "Exception: Using $this when not in object context".

commit e32cc528c0
Author: Dmitry Stogov <dmitry@zend.com>
Date:   Tue May 24 02:02:43 2016 +0300

    Throw exception on attempt to re-assign $this through extract() and parse_str().

commit 41f1531b52
Author: Dmitry Stogov <dmitry@zend.com>
Date:   Mon May 23 22:18:36 2016 +0300

    Fixed inconsistent $this behavior
2016-06-16 02:30:23 +03:00
Dmitry Stogov
006b8417d1 Added specialized handlers for SEND_VAR/SEND_VAR_EX opcodes. 2016-06-15 23:07:46 +03:00
Dmitry Stogov
e7e79aa409 Delay IS_ERROR checks 2016-06-09 12:39:38 +03:00
Dmitry Stogov
a315842751 typo 2016-06-08 19:01:28 +03:00
Nikita Popov
766ad0d970 Followup for bug #53432
Assign-ops and nested accesses now get the same treatment.
2016-06-08 15:43:58 +02:00
Dmitry Stogov
0c79896208 cleanup 2016-06-08 12:55:31 +03:00
Dmitry Stogov
fc587c7c55 Removed useless reference counting 2016-06-08 11:24:53 +03:00
Dmitry Stogov
10f056255e Better fix for bug #70228 (memleak if return in finally block) 2016-06-08 02:20:45 +03:00
Dmitry Stogov
2bae4e18a2 Fixed bug #70228 (Memleak if return in finally block) 2016-06-08 00:23:33 +03:00
Dmitry Stogov
421843977f Fixed bug #71266 (Missing separation of properties HT in foreach etc). 2016-06-07 23:18:52 +03:00
Dmitry Stogov
214d4613f5 cleanup 2016-06-07 01:14:53 +03:00
Dmitry Stogov
cebb5cd46e micro-optimization 2016-06-06 20:45:10 +03:00
Dmitry Stogov
58c083dfc9 simplification 2016-06-06 15:50:06 +03:00
Nikita Popov
945a83103d Fixed bug #53432
This change was discussed a while ago in the "negative string
offsets" thread.
2016-06-04 19:20:07 +02:00
Aaron Piotrowski
72692e9a9c Add iterable pseudo-type 2016-06-03 17:42:04 -05:00
Dmitry Stogov
6a32d44392 cleanup 2016-06-01 18:07:05 +03:00
Dmitry Stogov
b111da96d9 Split ZEND_SEND_VAR_NO_REF into ZEND_SEND_VAR_NO_REF and ZEND_SEND_VAR_NO_REF_EX (similar to ZEND_SEND_VAL) and remove ZEND_ARG_* flags. 2016-05-31 04:06:00 +03:00
Dmitry Stogov
f216176bc9 Initialize only the necessary fields. 2016-05-31 00:04:52 +03:00
Nikita Popov
921b3251b3 Fix bug #71604
Alternatively could throw some kind of uncatchable dummy exception
into the generator. Right now just checking for NULL in two places
seems simpler.
2016-05-28 14:40:32 +02:00
Nikita Popov
79de9fa4aa Merge branch 'PHP-7.0'
Conflicts:
	Zend/zend_vm_execute.h
2016-05-28 13:22:49 +02:00
Nikita Popov
4746e5efcb Forbid "yield from" in force closed generators
Same check we do for "yield", was missed when "yield from" was
added. We could make this more granular by only forbidding to
actually yield values and still allow something like "yield from []",
but this does not seem worthwhile.
2016-05-28 13:21:05 +02:00
Dmitry Stogov
2ae21abdf7 Fixed bug #72213 (Finally leaks on nested exceptions).
Squashed commit of the following:

commit 8461b0407f
Author: Dmitry Stogov <dmitry@zend.com>
Date:   Wed May 25 00:34:42 2016 +0300

    Rmoved zend_try_catch_element.parent and walk through op_array.try_catch_array backward from the current try_cacth_offset.

commit 0c71e24964
Author: Dmitry Stogov <dmitry@zend.com>
Date:   Wed May 25 00:04:53 2016 +0300

    Move SAVE_OPLINE() to its original place

commit 111432a4df
Author: Dmitry Stogov <dmitry@zend.com>
Date:   Wed May 25 00:01:10 2016 +0300

    Separate the common part of ZEND_HANDLE_EXCEPTION and FAST_RET into zend_dispatch_try_catch_finally_helper.

commit 4f21c06c2e
Author: Nikita Popov <nikic@php.net>
Date:   Tue May 24 14:55:27 2016 +0200

    Improve finally fix

commit da5c727499
Author: Dmitry Stogov <dmitry@zend.com>
Date:   Tue May 24 10:36:08 2016 +0300

    Fixed Zend/tests/try/bug70228_3.phpt and Zend/tests/try/bug70228_4.phpt

commit cfcedf2fb4
Author: Dmitry Stogov <dmitry@zend.com>
Date:   Tue May 24 02:59:27 2016 +0300

    Added test

commit 4c6aa93d43
Author: Dmitry Stogov <dmitry@zend.com>
Date:   Tue May 24 00:38:20 2016 +0300

    Added tests

commit 8a8f4704b0
Author: Dmitry Stogov <dmitry@zend.com>
Date:   Mon May 23 23:27:34 2016 +0300

    Fixed bug #72213 (Finally leaks on nested exceptions)
2016-05-25 01:25:12 +03:00
Nikita Popov
91f5940329 Forbid dynamic calls to scope introspection functions
Per RFC:
https://wiki.php.net/rfc/forbid_dynamic_scope_introspection
2016-05-24 20:48:24 +02:00
Dmitry Stogov
88196e9151 Added specialized handler for ZEND_FETCH_DIM_R opcode with only numeric indexes. 2016-05-18 15:06:49 +03:00
Xinchen Hui
37b1226af1 Merge branch 'master' of git.php.net:/php-src
* 'master' of git.php.net:/php-src:
  Inlined fast paths of the freqently execute handlers for FETCH_DIM_R.
2016-05-17 20:28:26 +08:00
Xinchen Hui
fad91468db Revert "Fixed Bug #72213 (Finally leaks on nested exceptions)"
This reverts commit 5037ebf058.
2016-05-17 20:27:16 +08:00
Dmitry Stogov
c466df6813 Inlined fast paths of the freqently execute handlers for FETCH_DIM_R. 2016-05-17 15:08:04 +03:00
Dmitry Stogov
34a6c93b25 Specialize ZEND_ASSIGN_ADD and family according to value of opline->extended_value 2016-05-17 11:46:25 +03:00
Xinchen Hui
5037ebf058 Fixed Bug #72213 (Finally leaks on nested exceptions) 2016-05-17 15:32:43 +08:00
Dmitry Stogov
8f7b1a3248 IS_CONST operands don't have to be separated. Use reference-counting instead of duplication.
- with opcache all IS_CONST operands are not refcounted (scalars, interned strings or immutable arrays)
- without opcache IS_CONST operands are not shared between processes or threads and may use common reference counters
2016-05-17 08:45:06 +03:00
Dmitry Stogov
1fe7b3bca1 micro-optimisation 2016-05-17 02:09:29 +03:00
Dmitry Stogov
97bf4e0b12 Check if generator object is created by GENERATOR_CREATE when throw exceptions from generator function 2016-05-16 12:42:13 +03:00
Dmitry Stogov
414c4c6776 Revert "Check if generator object is created by GENERATOR_CREATE when throw exceptions from generator function."
This reverts commit a9b517c614.
2016-05-16 11:51:29 +03:00
Dmitry Stogov
a9b517c614 Check if generator object is created by GENERATOR_CREATE when throw exceptions from generator function. 2016-05-16 10:24:13 +03:00
Dmitry Stogov
be071702b3 Fixed bug #72188 (Nested try/finally blocks losing return value) 2016-05-13 14:38:43 +03:00
Dmitry Stogov
ccf18da450 Eliminated checks for (func->op_array.fn_flags & ZEND_ACC_GENERATOR) in fast path of DO_FCALL* handlers.
This slightly improves calls to regular function and method calls in cost of a bit slower generator initialization.
Separate call frame for generators, allocated on heap, now created by ZEND_GENERATOR_CREATE instruction.
2016-05-13 01:40:15 +03:00