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
Dmitry Stogov
7b94b958cc
Intern some known (and offten used) strings.
2016-05-12 13:47:22 +03:00
Sara Golemon
8523b1f8ed
Merge branch 'PHP-7.0'
...
* PHP-7.0:
Fix serializing ZEND_AST_SHELL_EXEC
2016-05-12 02:51:14 +00:00
Sara Golemon
a73b03edea
Fix serializing ZEND_AST_SHELL_EXEC
...
Currently, `foo` is reserialized as `'foo'` due to misuse of zend_ast_export().
ZEND_AST_SHELL_EXEC can only contain ZEND_AST_ZVAL(string) or ZEND_AST_ENCAPS_LIST,
so just handle the ZEND_AST_ZVAL(string) case directly.
2016-05-12 02:47:56 +00:00
Dmitry Stogov
8a7a913a7a
Use main VM stack for generators. Only single call frame for generator itself is allocated on heap, call frames for nested functions are allocated on main VM stack. In case "yield" used in context of another function call, call stack has to be frozen and then restored.
2016-05-12 00:44:18 +03:00
Dmitry Stogov
515a61069a
Added test
2016-05-11 12:55:33 +03:00
Anatol Belski
208c28f152
Merge branch 'PHP-7.0'
...
* PHP-7.0:
fix handle leak
2016-05-10 20:03:27 +02:00
Anatol Belski
0718aa5833
Merge branch 'PHP-5.6' into PHP-7.0
...
* PHP-5.6:
fix handle leak
2016-05-10 20:02:17 +02:00
Anatol Belski
6b63d80a7a
fix handle leak
2016-05-10 19:59:48 +02:00
Nikita Popov
e6d4a9e2d2
Don't HT_ASSERT rc=1 in zend_hash_apply functions
...
These are not necessarily used to modify the hash. Move the assert
into the APPLY_REMOVE branch only.
2016-05-10 12:14:08 +02:00
Xinchen Hui
9e404927a6
Merge branch 'PHP-7.0'
2016-05-07 22:05:05 -07:00
Xinchen Hui
b62f7e338d
Remove unnecessary strlen check
2016-05-07 22:04:31 -07:00
Xinchen Hui
69adf2370e
Fixed test
2016-05-07 22:04:20 -07:00
Xinchen Hui
455eabcd2c
Merge branch 'PHP-7.0'
2016-05-07 00:08:35 -07:00
Xinchen Hui
29079f263e
Strlen cleanup (additions for previous one fix)
...
Probably compilers will do similar optimization
2016-05-07 00:08:15 -07:00
Xinchen Hui
2c992032ce
Merge branch 'PHP-7.0'
2016-05-06 23:54:48 -07:00
Xinchen Hui
f7439afeda
Merge branch 'PHP-5.6' into PHP-7.0
...
Conflicts:
Zend/zend_strtod.c
2016-05-06 23:52:48 -07:00
Xinchen Hui
1c7f608071
Fixed bug #72172 (zend_hex_strtod should not use strlen)
2016-05-06 23:52:06 -07:00
Dmitry Stogov
cca2c8ecc4
Reimplemented Bob's commit bac6fdb0c5
without insignificant renaming and white-space changes
2016-05-06 10:47:58 +03:00
Dmitry Stogov
37c8711f49
Fixed typo
2016-05-06 10:47:58 +03:00
Dmitry Stogov
c19cb70dac
Revert "Refactor zval cleanup into single function"
...
This reverts commit bac6fdb0c5
.
2016-05-06 10:47:58 +03:00
Xinchen Hui
4cd9cf8257
Merge branch 'PHP-7.0'
...
* PHP-7.0:
Fixed test
Revert "Fix bug #72162 (again)"
2016-05-06 10:53:25 +08:00
Xinchen Hui
080f6b10ec
Fixed test
2016-05-06 10:51:38 +08:00
Xinchen Hui
441d1b8ef0
Revert "Fix bug #72162 (again)"
...
The problem is because we release p->value too early
and later you try to convert an object to string, which is a fatal error
then leave p->value double free, change to expect long is a BC break
This reverts commit 8e5b381004
.
2016-05-06 10:45:44 +08:00
Bob Weinand
bac6fdb0c5
Refactor zval cleanup into single function
...
Also use zval_ptr_dtor_nogc() everywhere in Zend in favor of zval_dtor()
2016-05-05 23:31:57 +02:00
Levi Morrison
56c3d75780
Fix bug #71428
...
This also affects bug #72119
2016-05-05 11:53:32 -06:00
Levi Morrison
9662259cb9
Add nullable parameter types
...
This works off of Dmitry's commit for nullable return types
2016-05-05 11:53:32 -06:00
Dmitry Stogov
49fe737e58
Implement nullable return types.
2016-05-05 09:34:16 -06:00
Nikita Popov
59f35c0ca9
Merge branch 'PHP-7.0'
...
Conflicts:
Zend/zend_builtin_functions.c
2016-05-05 17:31:25 +02:00
Nikita Popov
8e5b381004
Fix bug #72162 (again)
...
Not sure what the previous fix was supposed to do. The issue was
that error_reporting() simply assumes that the value must either
be an integer or a string.
Fixed by using zpp properly.
2016-05-05 17:28:52 +02:00
Dmitry Stogov
26adba38bc
Micro-optimization
2016-05-05 16:19:59 +03:00
Xinchen Hui
badf1edffd
Merge branch 'PHP-7.0'
...
* PHP-7.0:
Fixed bug #72162 (use-after-free - error_reporting)
2016-05-05 11:02:34 +08:00
Xinchen Hui
9191862121
Fixed bug #72162 (use-after-free - error_reporting)
2016-05-05 11:02:21 +08:00
Andrea Faulds
660e88c19d
Fix bug #71897
2016-05-04 19:26:24 +01:00
Nikita Popov
bfef17ab65
Merge branch 'PHP-7.0'
...
Conflicts:
Zend/zend_compile.c
2016-05-04 18:43:55 +02:00
Nikita Popov
9af0c96af4
Fix bug #72159
2016-05-04 18:43:11 +02:00
Joe Watkins
8bec3dae94
Merge branch 'master' of https://github.com/php/php-src
2016-05-04 17:05:05 +01:00
Joe Watkins
3048092f5b
Merge branch 'PHP-7.0'
...
* PHP-7.0:
correct wording
2016-05-04 17:04:49 +01:00
Joe Watkins
a17e4187e7
correct wording
2016-05-04 17:04:38 +01:00
Dmitry Stogov
b91197c8a3
Inlined fast path
2016-05-04 17:33:35 +03:00
Joe Watkins
dc78e02ad2
Merge branch 'PHP-7.0'
...
* PHP-7.0:
add compiler option to disable builtins (special case function calls)
2016-05-04 10:54:29 +01:00
Joe Watkins
9bbee305e3
add compiler option to disable builtins (special case function calls)
2016-05-04 10:53:59 +01:00
Joe Watkins
c38310f25a
change fcall and statement handlers to accept frame
2016-05-04 09:28:13 +01:00
Nikita Popov
d06431bf1b
Merge branch 'PHP-7.0'
2016-05-03 18:15:29 +02:00
Nikita Popov
fbae590bf0
Fix leaks in QM_ASSIGN, JMP_SET and COALESCE
...
The QM_ASSIGN code was rewritten to use the standard pattern for
handling CVs and VARs.
2016-05-03 18:12:56 +02:00
Xinchen Hui
d08df44425
Merge branch 'PHP-7.0'
...
* PHP-7.0:
Mark fcc as initialized for object calls
2016-05-03 11:13:41 +08:00
Bob Weinand
b4c5009220
Mark fcc as initialized for object calls
...
This results in 1% speedup (cycle count) on some real world applications
2016-05-03 02:07:06 +02:00
Nikita Popov
0ce7189265
Merge branch 'PHP-7.0'
...
Conflicts:
Zend/zend_constants.c
2016-05-02 20:04:24 +02:00
Nikita Popov
ec7c3c22b6
Fix leak in zend_get_constant_ex
2016-05-02 19:59:43 +02:00
Joe Watkins
5e10735d07
improve test coverage of multicatch
2016-05-02 18:48:50 +01:00
Bob Weinand
7c174b6197
Fix use after free on AST expressions in constant declarations
2016-05-02 18:22:15 +02:00
Nikita Popov
014fd895a1
Merge branch 'PHP-7.0'
2016-05-02 11:58:31 +02:00
Nikita Popov
d5a38280be
Drop dup declare with inconsistent linkage
...
This is already declared in zend_stream.h as ZEND_API.
2016-05-02 11:56:28 +02:00
Nikita Popov
9b99a1c9fb
Fix compile warning in ast.c
2016-05-02 11:55:49 +02:00
Pierrick Charron
0aed2cc2a4
Allow catching multiple exception types in a single catch statement
...
This commit add the possibility to catch multiple exception types in
a single catch statement to avoid code duplication.
try {
// Some code...
} catch (ExceptionType1 | ExceptionType2 $e) {
// Code to handle the exception
} catch (\Exception $e) {
// ...
}
2016-05-01 18:47:08 -04:00
Anatol Belski
770a6d1342
Merge branch 'PHP-7.0'
...
* PHP-7.0:
fix test if unlink fails occasionally
fix dir separator in test
2016-05-01 19:27:13 +02:00
Anatol Belski
81e62e66d6
fix dir separator in test
2016-05-01 19:05:02 +02:00
Nikita Popov
6a9a0f2090
Merge branch 'PHP-7.0'
2016-05-01 13:05:28 +02:00
Nikita Popov
d0069ca6c1
Fix ('\bar')() in namespace
2016-05-01 13:05:14 +02:00
Bob Weinand
f59de7ea36
Export zend_pass_function to allow comparisons against it
2016-04-30 20:46:52 +02:00
Nikita Popov
0615c59a4f
Mark all $php_errormsg as refs to inhibit optimization
2016-04-30 12:34:01 +02:00
Joe Watkins
436b26c70b
Merge branch 'master' of https://github.com/php/php-src
2016-04-30 06:49:25 +01:00
Joe Watkins
9ad40d8d36
This function needs to be exported for extensions that implement complex zend objects
2016-04-30 06:48:47 +01:00
Nikita Popov
01df044fd5
Reset IMMUTABLE flag when copy_ctor'ing AST
2016-04-29 22:39:21 +02:00
Nikita Popov
d048837a46
Drop dead code from update_constant
2016-04-29 22:15:38 +02:00
Nikita Popov
5595dd5ffa
Revert code to use DUP instead of COPY
...
In a1c405e0c5
next to the actual fix
I have also switched some (effective) ZVAL_DUPs to ZVAL_COPYs. I'm
reverting this part as those were probably there for a reason
(presumably issues with non-atomic refcounting on ZTS).
2016-04-29 22:02:31 +02:00
Nikita Popov
a1c405e0c5
Fix usages of zend_update_constant_ex
...
If an in-place update in an external zval is performed, it needs
to incref'd beforehand, not afterwards.
2016-04-29 14:06:39 +02:00
Dmitry Stogov
2578d08033
Fixed compilation warnings
2016-04-29 14:44:56 +03:00
Dmitry Stogov
3e9419dd28
Fixed compilation warnings
2016-04-29 14:03:33 +03:00
Dmitry Stogov
84bf7ae59b
Fixed "comparison between signed and unsigned integer expressions" compilation warnings
2016-04-29 13:43:43 +03:00
Dmitry Stogov
71842c2828
Fixed breaks of strict-aliasing rules
2016-04-29 13:11:27 +03:00
Dmitry Stogov
f2b8b8fde2
Merge branch 'PHP-7.0'
...
* PHP-7.0:
Use unsigned shift to clear the bit.
2016-04-29 12:39:27 +03:00
Dmitry Stogov
a8d4649097
Use unsigned shift to clear the bit.
2016-04-29 12:38:48 +03:00