Dmitry Stogov
28b03f9605
Another fix for bug #63217
2018-07-03 01:09:58 +03:00
Dmitry Stogov
57af94c8b9
Partial revert of 30156d588c
2018-07-02 20:54:44 +03:00
Rudi Theunissen
30156d588c
Fixed bug #63217
...
Don't automatically convert literal string keys to integers on
array access, as we may be dealing with an ArrayAccess object,
rather than a plain array.
2018-07-02 16:41:59 +02:00
Dmitry Stogov
43aca3118a
Avoid string comparisons for magic methods (all magic methods start with "__")
2018-07-02 17:03:02 +03:00
Dmitry Stogov
1b80de93b8
Cleanup conditions
2018-06-26 16:18:30 +03:00
Dmitry Stogov
8c22d3e729
Make FETCH_R/IS, FETCH_DIM_R/IS, FETCH_OBJ_R/IS, FETCH_STATIC_PROP_R/IS return TMP_VAR, instead of VAR.
2018-06-25 23:43:23 +03:00
Dmitry Stogov
7f67513ca3
Lazy function copying from op_cache SHM into process memory
2018-06-25 19:53:58 +03:00
Nikita Popov
d04917c7b3
Fixed bug #75218
...
I've introduced a new CompileError type, from which ParseError
inherits. These errors are not parse errors in the narrow sense
of the term, even though they happen to be generated during
parsing in our implementation. Additionally reusing the ParseError
class for this purpose would change existing error messages (if
the exception is not caught) from a "Fatal error:" to a "Parse
error:" prefix, and also the error kind from E_COMPILE_ERROR to
E_PARSE.
2018-06-16 12:41:03 +02:00
Dmitry Stogov
9e0f131d2b
Fixed ISSET/ISEMPTY bit meaning to simplify run-time checks
2018-05-31 19:02:51 +03:00
Dmitry Stogov
5eb1f92f31
Use zend_string_release_ex() instread of zend_string_release() in places, where we sure about string persistence.
2018-05-28 16:27:12 +03:00
Dmitry Stogov
524f5245c5
Avoid useless checks, using zend_string_efree(), in cases where the string is known to be a temporary allocated zend_string.
2018-05-08 17:30:15 +03:00
Dmitry Stogov
83f98f7340
Don't store values of PHP_SAPI and PHP_BINARY in file cache, because it may be used by different SAPI.
2018-04-28 01:20:49 +03:00
Levi Morrison
0c80cb164f
Fix bug #76198
2018-04-14 13:07:44 +02:00
Dmitry Stogov
eb39d8d686
Use cheaper functions
2018-03-15 12:46:19 +03:00
Dmitry Stogov
8afb91cdad
PHP scanner optimization
2018-03-14 01:48:17 +03:00
Dmitry Stogov
d1585a9e3f
Revert "Handle scanner error in first place (don't hide them from ext/tokenizer) and cheaper whitespace handlig."
...
This reverts commit 0d6da03f5c
.
2018-03-14 01:08:03 +03:00
Dmitry Stogov
0d6da03f5c
Handle scanner error in first place (don't hide them from ext/tokenizer) and cheaper whitespace handlig.
2018-03-13 18:42:09 +03:00
Dmitry Stogov
9c0dfd4f10
Get rid of useless SET_UNUSED()
2018-03-13 14:34:48 +03:00
Dmitry Stogov
c7045174f1
Moved compiler helper functions from zend_opcode.c to zend_compile.c
2018-03-13 13:49:58 +03:00
Nikita Popov
7ff186434e
Explicitly sort live ranges by start opnum
...
Instead of moving live ranges around to maintain the start opnum
invariant, add an explicit sorting step in pass two.
2018-02-16 21:51:50 +01:00
Nikita Popov
b0af9ac733
Avoid live range references in opcodes
...
Don't store the live range of the freed variable for FREE_ON_RETURN
frees, instead look it up at runtime. As this is an extremely
unlikely codepath (in particular, it requires a loop variable with
a throwing destructor), saving the runtime lookup of the live range
is not worth the extra complexity this adds everywhere else.
2018-02-16 21:30:48 +01:00
Gabriel Caruso
2d48d734a2
Fix some misspellings
2018-02-06 16:59:00 +01:00
Nikita Popov
db2475cec2
Fix unused variable compiler warnings
2018-02-05 20:58:15 +01:00
Dmitry Stogov
e0a399f175
One cache slot is enough
2018-02-05 20:40:21 +03:00
Dmitry Stogov
ca035f26aa
Moved "zval.u2.cache_slot" into free room of "zend_op"
2018-02-05 19:41:47 +03:00
Dmitry Stogov
3a794d39f0
Avoid repeatable ARG_SHOULD_BE_SENT_BY_REF() checks in FETCH_*FUNC_ARG and following SEND_VAR_EX. Perform the check once in a new CHECK_FUNC_ARG opcode and reuse in the following FETCH_*FUNC_ARG and SEND_FUNC_ARG (SEND_VAR_EX replacement).
2018-02-05 19:40:06 +03:00
Dmitry Stogov
ba298725d1
Changed CATCH instruction format (extended_value moved into op2, op2 into result, result into extended_value)
2018-01-31 22:39:30 +03:00
Dmitry Stogov
9c7fb529ce
Changed FETCH_CONSTANT instruction format (extended_value moved into op1)
2018-01-31 18:15:25 +03:00
Dmitry Stogov
f67f455ef7
Changed FETCH_CLASS instruction format (extended_value moved into op1)
2018-01-31 18:14:43 +03:00
Dmitry Stogov
7141631cc8
Change FETCH/ISSET instruction modifiers:
...
- Get rid of ZEND_ISEMPTY and ZEND_ISSET_ISEMPTY_MASK. Use just single ZEND_ISSET bit to make distinct between isset() and empty()
- Use ZEND_FETCH_GLOBAL, ZEND_FETCH_LOCAL and ZEND_FETCH_GLOBAL_LOCK as bitmask
- Removed unused ZEND_FETCH_STANDARD
- Extended ZEND_FETCH_ARG_MASK
2018-01-30 22:06:05 +03:00
Dmitry Stogov
bf7176c70f
Use reference-counting instead of duplication and separation, if really necessary.
2018-01-19 01:03:24 +03:00
Dmitry Stogov
5c77bac9a7
A cheaper way to reset type flags.
2018-01-17 01:58:51 +03:00
timurib
a484b9a535
Fix #75765 Exception on extend of undefined class
...
As the parent class is fetched prior to binding, there are no
safety concerns in this case and we can replace the fatal error
with an Error exception.
2018-01-12 18:41:39 +01:00
Dmitry Stogov
c9034c3b33
Get rid of zend_op_array.early_binding
2018-01-11 19:15:52 +03:00
Xinchen Hui
4a4602c45c
Merge branch 'master' of git.php.net:/php-src
...
* 'master' of git.php.net:/php-src:
Happy new year (Update copyright to 2018)
Happy new year (Update copyright to 2018)
Revert "Enable ODBC tests on AppVeyor"
Enable ODBC tests on AppVeyor
Skip on Travis-CI
Extend skip section
2018
missing changelog entries + fix version and date
missing changelog entries
2018
Trailing whitespaces
2018-01-04 13:45:11 +08:00
Gabriel Caruso
6400264856
Trailing whitespaces
...
Signed-off-by: Gabriel Caruso <carusogabriel34@gmail.com>
2018-01-03 14:38:00 +01:00
Xinchen Hui
1e22c9a187
Merge branch 'instanceof-const' of https://github.com/nikic/php-src
...
* 'instanceof-const' of https://github.com/nikic/php-src :
Return false for instanceof on literal
2018-01-03 16:08:20 +08:00
Xinchen Hui
a6519d0514
year++
2018-01-02 12:57:58 +08:00
Xinchen Hui
7a7ec01a49
year++
2018-01-02 12:55:14 +08:00
Dmitry Stogov
5c8f8f8fce
Use ZEND_FAST_CONCAT instead of ZEND_CONCAT for CONST operands.
2017-12-29 13:54:18 +03:00
Dmitry Stogov
f010423335
Use IS_EQUAL instead of CASE when first operand is CV or CONST. Removed CASE handlers that duplicated IS_EQUAL.
2017-12-29 12:57:58 +03:00
Nikita Popov
b6131364f9
Return false for instanceof on literal
2017-12-19 22:16:45 +01:00
David Walker
6d4de4cf05
Implement list() reference assignments
...
Support list() reference assignments of the form:
list(&$a, list(&$b, $c)) = $d;
RFC: https://wiki.php.net/rfc/list_reference_assignment
2017-12-09 13:39:52 +01:00
Dmitry Stogov
6a9d2b2190
Cleanup type conversion
2017-12-07 19:24:55 +03:00
Dmitry Stogov
74c84cd7f0
Use zend_string_equal*() API for zend_string equality check instead of direct memcmp() usage.
2017-12-04 17:17:02 +03:00
Dmitry Stogov
cc12acefcd
Use cheaper functions
2017-12-04 13:21:35 +03:00
Dmitry Stogov
92cc7f9fab
Merge branch 'PHP-7.2'
...
* PHP-7.2:
Set trailing zero
2017-12-01 17:01:10 +03:00
Dmitry Stogov
01b85f0e17
Merge branch 'PHP-7.1' into PHP-7.2
...
* PHP-7.1:
Set trailing zero
2017-12-01 17:00:51 +03:00
Dmitry Stogov
b73151845f
Merge branch 'PHP-7.0' into PHP-7.1
...
* PHP-7.0:
Set trailing zero
2017-12-01 17:00:42 +03:00
Dmitry Stogov
24d5adbd5a
Set trailing zero
2017-12-01 17:00:11 +03:00