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
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
d7f2dc4ec6
Improve HashTable iterators handling:
...
- Avoid iterators check/update on each HashTable update opration
- Keep position equal (or above) nNumUsed instead of HT_INVALID_IDX
- Fixed iterators handling in array_unshift()
2018-03-22 02:41:49 +03:00
Dmitry Stogov
a2d1f2df46
Eliminate conditional branches
2018-03-07 00:03:13 +03:00
Dmitry Stogov
bd908f6145
Fixed build without global register variables
2018-02-22 11:00:29 +03:00
Dmitry Stogov
927748b271
Reorganize make_real_object() related code
2018-02-21 18:43:38 +03:00