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
6d88e1ccd6
Don't use second operand of BIND_STATIC instruction.
2018-08-21 12:22:04 +03: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
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
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
1597b56619
Inline few small opcode handlers into hybrid executor
2018-06-07 16:30:53 +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
4aa9505b6e
Merge identical handlers
2018-03-29 11:13:17 +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
6fb9e24218
Allow generation of VM map
2018-02-22 15:31:00 +03:00
Andi Gutmans
e86edc5f1b
- Nuke another two files
2004-10-22 22:01:34 +00:00
Marcus Boerger
f71644b480
- Revert automatic pass arg_info
...
# We need to find a better solutions to prevent havy extension writer probs
2004-10-08 22:17:32 +00:00
Marcus Boerger
f916d603ef
- Add arginfo ZEND_ARG_SEND_AUTOMATIC which lets the compiler automatically
...
determine whether pass by ref is possible or pass by value is needed.
# This is usefull when functions take array or string parameters as
# expressions. In such a case force by ref is not applicable and the
# executor would copy the variable unnecessarily as soon as it is at least
# once referenced.
2004-10-05 18:36:46 +00:00
Dmitry Stogov
3d383e45dc
Fixed unset() bug that was introduced with CV optimization patch
2004-10-05 09:09:18 +00:00
Dmitry Stogov
3f35c6a6cc
Added test cases for CV optimization patch
2004-10-05 06:53:39 +00:00
Andi Gutmans
db507dd153
- Commit the variable fetch optimization.
...
- Extensions which delete global variables need to use new special function
- delete_global_variable() (I'm about to rename it) to remove them.
- Will post to internals@ or via commit messages if there's anything else.
2004-10-04 19:54:35 +00:00
Dmitry Stogov
480f4e3565
Specializer was updated with executor's fixes.
2004-09-22 08:45:21 +00:00
Andi Gutmans
8eb8850c90
- Some architectural changes:
...
a) We specialize opcodes according to op_type fields. Each opcode has to
be marked with which op_type's it uses.
b) We support different execution methods. Function handlers, switch()
and goto dispatching. goto seems to be the fastest but it really
depends on the compiler and how well it optimizes. I suggest playing
around with optimization flags.
- Warning: Things might break so keep us posted on how things are going.
(Dmitry, Andi)
2004-09-08 22:14:12 +00:00