Dmitry Stogov
aeca761856
Removed useless reallocations
2017-10-26 19:13:53 +03:00
Dmitry Stogov
6a034be2c6
Fixed signed/unsigned comparisons
2017-10-25 11:45:17 +03:00
Dmitry Stogov
9cf87aa196
Avoid HashTable allocations for empty arrays (using zend_empty_array).
2017-10-24 17:27:31 +03:00
Dmitry Stogov
59a7944bc6
Made run_time_cache to keep "offset" to dynamic properties Buckets (instead of index).
2017-10-24 10:28:19 +03:00
Dmitry Stogov
193adbdf30
Use run-time cache to keep position of dynamic properties in HashTable to access them without hash lookup.
2017-10-23 18:29:13 +03:00
Dmitry Stogov
d0f4dbfd96
Make assertions in DO_ICALL and CALL_TRAMPOLINE to be consistent with DO_FCALL.
2017-10-17 13:35:59 +03:00
Dmitry Stogov
61ef91bf0d
Revert "Allow internal functions to return values by reference (this was disabled in implementation of DO_ICALL, but enabled in DO_FCALL)."
...
This reverts commit da781a5ac2
.
2017-10-17 13:25:19 +03:00
Dmitry Stogov
da781a5ac2
Allow internal functions to return values by reference (this was disabled in implementation of DO_ICALL, but enabled in DO_FCALL).
...
However, don't require internal functions returning by reference to return a reference.
Mark unserialize() as returning by reference and remove unwrap_reference hack, to allow proper returning of self referenced arrays using a reference.
Currently unserialize() is the only internal function that may return a reference.
2017-10-17 11:50:34 +03:00
Dmitry Stogov
ef5ea48741
Always use IS_CONSTANT_AST (IS_CONSTANT is removed).
2017-10-10 10:11:05 +03:00
Dmitry Stogov
fcccb0d6ea
Use zval_ptr_dtor_nogc() in places where circular zvals are not possible
2017-10-09 12:24:11 +03:00
Dmitry Stogov
e70618aff6
Changed the way VM accesses constant operands in 64-bit builds.
2017-10-04 16:53:01 +03:00
Dmitry Stogov
44e0b79ac6
Refactored array creation API. array_init() and array_init_size() are converted into macros calling zend_new_array(). They are not functions anymore and don't return any values.
2017-09-20 02:25:56 +03:00
Dmitry Stogov
0fb05f1487
Property access micro-optimization. (ZEND_WRONG_PROPERTY_OFFSET and ZEND_DYNAMIC_PROPERTY_OFFSET are hidden, use one comparison instead of two on fast paths. "Negative" offsets are reserved for future optimizations).
2017-09-18 13:13:24 +03:00
Dmitry Stogov
cd6893aed1
Fixed attempt to free invalid structure (result of ROPE_INIT is not a zval)
2017-08-14 12:11:25 +03:00
Xinchen Hui
9b87b73fec
Req #74963 (Improved error message on fetching property of non-object)
2017-07-31 11:51:23 +08:00
Dmitry Stogov
112eda7525
Separate the fast-patch
2017-07-19 15:42:32 +03:00
Nikita Popov
ecb67e59d7
Don't reuse compare_function operands
...
If the same zval is used for the result and one operand, then the
function thinks it is responsible for freeing the value in case of
a type conversion.
2017-07-19 01:04:36 +02:00
Dmitry Stogov
f49ee79e95
gc_check_possible_root() may throw exception.
2017-07-17 23:17:16 +03:00
Dmitry Stogov
1180d8c801
Separate ISSET_ISEMPTY_CV/UNSET_CV from ISSET_ISEMPTY_VAR/UNSET_VAR
2017-07-17 14:11:50 +03:00
Dmitry Stogov
02ef5d3803
Revert "Avoid run-time checks performed at compile-time."
...
This reverts commit 8fe47a47cf
.
2017-07-04 07:15:42 +03:00
Dmitry Stogov
bbb786c85b
Split zend_init_execute_data() into zend_init_func_execute_data() and zend_init_code_execute_data()
2017-06-29 10:10:57 +03:00
Tom Van Looy
60d032d65e
Remove unused variable op2. It is redeclared later.
2017-06-25 22:31:00 +02:00
Nikita Popov
c136afa2be
Fix FE_FETCH_* exception check
...
Only applying this for 7.2, because handling this would be ugly
under the old retval freeing semantics.
2017-06-25 16:45:17 +02:00
Nikita Popov
ed37ca7369
Fixed bug #74810
...
And also did some general cleanup in ZEND_FUNC_GET_ARGS.
2017-06-25 16:00:24 +02:00
Nikita Popov
191f154d40
Merge branch 'PHP-7.1'
2017-06-25 15:32:38 +02:00
Dmitry Stogov
7802cf8c1a
Added specialized FE_FETCH_R handler for iteration over array
2017-06-20 23:25:09 +03:00
Dmitry Stogov
31a2198fd9
FE_RESER/FE_FETCH optimisation
2017-06-20 22:26:46 +03:00
Dmitry Stogov
bfa154448d
VM refactoring, to avoid passing "execute_data" into helper functions that can access it using global register variable.
2017-06-16 01:42:49 +03:00
Dmitry Stogov
76db01d9ff
Moved "Using $this when not in object context" exception code into single VM helper.
2017-06-15 16:23:05 +03:00
Dmitry Stogov
8fe47a47cf
Avoid run-time checks performed at compile-time.
2017-06-13 13:48:58 +03:00
Dmitry Stogov
6a024146bb
Removed unused variable.
2017-06-06 16:08:44 +03:00
Dmitry Stogov
02e6c9c757
ZVAL_COPY_UNREF() micro-optimization
2017-06-02 00:38:09 +03:00
Dmitry Stogov
33d42802d3
Fixed support for C compilers that don't support global register variables.
2017-05-30 13:31:58 +03:00
Dmitry Stogov
6043f76ad7
Added ZEND_FUNC_NUM_ARGS, ZEND_FUNC_GET_ARGS instructions, to implement corresponding builtin functions.
...
Special optimisation for "array_slice(INT, func_get_args())" pattern.
2017-05-30 13:23:17 +03:00
Dmitry Stogov
017d65d74a
Extend ZEND_SEND_ARRAY to eliminate array_slice() call for "call_user_func_array(_, array_slice(_, LONG, _))" pattern.
2017-05-30 12:25:46 +03:00
Dmitry Stogov
f00d1c72b4
Added ZEND_GET_CLASS, ZEMD_GET_CALLED_CLASS, ZEND_GET_TYPE instructions, to implement corresponding builtin functions.
2017-05-25 18:41:28 +03:00
Dmitry Stogov
cd953269d3
Added ZEND_COUNT instruction, to implement corresponding builtin.
2017-05-25 12:52:34 +03:00
Dmitry Stogov
44ec732752
Fixed ZEND_IN_ARRAY related issues
2017-05-25 10:26:42 +03:00
Dmitry Stogov
7c7383067f
Added ZEND_IN_ARRAY instruction, implementing optimized in_array() builtin function, through hash lookup in flipped array
2017-05-24 23:00:48 +03:00
Xinchen Hui
26a6d20ab5
Fixed segfult in JIT (emalloc may trigger memory limitation)
...
Zend/tests/bug68412.phpt
2017-05-21 20:48:07 +08:00
Dmitry Stogov
8203a175b1
Remove unused opcode handlers
2017-05-18 13:18:08 +03:00
Dmitry Stogov
fc927dc263
Switch to HYBRID VM
2017-05-17 15:07:33 +03:00
Dmitry Stogov
7640e0a5f9
HYBRID VM cleanup
2017-05-16 09:24:23 +03:00
Dmitry Stogov
69b4f8ed79
Fixed USER_OPCODE handling in HYBRID VM.
2017-05-15 21:17:58 +03:00
Dmitry Stogov
c8f073d0d7
Avoid useless checks
2017-05-10 13:27:37 +03:00
Dmitry Stogov
27e01cd918
Implemented HYBRID VM instruction dispatch method that takes advantages of both CALL and GOTO VMs.
2017-05-03 10:01:22 +03:00
Nikita Popov
cfa6fa1525
Initialize retval in INCLUDE_OR_EVAL
...
In case the eval'd code throws.
2017-04-15 12:11:30 +02:00
Nikita Popov
ad8652818a
Implement jumptable optimization
2017-04-10 22:23:14 +02:00
Nikita Popov
3895aa2f77
Merge branch 'PHP-7.1'
2017-04-09 15:51:38 +02:00
Nikita Popov
515e1e0cea
Merge branch 'PHP-7.0' into PHP-7.1
2017-04-09 15:35:44 +02:00