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