Dmitry Stogov
689c6fb188
Replace ZEND_ACC_ANON_BOUND, ZEND_ACC_UNRESOLVED_PARENT and ZEND_ACC_UNRESOLVED_INTERFACES with single ZEND_ACC_LINKED.
2018-09-18 11:41:40 +03:00
Dmitry Stogov
684354be72
Removed incorrect efree() (run_time_cache(s) are usually allocated in CG(arena)).
2018-08-28 17:46:26 +03:00
Dmitry Stogov
8050f4a334
Keep information about unresolved parent class in zend_class_entry->parent_name
2018-08-24 00:20:57 +03:00
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
93f9ee7217
Use zend_class_entry/zend_function type names instead of _zend_class_entry/_zend_function tags.
2018-08-22 14:01:14 +03:00
Dmitry Stogov
85ee47eda0
Changed structure of zend_class_entry.trait_aliases and zend_class_entry.trait_precedences to avoid keeping "intermediate" trait references, that are used only during inheritance.
2018-07-11 18:56:10 +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
7f67513ca3
Lazy function copying from op_cache SHM into process memory
2018-06-25 19:53:58 +03:00
Nikita Popov
2543e61aed
Fixed bug #76509
...
In PHP static properties are shared between inheriting classes,
unless they are explicitly overwritten. However, because this
functionality was implemented using reference, it was possible
to break the implementation by reassigning the static property
reference.
This is fixed by switching the implementation from using references
to using INDIRECTs, which cannot be affected by userland code.
2018-06-25 15:04:09 +02:00
Dmitry Stogov
44be0fa67b
Fixed HashTable load factor
2018-05-29 10:16:02 +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
34ed8e53fe
Changed worst HashTable load factor from 1.0 to 0.5
2018-05-04 02:41:35 +03:00
Dmitry Stogov
dcbac8ade6
Fixed use-after-free.
2018-03-07 10:21:51 +03:00
Dmitry Stogov
44e1d2f8a9
Merge branch 'PHP-7.2'
...
* PHP-7.2:
Replaced usafe reference from SHM to process memory with SHM to SHM reference.
2018-03-06 03:00:46 +03:00
Dmitry Stogov
020a02ef9d
Merge branch 'PHP-7.1' into PHP-7.2
...
* PHP-7.1:
Replaced usafe reference from SHM to process memory with SHM to SHM reference.
2018-03-06 02:47:01 +03:00
Dmitry Stogov
50949c9332
Replaced usafe reference from SHM to process memory with SHM to SHM reference.
2018-03-06 02:43:26 +03:00
Dmitry Stogov
47f5f87826
Merge branch 'PHP-7.2'
...
* PHP-7.2:
Don't keep HashTable.pDestructor in SHM and always set it into ZVAL_PTR_DTOR in zval_array_dup(). Keeping pointer to a function in SHM is not safe because of ASLR.
2018-03-06 01:02:31 +03:00
Dmitry Stogov
b48d2f6d10
Merge branch 'PHP-7.1' into PHP-7.2
...
* PHP-7.1:
Don't keep HashTable.pDestructor in SHM and always set it into ZVAL_PTR_DTOR in zval_array_dup(). Keeping pointer to a function in SHM is not safe because of ASLR.
2018-03-06 01:00:14 +03:00
Dmitry Stogov
b711a96acb
Don't keep HashTable.pDestructor in SHM and always set it into ZVAL_PTR_DTOR in zval_array_dup().
...
Keeping pointer to a function in SHM is not safe because of ASLR.
2018-03-06 00:56:16 +03:00
Dmitry Stogov
d9d30a7f38
AST is not COPYABLE anymore and its reference-counter doesn't have to be initialized by 2.
2018-03-06 00:30:25 +03:00
Dmitry Stogov
84a0423e05
Set and keep HASH_FLAG_STATIC_KEYS for all HashTables stored in SHM (or file cache).
2018-03-06 00:00:13 +03:00
Dmitry Stogov
f32b7dbc43
Merge branch 'PHP-7.2'
...
* PHP-7.2:
Fixed "opcache.file_cache_fallback" mode.
2018-03-05 16:21:20 +03:00
Dmitry Stogov
a8fbb15311
Merge branch 'PHP-7.1' into PHP-7.2
...
* PHP-7.1:
Fixed "opcache.file_cache_fallback" mode.
2018-03-05 16:15:38 +03:00
Dmitry Stogov
350082ed71
Fixed "opcache.file_cache_fallback" mode.
...
It's not safe to change value of ZCG(accel_directives).file_cache_only, becuse it might be altered by INI subsystem.
Use global variable instead.
2018-03-05 16:01:43 +03:00
Dmitry Stogov
6f483dc94c
Use macros to update specific parts of GC_TYPE_INFO() (direct assignments to GC_TYPE(), GC_FLAGS() and GC_INFO() are prohibited)
2018-02-28 00:52:12 +03:00
Xinchen Hui
5c05870ef6
Optimized fast_memcpy with AVX instructions
...
Great thanks to welting for helping :)
2018-02-15 00:18:47 +08:00
Dmitry Stogov
ca035f26aa
Moved "zval.u2.cache_slot" into free room of "zend_op"
2018-02-05 19:41:47 +03:00
Dmitry Stogov
ba298725d1
Changed CATCH instruction format (extended_value moved into op2, op2 into result, result into extended_value)
2018-01-31 22:39:30 +03:00
Dmitry Stogov
9cbb521094
Access HashTable.u.flags through HT_FLAGS() macro.
2018-01-22 13:36:15 +03:00
Dmitry Stogov
742d5a01ed
Get rid of IS_TYPE_COPYABLE.
2018-01-19 17:47:26 +03:00
Dmitry Stogov
5c77bac9a7
A cheaper way to reset type flags.
2018-01-17 01:58:51 +03:00
Dmitry Stogov
2223f04304
Cleanup (at persistence stage we may get only "user" functions; regular op_arrays can't be referenced from different places)
2018-01-12 12:05:18 +03:00
Xinchen Hui
a6519d0514
year++
2018-01-02 12:57:58 +08:00
Xinchen Hui
7a7ec01a49
year++
2018-01-02 12:55:14 +08:00
Xinchen Hui
ccd4716ec7
year++
2018-01-02 12:53:31 +08:00
Nikita Popov
b6581038eb
Use GC_FLAGS_SHIFT in a few more places
...
Rather than hardcoding 8.
2017-12-30 23:40:25 +01:00
Dmitry Stogov
49ea143bbd
Encapsulate reference-counting primitives.
...
Prohibit direct update of GC_REFCOUNT(), GC_SET_REFCOUNT(), GC_ADDREF() and GC_DELREF() shoukf be instead.
Added mactros to validate reference-counting (disabled for now).
These macros are going to be used to eliminate race-condintions during reference-counting on data shared between threads.
2017-10-27 01:28:58 +03:00
Anatol Belski
f24e597c85
Constify key access for hash and formal params
...
Keys created in shared memory and won't be modified and are free'd on
restart. Otherwise, keys passed to functions should not be modified,
too.
2017-10-19 12:07:08 +02:00
Dmitry Stogov
97e7521e49
AST don't have to be COPYABLE anymore.
2017-10-10 15:45:03 +03:00
Dmitry Stogov
ef5ea48741
Always use IS_CONSTANT_AST (IS_CONSTANT is removed).
2017-10-10 10:11:05 +03:00
Dmitry Stogov
39ded1d5f8
Changed zend_ast_ref structure to use only one allocation, removing dichotomy between heap/arena ASTs.
2017-10-09 16:57:51 +03:00
Dmitry Stogov
cb9d81ef4f
Refactored recursion pretection
2017-10-06 01:34:50 +03:00
Dmitry Stogov
e70618aff6
Changed the way VM accesses constant operands in 64-bit builds.
2017-10-04 16:53:01 +03:00
Nikita Popov
ad8652818a
Implement jumptable optimization
2017-04-10 22:23:14 +02:00
Anatol Belski
c698299550
Interned strings unification for TS/NTS
...
Hereby, interned strings are supported in thread safe PHP. The patch
implements two types of interned strings
- interning per process, strings are not freed till process end
- interning per request, strings are freed at request end
There is no runtime interning.
With Opcache, all the permanent iterned strings are copied into SHM on
startup, additional copying into SHM might happen on demand.
2017-03-04 10:39:13 +01:00
Anatol Belski
46bdb637ec
Merge branch 'PHP-7.1'
...
* PHP-7.1:
Fixed bug #73983 crash on finish work with phar in cli + opcache
2017-01-30 12:47:29 +01:00
Anatol Belski
de64adeb1d
Merge branch 'PHP-7.0' into PHP-7.1
...
* PHP-7.0:
Fixed bug #73983 crash on finish work with phar in cli + opcache
2017-01-30 12:46:11 +01:00
Anatol Belski
368958b3e4
Fixed bug #73983 crash on finish work with phar in cli + opcache
...
The file_cache_only option causes the storage to be per process,
furthermore the arena is destroyed per request. Thus, zend_string's
can't survive between request and the permanent flag should not
be set. This is already done with the file cache part, but the
persistency part is used in various scenarios and should respect
this case as well. In this particular bug, the pcre pattern cache
needs to survive between requests and uses pattern strings as hash
keys. One more case relevant here would be various situations where
the flow disables the use of shared memory.
2017-01-30 12:44:21 +01:00
Dmitry Stogov
141d1ba980
Introduced "zend_type" - an abstraction for type-hinting representation.
2017-01-13 11:37:46 +03:00