Commit Graph

1835 Commits

Author SHA1 Message Date
Dmitry Stogov
ef1a1a0698 Separate "cold" parts of comparison instructions 2019-07-11 20:44:39 +03:00
Dmitry Stogov
be94c0c3c6 Separate "cold" parts of binary op instructions 2019-07-11 18:23:08 +03:00
Dmitry Stogov
8f0c87e1b6 Avoid unintended inlining 2019-07-09 14:01:48 +03:00
Dmitry Stogov
e1f418dd18 Remove duplicated code for (PRE|POST)_DEC_(OBJ|STATIC_PROP) opcodes 2019-07-09 10:46:04 +03:00
Dmitry Stogov
48ca5a1e17 Replace ZEND_ASSIGN_ADD (and others) by ZEND_ASSIGN_OP, ZEND_ASSIGN_DIM_OP, ZEND_ASSGIN_OBJ_OP and ZEND_ASSIGN_STATIC_PROP_OP 2019-07-05 12:03:25 +03:00
Dmitry Stogov
ef05eab432 Improve zend_binary_assign_op helpers.
Reorder opcode numbers to make ADD-POW and ASSIGN_ADD-ASSIGN_POW opcodes sequencional.
2019-07-04 17:25:43 +03:00
Dmitry Stogov
56b8b165f8 Optimization of INC/DEC helpers 2019-07-03 10:33:03 +03:00
Nikita Popov
03846afdf7 Fix clang build 2019-07-02 10:16:55 +02:00
Dmitry Stogov
2d4bb4f44a Use string destructor instead of general zval_ptr_dtor_nogc() 2019-07-02 01:14:33 +03:00
Dmitry Stogov
f58c645dcc Eliminate exception checks 2019-07-02 01:11:41 +03:00
Dmitry Stogov
f2b6b2eee8 Micro-optimization 2019-07-01 16:57:25 +03:00
Dmitry Stogov
39a0854307 Fixed GOTO VM 2019-07-01 15:50:53 +03:00
Dmitry Stogov
e8f1f70101 Reduce overhead of delayed early binding 2019-06-25 14:20:41 +03:00
Dmitry Stogov
759f4ecd8b Keep lowercased parent class name as second argument of DECLARE_CLASS to avoid extra work at run-time 2019-06-25 11:30:58 +03:00
Dmitry Stogov
0f29fb5cd8 Fixed bug 78175 (Preloading must store default values of static variables and properties) 2019-06-24 20:32:27 +03:00
Dmitry Stogov
e1e8e670df Cleanup 2019-06-21 11:43:17 +03:00
Nikita Popov
ed2a242317 Fix signed shift UB 2019-06-19 15:09:00 +02:00
Nikita Popov
cac6b04113 Fixed bug #78154 2019-06-13 10:59:01 +02:00
Joe Watkins
175c7bf6fe
Revert "micro-optimization"
This reverts commit 374f769982.
2019-06-12 20:04:47 +02:00
Nikita Popov
89b2d88659 Register class before fetching parent
We want the class declaration to be available while compiling the
parent class.
2019-06-11 13:09:33 +02:00
Dmitry Stogov
374f769982 micro-optimization 2019-06-10 16:43:20 +03:00
Nikita Popov
7780ba9660 Try to fix Windows build 2019-06-06 14:56:42 +02:00
Dmitry Stogov
a95014dc10 Reduce over-specialization for quite seldom instructions 2019-06-06 13:13:09 +03:00
Dmitry Stogov
457392fa64 Cheaper checks for exceptions thrown from __toString() 2019-06-06 01:47:22 +03:00
Dmitry Stogov
3f4dfe1877 Prevent generation of specialized ZEND_ASSIGN_OP_..._STATIC_PROP handlers, that call unspecialized helper, anyway. 2019-06-05 17:38:13 +03:00
Nikita Popov
a31f46421d Allow exceptions in __toString()
RFC: https://wiki.php.net/rfc/tostring_exceptions

And convert some object to string conversion related recoverable
fatal errors into Error exceptions.

Improve exception safety of internal code performing string
conversions.
2019-06-05 14:25:07 +02:00
Dmitry Stogov
2915a32f37 Fixed compilation warning 2019-05-31 00:59:52 +03:00
Dmitry Stogov
1814308e49 Don't specialize "cold" handlers 2019-05-31 00:31:57 +03:00
Dmitry Stogov
4e567ed1da Removed useless specialization. Specialized handlers called not specialized helpers. 2019-05-31 00:15:25 +03:00
Dmitry Stogov
cf388033d5 Reduce register pressure by reloading values on CPUs with few general purpose registers 2019-05-31 00:14:10 +03:00
Dmitry Stogov
ee56552913 Disable "bad" optimisations only for emulation loop 2019-05-30 20:35:30 +03:00
Dmitry Stogov
b2cb6a4a27 Avoid double copying 2019-05-28 13:35:00 +03:00
Nikita Popov
fd23f9104a BIND_STATIC of implicit binding may be undef
Even though we don't need it at runtime, add the BIND_IMPLICIT
flag to BIND_STATIC as well, so we can distinguish this case in
type inference.

This fixes a JIT miscompile in arrow_functions/002.phpt.
2019-05-27 17:12:20 +02:00
CHU Zhaowei
e829d08729 Implement spread operator in arrays
RFC: https://wiki.php.net/rfc/spread_operator_for_array

Closes GH-3640.
2019-05-13 14:42:43 +02:00
Nikita Popov
f3e5bbe6f3 Implement arrow functions
Per RFC: https://wiki.php.net/rfc/arrow_functions_v2

Co-authored-by: Levi Morrison <levim@php.net>
Co-authored-by: Bob Weinand <bobwei9@hotmail.com>
2019-05-02 15:04:03 +02:00
Dmitry Stogov
38f9c8d93d Don't initialize return value before calling user functions 2019-04-18 02:31:12 +03:00
Dmitry Stogov
cb3cfc9ff8 Removed tests that always (or almost always) true 2019-04-15 13:18:16 +03:00
Nikita Popov
7f6c22cb3d Fix last maybe uninit warnings on 7.4
Most of these only occur under GCC 5. Not fond of all the workarounds
(especially the PDO one), but it gets us a clean build...
2019-04-15 11:35:13 +02:00
Dmitry Stogov
55cc280429 Backported call frame initialization improvement 2019-04-12 02:35:42 +03:00
Dmitry Stogov
88a2268d6b Replace "ZEND_CALL_CTOR" hack by additional live-range 2019-04-12 00:49:45 +03:00
Nikita Popov
30df87f77d Generate ZEND_COUNT for sizeof()
sizeof() is an alias of count(), so we should generate the same
code for them.
2019-04-11 10:48:52 +02:00
Nikita Popov
e86820eb56 Fix invalid function by-ref prop assign handling 2019-04-08 10:18:26 +02:00
Dmitry Stogov
d6848625d7 Optimized "smart branch" instructions 2019-04-05 00:25:45 +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
575c3576a7 unused variable 2019-04-04 17:52:17 +03:00
Dmitry Stogov
9cb926d8d1 Improved comparison opcode handlers 2019-04-02 23:46:21 +03:00
Dmitry Stogov
14359eb7eb Fixed typo 2019-03-20 01:31:35 +03:00
Dmitry Stogov
9357953bab micro-optimization 2019-03-19 02:02:14 +03:00
Dmitry Stogov
d4bef4ce7b Avoid useless code duplication, because of unused specialization 2019-02-15 17:49:39 +03:00
Dmitry Stogov
78a1d76962 Reduce slow code size 2019-02-15 17:03:04 +03:00