Commit Graph

11818 Commits

Author SHA1 Message Date
Anatol Belski
4b2fb0b4ae fix dangling pointer, phpdbg reveals it 2016-06-02 19:42:50 +02:00
Anatol Belski
47e26cf9db fix known interned strings init with TS per request 2016-06-02 17:55:48 +02:00
Dmitry Stogov
1b4946e658 Use "fast" assembler functions in "slow" ones.
Mark assembler functions that changes memory.
2016-06-01 20:52:14 +03:00
Dmitry Stogov
6a32d44392 cleanup 2016-06-01 18:07:05 +03:00
Anatol Belski
ce02f0f3b8 fix test 2016-05-31 18:55:39 +02: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
Xinchen Hui
d29bd582a8 Added NEWS Entry 2016-05-28 16:12:10 +08:00
Lauri Kenttä
58302192b7 Test for bug #72221, segfault in zend_memnstr_ex 2016-05-28 16:10:29 +08:00
Lauri Kenttä
287f9489d8 Fix bug #72221 (segfault, past-the-end access) 2016-05-28 16:10:16 +08:00
Xinchen Hui
cbe89e2c6e Merge branch 'fix-72221' of https://github.com/Metabolix/php-src
* 'fix-72221' of https://github.com/Metabolix/php-src:
  Test for bug #72221, segfault in zend_memnstr_ex
  Fix bug #72221 (segfault, past-the-end access)
2016-05-28 16:09:31 +08: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
Nikita Popov
674297c7e4 Allow empty property names
Conflicts:
	Zend/zend_compile.c
2016-05-24 18:34:17 +02:00
Nikita Popov
a19eb8e34a Ensure no entry predecessors for SSA construction 2016-05-24 18:29:45 +02:00
Lauri Kenttä
ad98f573f6 Test for bug #72221, segfault in zend_memnstr_ex 2016-05-24 17:40:29 +03:00
Dmitry Stogov
9b27df8df5 Fixed white-spaces 2016-05-24 12:37:20 +03:00
Dmitry Stogov
0cdbabe558 Merge branch 'nullable_types' of github.com:morrisonlevi/php-src
* 'nullable_types' of github.com:morrisonlevi/php-src:
  Fix bug #71428
  Add nullable parameter types
  Implement nullable return types.
2016-05-23 10:14:26 +03:00
Lauri Kenttä
26fa27d760 Fix bug #72221 (segfault, past-the-end access) 2016-05-21 18:46:00 +03:00
Bob Weinand
4f077aee83 Allow for [] = $array; (alias for list()) 2016-05-20 01:51:05 +02:00
Dmitry Stogov
14a71cf545 Added and fixed tests related to "finally" handling 2016-05-19 13:22:46 +03: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
Dmitry Stogov
cef8d93edd Fixed typo 2016-05-18 11:29:02 +03:00
Nikita Popov
14023d39c1 Move builtin_ctzl portability into zend_bitset.h
Use this function in both zend_mm_bitset_find_one and
zend_bitset_first.

Maybe zend_bitset.h is not quite the right place for it, but I did
not want to include this in a globally included header like
zend_long.h or zend_portability.h.
2016-05-17 22:23:43 +02:00
Nikita Popov
b65b15c6f4 Mark assert() as INDIRECT_VAR_ACCESS
I don't like this... we may want to detect "obviously not string"
operands by checking for the result of a comparison instruction.
2016-05-17 16:13:17 +02: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
054446a25f Extend CAL_FLAGS from 8-bit to 16-bit 2016-05-16 12:41:24 +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
Anatol Belski
41518d255e fix dir separator 2016-05-14 23:48:04 +02:00
Nikita Popov
6079ba4b0c Inference: Fix undef handling for binary ops
We need to be careful about correctly handling that undef results
in a null value. Otherwise, apart from simply generating incorrect
results, we may also end up performing non-monotonic lattice
transitions, thus causing an infinite type inference loop (see
test).
2016-05-14 17:16:32 +02:00
Sara Golemon
7594fd0cfa Check in generated lexer
This should have been included with my previous diff implementing octal overflow warning.
Ooops.
2016-05-14 04:31:39 +00:00
Sara Golemon
95af467d8d Raise compiler warning on octal overflow
Addresses https://bugs.php.net/bug.php?id=71994
2016-05-14 00:20:32 +00:00
Dmitry Stogov
be071702b3 Fixed bug #72188 (Nested try/finally blocks losing return value) 2016-05-13 14:38:43 +03:00
Dmitry Stogov
e9c3f9fcde Fixed bug #72177 (Scope issue in __destruct after ReflectionProperty::setValue()) 2016-05-13 11:55:09 +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
Nikita Popov
b1c3c9a525 Explicitly construct phi set during def propagation
Previously the phi set was first computed during def propagation
and then computed again (per-block) during actual phi placement.
This commit changes this to store the phi set computed during
def propagation.

This makes SSA construction slightly faster (5%), but the main
purpose here is to pave the way for the next commit.

This also fixes a potential issue with the handling of irreducible
loops -- they generated additional phis, but these were not
accounted for in def propagation. (Though I'm not sure if we can
even have any irreducible loops right now.)
2016-05-12 22:08:28 +02:00
Anatol Belski
aea0d577f9 Merge branch 'PHP-7.0'
* PHP-7.0:
  fix dir separator in test
2016-05-12 20:38:02 +02:00
Anatol Belski
f751b1ceaf fix dir separator in test 2016-05-12 20:37:04 +02:00
Dmitry Stogov
4652fe18c7 Removed useless code 2016-05-12 16:46:37 +03:00