Nikita Popov
e86820eb56
Fix invalid function by-ref prop assign handling
2019-04-08 10:18:26 +02:00
Dmitry Stogov
5b34c87d18
Merge branch 'PHP-7.4'
...
* PHP-7.4:
Optimized "smart branch" instructions
2019-04-05 00:26:20 +03:00
Dmitry Stogov
d6848625d7
Optimized "smart branch" instructions
2019-04-05 00:25:45 +03:00
Dmitry Stogov
0deb6419e8
Merge branch 'PHP-7.4'
...
* PHP-7.4:
Make is_identical() functions return zend_bool (instead of int)
2019-04-04 18:18:52 +03:00
Dmitry Stogov
9038d5c6ee
Make is_identical() functions return zend_bool (instead of int)
2019-04-04 18:18:12 +03:00
Dmitry Stogov
c4d5d26df3
Merge branch 'PHP-7.4'
...
* PHP-7.4:
unused variable
2019-04-04 17:52:42 +03:00
Dmitry Stogov
575c3576a7
unused variable
2019-04-04 17:52:17 +03:00
Dmitry Stogov
c617fb78ab
Merge branch 'PHP-7.4'
...
* PHP-7.4:
Improved comparison opcode handlers
2019-04-02 23:47:03 +03:00
Dmitry Stogov
9cb926d8d1
Improved comparison opcode handlers
2019-04-02 23:46:21 +03:00
Dmitry Stogov
71413747c8
Merge branch 'PHP-7.4'
...
* PHP-7.4:
Fixed typo
2019-03-20 01:32:01 +03:00
Dmitry Stogov
14359eb7eb
Fixed typo
2019-03-20 01:31:35 +03:00
Dmitry Stogov
61548042f7
Merge branch 'PHP-7.4'
...
* PHP-7.4:
micro-optimization
2019-03-19 02:02:37 +03:00
Dmitry Stogov
9357953bab
micro-optimization
2019-03-19 02:02:14 +03:00
Nikita Popov
513b76794b
Make zpp failures always throw, independent of strict_types
...
Previously zend_parse_parameters (and FastZPP) would handle invalid
arguments depending on strict_types: With strict_types=1, a TypeError
is thrown, with strict_types=0 a warning is thrown and (usually) NULL
is returned. Additionally, some functions (constructors always and
other methods sometimes) opt-it to throwing regardless of strict_types.
This commit changes zpp to always generate a TypeError exception in
PHP 8.
2019-03-11 11:32:20 +01:00
Dmitry Stogov
1b281f801e
Merge branch 'PHP-7.4'
...
* PHP-7.4:
Avoid useless code duplication, because of unused specialization
2019-02-15 17:52:59 +03:00
Dmitry Stogov
d4bef4ce7b
Avoid useless code duplication, because of unused specialization
2019-02-15 17:49:39 +03:00
Dmitry Stogov
89c94161ea
Merge branch 'PHP-7.4'
...
* PHP-7.4:
Reduce slow code size
2019-02-15 17:03:49 +03:00
Dmitry Stogov
78a1d76962
Reduce slow code size
2019-02-15 17:03:04 +03:00
Nikita Popov
faaf510fa4
Merge branch 'PHP-7.4'
2019-02-14 14:02:32 +01:00
Nikita Popov
adf2f39745
Fix build without global regs
2019-02-14 14:01:39 +01:00
Dmitry Stogov
e17667abd5
Merge branch 'PHP-7.4'
...
* PHP-7.4:
More accurate handling of global registers (allow VM with single global register)
2019-02-12 17:39:55 +03:00
Dmitry Stogov
626bc3a2de
More accurate handling of global registers (allow VM with single global register)
2019-02-12 17:39:02 +03:00
Nikita Popov
a302d11610
Don't silence fatal errors with @
2019-02-11 16:17:55 +01:00
Dmitry Stogov
bb3a3c1570
Simplify checks
2019-02-07 22:08:51 +03:00
Dmitry Stogov
f45e0ce928
Remove ZEND_OVERLOADED_FUNCTION and corresponding call_method object handler
2019-02-07 21:05:46 +03:00
Nikita Popov
7480f4ebae
Merge branch 'PHP-7.4'
2019-02-07 10:06:37 +01:00
Nikita Popov
1a4ffcd2b4
Fix DIM_OBJ specialization in zend_vm_get_opcode_handler_func
...
DIM_OBJ also specializes over ASSIGN_STATIC_PROP nowadays.
2019-02-07 10:06:25 +01:00
Dmitry Stogov
1a304d357c
More accurate get_properties() usage.
2019-02-04 13:20:25 +03:00
Dmitry Stogov
b7f05885e8
Reuse cache_slot
2019-02-04 13:20:25 +03:00
Dmitry Stogov
91ef4124e5
Refactor zend_object_handlers API to pass zend_object* and zend_string* insted of zval(s).
2019-02-04 13:20:25 +03:00
Nikita Popov
9c5ab992ac
Merge branch 'PHP-7.4'
2019-01-31 09:40:01 +01:00
Nikita Popov
340c6d3927
Revert "Don't silence fatal errors with @"
...
This reverts commit abd36289e2
.
This wasn't ready for merging yet, there are still some test
failures.
2019-01-31 09:39:10 +01:00
Joe Watkins
839bdf12ee
Merge branch 'PHP-7.4'
...
* PHP-7.4:
Don't silence fatal errors with @
2019-01-31 07:11:18 +01:00
Nikita Popov
abd36289e2
Don't silence fatal errors with @
2019-01-31 07:11:05 +01:00
Zeev Suraski
a81202ac49
Adios, yearly copyright ranges
2019-01-30 11:48:28 +01:00
Zeev Suraski
02557f87bc
Adios, yearly copyright ranges
2019-01-30 11:23:29 +02:00
Nikita Popov
6c73b50cf6
Remove static calls to non-static methods
2019-01-30 09:19:02 +01:00
Nikita Popov
a50198d0fe
Implement ??= operator
...
RFC: https://wiki.php.net/rfc/null_coalesce_equal_operator
$a ??= $b is $a ?? ($a = $b), with the difference that $a is only
evaluated once, to the degree that this is possible. In particular
in $a[foo()] ?? $b function foo() is only ever called once.
However, the variable access themselves will be reevaluated.
2019-01-22 11:12:04 +01:00
Dmitry Stogov
0941f25811
Removed useless Z_REFCOUNTED_P() checks.
2019-01-17 10:53:58 +03:00
Dmitry Stogov
8661b6dd5d
Reduce slow code size
2019-01-16 14:26:32 +03:00
Dmitry Stogov
fd27fd4a15
Fixed and improved incorrect usage of value_type argument.
2019-01-16 11:06:19 +03:00
Dmitry Stogov
6a2d2af06a
Merge branch 'master' of git.php.net:php-src
...
* 'master' of git.php.net:php-src:
Fix param list for build without global reg
2019-01-16 02:30:15 +03:00
Dmitry Stogov
0b21a4ba45
Separated zend_assign_to_typed_prop()
2019-01-16 02:13:43 +03:00
Anatol Belski
cd43a4629f
Fix param list for build without global reg
2019-01-15 22:31:52 +01:00
Dmitry Stogov
938ba93f4a
Separated zend_binary_assign_op_typed_ref() and zend_binary_assign_op_typed_prop() helpers
2019-01-15 18:49:05 +03:00
Dmitry Stogov
239305d12e
Fixed uninitialized result of PRE_INC/PRE_DEC in case of exception.
...
Separated increment/decrement of typed reference into helper.
2019-01-15 18:03:46 +03:00
Dmitry Stogov
7f053c2c49
Merge branch 'PHP-7.3'
...
* PHP-7.3:
Fixed bug #77263 (Segfault when using 2 RecursiveFilterIterator)
2019-01-14 13:21:03 +03:00
Dmitry Stogov
920450534e
Fixed bug #77263 (Segfault when using 2 RecursiveFilterIterator)
2019-01-14 13:18:28 +03:00
Nikita Popov
e219ec144e
Implement typed properties
...
RFC: https://wiki.php.net/rfc/typed_properties_v2
This is a squash of PR #3734 , which is a squash of PR #3313 .
Co-authored-by: Bob Weinand <bobwei9@hotmail.com>
Co-authored-by: Joe Watkins <krakjoe@php.net>
Co-authored-by: Dmitry Stogov <dmitry@zend.com>
2019-01-11 15:49:06 +01:00
Nikita Popov
fe359cf1ff
Fix undefined function error message
...
This got fixed on 7.3, but the implementation is slightly different
on master and the new test was failing.
2019-01-02 15:41:38 +01:00
Xinchen Hui
1a0c325b89
Merge branch 'PHP-7.3'
...
* PHP-7.3:
Fixed bug #77376 ("undefined function" message no longer includes namespace)
2019-01-02 15:32:29 +08:00
Xinchen Hui
e01f08f679
Fixed bug #77376 ("undefined function" message no longer includes namespace)
2019-01-02 15:32:17 +08:00
Dmitry Stogov
b8d6aac5ad
Micro optimization
2018-12-28 15:34:33 +03:00
Dmitry Stogov
e8daada82e
Tune ARRAY_KEY_EXISTS opcode handler for speed and code size
2018-12-27 02:34:52 +03:00
Dmitry Stogov
70fcbe3524
Fixed ext/spl/tests/bug61347.phpt failure introduced by ZEND_ARRAY_KEY_EXISTS opcode
2018-12-27 00:20:20 +03:00
Michael Moravec
f5044a12dd
Implement ZEND_ARRAY_KEY_EXISTS opcode to speed up array_key_exists()
2018-12-26 23:54:11 +03:00
Dmitry Stogov
d90a5d2e1a
Micro optimization
2018-12-26 12:30:30 +03:00
Dmitry Stogov
a111dfae0b
Removed dead condition
2018-12-25 19:23:40 +03:00
Dmitry Stogov
2954a309de
Avoid code duplication
2018-12-25 17:48:29 +03:00
Dmitry Stogov
ae9e956ef9
Reorder conditions
2018-12-18 23:23:44 +03:00
Dmitry Stogov
868c1b7377
Reduce executor size
2018-12-18 17:34:18 +03:00
Dmitry Stogov
1f3a535324
Delay exceptional case check
2018-11-20 13:06:23 +03:00
Dmitry Stogov
a5a3d507d2
Optimization
2018-11-20 11:55:16 +03:00
Levi Morrison
74d15b535a
Remove do_bind_inherited_class; use do_bind_class
...
Pass NULL as the second parameter. I don't know if in the past these
differed more, but there isn't any point to having both of them
anymore.
2018-11-07 18:54:00 +01:00
Zeev Suraski
9afce019e0
Future-proof email addresses
2018-11-01 18:35:32 +02:00
Zeev Suraski
54dc07f3dc
Update email addresses. We're still @Zend, but future proofing it...
2018-11-01 17:20:07 +02:00
Dmitry Stogov
e3688c2180
Refetetch function name on exceptional path to allow better code on fast code path.
2018-10-23 17:12:49 +03:00
Nikita Popov
149e6aaa99
Fix accessibility checks for dynamic properties
...
A dynamic property may be shadowed by a private/protected property.
Make sure we check property accessibility for non-indirect
properties as well.
Closes #3626 .
2018-10-22 16:46:33 +02:00
Dmitry Stogov
d57cd36e47
Immutable clases and op_arrays.
...
Squashed commit of the following:
commit cd0c36c3f9
Merge: 4740dabb84
ad6738e886
Author: Dmitry Stogov <dmitry@zend.com>
Date: Wed Oct 17 14:43:38 2018 +0300
Merge branch 'master' into immutable
* master:
Remove the "auto" encoding
Fixed bug #77025
Add vtbls for EUC-TW encoding
commit 4740dabb84
Author: Dmitry Stogov <dmitry@zend.com>
Date: Wed Oct 17 14:12:28 2018 +0300
Reverted back ce->iterator_funcs_ptr. Initialize ce->iterator_funcs_ptr fields in immutable classes.
commit ad7a78b253
Author: Dmitry Stogov <dmitry@zend.com>
Date: Wed Oct 17 11:46:30 2018 +0300
Added comment
commit 0276ea5187
Author: Dmitry Stogov <dmitry@zend.com>
Date: Wed Oct 17 11:42:43 2018 +0300
Added type cast
commit c63fc5d5f1
Author: Dmitry Stogov <dmitry@zend.com>
Date: Wed Oct 17 11:36:51 2018 +0300
Moved static class members initialization into the proper place.
commit b945548e93
Author: Dmitry Stogov <dmitry@zend.com>
Date: Wed Oct 17 11:21:03 2018 +0300
Removed redundand assertion
commit d5a4108840
Author: Dmitry Stogov <dmitry@zend.com>
Date: Wed Oct 17 11:19:13 2018 +0300
Removed duplicate code
commit 8dadca8864
Author: Dmitry Stogov <dmitry@zend.com>
Date: Wed Oct 17 11:05:43 2018 +0300
Hide offset encoding magic in ZEND_MAP_PTR_IS_OFFSET(), ZEND_MAP_PTR_OFFSET2PTR() and ZEND_MAP_PTR_PTR2OFFSET() macros.
commit 9ef07c88bd
Author: Dmitry Stogov <dmitry@zend.com>
Date: Wed Oct 17 10:48:29 2018 +0300
typo
commit a06f0f3d3a
Merge: 94099586ec
3412345ffe
Author: Dmitry Stogov <dmitry@zend.com>
Date: Wed Oct 17 10:47:07 2018 +0300
Merge branch 'master' into immutable
* master:
Remove unused variable makefile_am_files
Classify object handlers are required/optional
Add support for getting SKIP_TAGSTART and SKIP_WHITE options
Remove some obsolete config_vars.mk occurrences
Remove bsd_converted from .gitignore
Remove configuration parser and scanners ignores
Remove obsolete buildconf.stamp from .gitignore
[ci skip] Add magicdata.patch exception to .gitignore
Remove outdated ext/spl/examples items from .gitignore
Remove unused test.inc in ext/iconv/tests
commit 94099586ec
Author: Dmitry Stogov <dmitry@zend.com>
Date: Mon Oct 15 23:34:01 2018 +0300
Immutable clases and op_arrays
2018-10-17 15:52:50 +03:00
Nikita Popov
1cfbb21790
Classify object handlers are required/optional
2018-10-16 20:53:59 +02:00
Nikita Popov
7ec8087f80
Introduce get_properties_for() handler
...
This handler allows getting the object properties for a particular
purpose, such as array casting, serialization, etc.
2018-10-10 10:39:10 +02:00
Dmitry Stogov
6beaa9fa5b
Use zend_hash_find() instead of zend_hash_exists()
2018-09-19 13:55:27 +03:00
Dmitry Stogov
689c6fb188
Replace ZEND_ACC_ANON_BOUND, ZEND_ACC_UNRESOLVED_PARENT and ZEND_ACC_UNRESOLVED_INTERFACES with single ZEND_ACC_LINKED.
2018-09-18 11:41:40 +03:00
Dmitry Stogov
bc288c4723
Simplify __clone() visibility check (magic methods still don't respect ZEND_ACC_CHANGED).
2018-09-13 13:36:09 +03:00
Dmitry Stogov
25d43cab8c
Merge branch 'PHP-7.3'
...
* PHP-7.3:
Fixed support for commutative "user opcodes"
2018-09-05 22:11:36 +03:00
Dmitry Stogov
1d36c3361f
Fixed support for commutative "user opcodes"
2018-09-05 22:11:10 +03:00
Dmitry Stogov
2fbfdde1b6
Cleanup class linking
2018-08-27 16:40:25 +03:00
Dmitry Stogov
6136a20544
ZEND_DECLARE_CLASS, ZEND_DECLARE_INHERITED_CLASS and ZEND_DECLARE_INHERITED_CLASS_DELAYED don't need return value anymore.
2018-08-24 15:40:53 +03:00
Dmitry Stogov
d140df58e6
Keep information about unresolved interfaces in zend_class_entry->interface_names.
...
Move interface implementation code into ZEND_DECLARE_*CLASS opcodes.
Remove ZEND_ADD_INTERFACE and ZEND_VERIFY_ABSTRACT_CLASS opcodes.
2018-08-23 17:16:28 +03:00
Dmitry Stogov
67397970b2
Replace zend_class_entry->traits by persistent zend_class_entry->trait_names.
...
Move trait binding code into ZEND_DECLARE_*CLASS opcodes.
Remove ZEND_ADD_TRIAIT and ZEND_BIND_TRAITS opcodes.
2018-08-23 02:02:26 +03:00
Dmitry Stogov
92fdf9d629
Change zend_lookup_class_ex() and zend_fetch_class_by_name() prototypes to accept optional lower-case class name as zend_string*, instead of zval*.
2018-08-22 17:07:31 +03:00
Dmitry Stogov
1321aa5080
Merge branch 'PHP-7.3'
...
* PHP-7.3:
Stop using zend_function->reserved[] space.
2018-08-22 10:44:34 +03:00
Dmitry Stogov
8d95f561e4
Stop using zend_function->reserved[] space.
2018-08-22 10:43:51 +03:00
Dmitry Stogov
6d88e1ccd6
Don't use second operand of BIND_STATIC instruction.
2018-08-21 12:22:04 +03:00
Dmitry Stogov
7a52864ad0
Merge branch 'PHP-7.3'
...
* PHP-7.3:
Removed dead code
2018-08-21 09:02:22 +03:00
Dmitry Stogov
5e5311e0ba
Removed dead code
2018-08-21 09:01:54 +03:00
Dmitry Stogov
64f8b0185f
Merge branch 'PHP-7.3'
...
* PHP-7.3:
Avoid hash lookups in BIND_STATIC and BIND_LEXICAL opcode handlers. Encode static variable offset into opline->extended_value.
2018-08-20 16:11:40 +03:00
Dmitry Stogov
b8828926f2
Avoid hash lookups in BIND_STATIC and BIND_LEXICAL opcode handlers.
...
Encode static variable offset into opline->extended_value.
2018-08-20 16:10:09 +03:00
Xinchen Hui
4ab25235e5
Added a note
2018-08-17 12:22:46 +08:00
Xinchen Hui
fd463a9a60
Fixed bug #76752 (Crash in ZEND_COALESCE_SPEC_TMP_HANDLER - assertion in _get_zval_ptr_tmp failed).
2018-08-17 12:19:31 +08:00
Dmitry Stogov
3ced766da9
Removed duplicate code. zend_fetch_dimension_address_LIST_w() was a copy of zend_fetch_dimension_address_W(), ZEND_FETCH_LIST_W_SPEC_CV_... a copy of ZEND_FETCH_DIM_W_SPEC_CV_...
2018-07-30 10:53:39 +03:00
Dmitry Stogov
a588b825d6
Improved assignment to "next" element of array ($a[] = ...)
2018-07-27 13:15:22 +03:00
Dmitry Stogov
f374e93762
Use better check
2018-07-26 14:13:33 +03:00
Dmitry Stogov
ab8094c666
Pack zend_constant.flags and zend_constant.module_number into reserved space inside zend_constant.value.
2018-07-26 12:58:07 +03:00
Dmitry Stogov
f950128cd6
Encode parent class name as IS_CONST operand in DECLARE_INHERITED_CLASS and DECLARE_ANON_INHERITED_CLASS opcodes (eliminate FETCH_CLAS
...
S opcode).
2018-07-25 13:40:47 +03:00
Dmitry Stogov
afc82e243c
Micro-optimization
2018-07-23 10:52:00 +03:00
Dmitry Stogov
df60566671
Inline FETCH_CONST and DEFINED handlers into "hybrid" executor.
2018-07-17 13:30:55 +03:00
Dmitry Stogov
88dd38ee81
Reduce overhead of case-insensitive constants deprecation for "fast path"
2018-07-17 12:58:58 +03:00
Nikita Popov
3588d8af12
Deprecate case-insensitive constants
...
RFC: https://wiki.php.net/rfc/case_insensitive_constant_deprecation
2018-07-16 19:16:55 +02:00
Dmitry Stogov
40551e0255
Eliminated reference-counting and EG(exception) check
2018-07-09 13:20:46 +03:00
Dmitry Stogov
67b4c3379a
Uze ZVAL_COPY_DEREF() instead of ZVAL_DEREF() and ZVAL_COPY()
2018-07-09 12:46:46 +03:00
Xinchen Hui
9d1e9b73c5
rename ref_dtor_func to rc_dtor_func
2018-07-06 19:15:26 +08:00
Xinchen Hui
f9297387f4
Rename zval_dtor_func and ref_dotr_func
2018-07-06 18:47:30 +08:00
Xinchen Hui
e3355ac5ec
Revert "Rename _zval_dtor_func to _ref_dtor_func"
...
This reverts commit a362ae6b12
.
2018-07-06 18:37:45 +08:00
Xinchen Hui
a362ae6b12
Rename _zval_dtor_func to _ref_dtor_func
2018-07-06 18:32:27 +08:00
Dmitry Stogov
dcf7592076
Optimize array to object casting
2018-07-06 03:10:05 +03:00
Dmitry Stogov
85b2bc38e1
Optimize object to array casting
2018-07-06 01:25:24 +03:00
Dmitry Stogov
3a8f26060c
Argument unpacking with Traversables and non-integer keys.
...
Changed error message, added UPGRADING note and test.
2018-07-04 22:34:36 +03:00
Dmitry Stogov
af341213f7
se zval_ptr_dtor_str() instead of zend_string_release_ex(Z_STR(*), 0)
2018-07-04 12:08:07 +03:00
Dmitry Stogov
d84ef96742
SEND_UNPACK should throw exception on Traversable with non-integer keys
2018-07-04 09:35:12 +03:00
Dmitry Stogov
7eb045d31a
API cleanup. Removed unused functions (kept compatibility macros).
2018-07-04 00:50:57 +03:00
Dmitry Stogov
004a0568f4
Eliminated REFCOUNTED checks on persistent constant operands in SEND_VAL[_EX] and QM_ASSIGN.
2018-07-03 13:10:22 +03:00
Dmitry Stogov
177c7e3a72
Merge branch 'bug63217'
...
* bug63217:
Another fix for bug #63217
Partial revert of 30156d588c
2018-07-03 12:58:50 +03:00
Dmitry Stogov
3fd97a5b1f
Better hot/cold code splitting
2018-07-03 11:07:39 +03:00
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
d6ab163be8
cleanup
2018-06-29 12:35:14 +03:00
Dmitry Stogov
56450c6e65
Moved very rare exception check into a single place.
2018-06-27 13:34:15 +03:00
Xinchen Hui
3d8c82c353
Merge branch 'PHP-7.2'
...
* PHP-7.2:
Update NEWS
Fixed bug #76534 (PHP hangs on 'illegal string offset on string references with an error handler)
Conflicts:
Zend/zend_vm_execute.h
2018-06-27 13:08:47 +08:00
Xinchen Hui
3521661bd1
Merge branch 'PHP-7.1' into PHP-7.2
...
* PHP-7.1:
Fixed bug #76534 (PHP hangs on 'illegal string offset on string references with an error handler)
Conflicts:
Zend/zend_execute.c
Zend/zend_vm_def.h
Zend/zend_vm_execute.h
2018-06-27 13:07:36 +08:00
Xinchen Hui
d1b1866a3a
Fixed bug #76534 (PHP hangs on 'illegal string offset on string references with an error handler)
2018-06-27 13:05:11 +08:00
Dmitry Stogov
7f67513ca3
Lazy function copying from op_cache SHM into process memory
2018-06-25 19:53:58 +03:00
Nikita Popov
61d00a6cf3
Use COPY_DEREF instead of COPY_UNREF
...
This fixes the behavior when the storage location of the fetch is
modified before the operand is dereferenced by the using VM opcode.
Furthermore it elimiates references as a possible return value from
*_R opcodes, which will give us more opportunities for inferences,
in particular in regard to typed properties.
2018-06-25 11:23:59 +02:00
Dmitry Stogov
4418d61ca3
Avoid reusing zend_function.common.prototype for magic things (use reserved fields instead).
2018-06-21 13:09:25 +03:00
Nikita Popov
0b04938c87
Fix unspecialized executor
...
If we conditionally fetch a value, we also need to conditionally
free it.
2018-06-14 23:26:27 +02:00
Nikita Popov
95a0709935
Fix handling of ERROR zval in op1 of ASSIGN_REF
...
If op1 is ERROR the behavior is to not perform any assignment and
return NULL. However, if the RHS was a by-value returning function,
we'd instead emit a notice and return the RHS as the return value
(even though the value was not assigned to anything -- the temporary
is immediately destroyed).
This normalized the behavior to always check for an ERROR in op1
first.
2018-06-09 21:31:30 +02:00
Nikita Popov
d877d18676
Error on by-ref assign to overloaded prop returning ref
...
This error was already thrown if __get() was used -- however not
if it returned by reference. This is incorrect, because the
reference return makes no difference to a by-reference assignment,
which has reference-breaking semantics. The result was that the
assignment was accepted silently, even though it didn't do anything
(not even the value was assigned, let alone the reference).
2018-06-09 18:42:22 +02:00
Dmitry Stogov
1597b56619
Inline few small opcode handlers into hybrid executor
2018-06-07 16:30:53 +03:00
Dmitry Stogov
59c2ff2543
Embed zend_leave_helper() into hybrid executor to avoid call overhead.
2018-06-05 11:33:19 +03:00
Dmitry Stogov
b6a2ae3a5b
Cleanup
2018-06-05 11:26:15 +03:00
Dmitry Stogov
9e0f131d2b
Fixed ISSET/ISEMPTY bit meaning to simplify run-time checks
2018-05-31 19:02:51 +03:00
Dmitry Stogov
84aab1d4e1
Marked rarely used opcodes as "cold" (e.g. ADD_CONST_CONST ususaly optimized out).
2018-05-30 01:50:44 +03:00
Dmitry Stogov
da5a44c1c0
Revert "Avoid reference-counting"
...
This reverts commit ea26ab3393
.
2018-05-29 18:04:16 +03:00
Anatol Belski
6f4a01da21
Fix build without global registers
2018-05-28 20:44:58 +02:00
Dmitry Stogov
c27dda709c
Removed dead code
2018-05-28 18:29:43 +03:00
Dmitry Stogov
c9df8ac6c5
Separate common code into helper function
2018-05-28 18:11:43 +03:00
Dmitry Stogov
ea26ab3393
Avoid reference-counting
2018-05-28 17:10:58 +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
e9e2d068b6
Fixed conditions
2018-05-14 17:23:37 +03:00
Dmitry Stogov
b8a91ac50b
Use "fastcall" calling convention
2018-05-08 01:31:49 +03:00
Dmitry Stogov
1a63fa6ec9
Implemented Request #76178 (Class constants are slow: they should be inlined at runtime)
...
Run-time cache is used to eliminate recalculation of constant expression in RECV_INIT opcode (only non reference countable values are cached).
2018-05-03 14:40:18 +03:00
Dmitry Stogov
c88be6aee1
Bit check micro-optimization
2018-04-28 14:13:12 +03:00
Dmitry Stogov
d4aba32d8c
Cache negative defined() results
2018-03-30 16:41:02 +03:00
Dmitry Stogov
4aa9505b6e
Merge identical handlers
2018-03-29 11:13:17 +03:00
Dmitry Stogov
91ba1f2085
Remove "hot" mark from JMP(Z|NZ|ZNZ) with IS_CONST operand
2018-03-23 16:11:27 +03:00
Dmitry Stogov
295b233bfd
Mark few more opcode handlers as "hot".
2018-03-23 13:59:47 +03:00
Dmitry Stogov
a795bd8265
Optimize zend_hash_real_init()
2018-03-23 00:13:45 +03:00
Dmitry Stogov
e791e93b55
Make ZEND_ISSET_ISEMPTY_CV specialised across ISSET/ISEMPTY and HOT (the handler is really small, so inlining affects executor size insignificantly)
2018-03-22 13:03:45 +03:00
Dmitry Stogov
e6c179834b
Allow extra specialisation for ISSET/ISEMPTY handlers
2018-03-22 13:02:49 +03:00