Commit graph

739 commits

Author SHA1 Message Date
Nikita Popov
22d3eb3117 Add zend_hash_splice
This implements the original functionality of php_splice, but
as an in-place operation, thus avoiding copying the HT.

This is much faster (~10x) if the splice removes a small portion
of the array and doesn't insert many elements.
2014-04-09 12:31:21 +02:00
Nikita Popov
1aa8719e32 Add zend_hash_reindex
The implementation differs from the original in array.c in that it
rehashes the hashtable in the same loop. This is approximately two
times faster (not counting the rare case of a purely associative
array).
2014-04-09 12:31:21 +02:00
Dmitry Stogov
3d17219cd8 Refactored zend_hash_* iteration API zend_hash_fove_forward_ex(ht, pos) and family require second argument to be real pointer.
&(ht)->nInternalPointer should be passed instead of NULL.
zend_hash_update_current_key() may work only with internal pointer.
2014-04-07 23:14:17 +04:00
Dmitry Stogov
58f0f2503c Various VM optimizations 2014-04-04 02:52:53 +04:00
Dmitry Stogov
76cc99fe60 Refactored ZVAL flags usage to simplify various checks (e.g. Z_REFCOUNTED(), candidate for GC, etc) 2014-04-03 15:26:23 +04:00
Dmitry Stogov
6b2ed577fd Avoid unnecessry reallocations 2014-04-01 22:36:17 +04:00
Dmitry Stogov
a25a1ba0ef STR_DUP() doesn't duplicate interned strings anymore. In case new string is required STR_INIT() or STR_ALLOC() should be used. 2014-04-01 16:31:03 +04:00
Dmitry Stogov
ea85451b65 Refactored data structures to keep zend_object* instead of a whole zval in some places 2014-03-28 02:11:22 +04:00
Dmitry Stogov
c6cba55454 Use ZVAL_DEREF() macro 2014-03-27 13:39:09 +04:00
Dmitry Stogov
54d559d893 Replaced (Z_TYPE(x) == IS_REFERENCE) with (Z_ISREF(x)) 2014-03-27 11:50:45 +04:00
Dmitry Stogov
f3272bf7ac Fixed extract() support IS_INDIRECT 2014-03-26 22:52:28 +04:00
Dmitry Stogov
887189ca31 Refactored IS_INDIRECT usage for CV and object properties to support HashTable resizing 2014-03-26 18:07:31 +04:00
Dmitry Stogov
a6f09e48d7 Fixed memory leak 2014-03-20 01:05:06 +04:00
Dmitry Stogov
b7938ab1bd Refactored GC (incomplete) 2014-03-19 17:00:28 +04:00
Dmitry Stogov
6b6e903688 Fixed support for references 2014-03-18 13:20:11 +04:00
Dmitry Stogov
aa5f55306b Refactored EG(active_symbol_table) to be zend_array* instead of HashTable* 2014-03-17 23:15:22 +04:00
Xinchen Hui
3203c65c7c Fixed COUNT_RECURSIVE reference handling 2014-03-17 22:04:54 +08:00
Dmitry Stogov
734db60eaa Fixed reference support 2014-03-14 12:50:20 +04:00
Dmitry Stogov
5f613c0d23 Fixed support for references 2014-03-14 12:14:59 +04:00
Dmitry Stogov
dd1bd54408 Fixed support for references 2014-03-13 23:23:20 +04:00
Dmitry Stogov
d708d3c596 Fixed passing arguments by reference from internal functions 2014-03-11 22:33:28 +04:00
Xinchen Hui
b2b457a7e0 Fixed wrong addref usage in extract 2014-03-09 11:53:06 +08:00
Dmitry Stogov
47f9014458 Fixed array_nultisort() to support IS_REFERENCE 2014-03-05 17:23:40 +04:00
Dmitry Stogov
7320abbaa9 Reverted "efree(args);" removed by mistake 2014-03-05 15:49:24 +04:00
Xinchen Hui
70b7887712 Fixed refcounted handling 2014-03-05 18:17:16 +08:00
Xinchen Hui
74c2deecd8 Fixed refcounted 2014-03-05 18:11:22 +08:00
Xinchen Hui
581fa5822e Merge branch 'refactoring2' of github.com:zendtech/php into refactoring2
Conflicts:
	ext/standard/array.c
2014-03-05 18:02:35 +08:00
Xinchen Hui
bfaa9669a6 Fixed refcounted 2014-03-05 18:00:46 +08:00
Dmitry Stogov
3733737328 Handle interned strings as non-refcounted scalars 2014-03-05 13:55:56 +04:00
Xinchen Hui
0791bdb562 retval might be IS_UNDEF even the call is successed 2014-03-05 17:53:01 +08:00
Xinchen Hui
75d567ef9a Fixed NULL pointer def in ext/standard/tests/array/array_fill_keys_variation2.php 2014-03-05 17:31:10 +08:00
Xinchen Hui
2ee6bc1309 Remove "efree(args") 2014-03-05 17:07:09 +08:00
Xinchen Hui
57ae19a0b7 Checkout refcounted before doing addref 2014-03-05 17:02:50 +08:00
Dmitry Stogov
040dea8b82 Arguments taken by internal functions using zend_parse_parameters() with "+" and "*" specifications must not be deallocated anymore. 2014-03-05 11:10:52 +04:00
Dmitry Stogov
2bf3018169 Fixed array_push() 2014-02-28 15:48:39 +04:00
Xinchen Hui
71dac3d54f Don't add_ref in add_*_str functions 2014-02-25 15:47:24 +08:00
Xinchen Hui
69a93d2fd7 Fixed segfault in ext/standard/tests/strings/bug49785.phpt 2014-02-23 21:53:48 +08:00
Dmitry Stogov
d0eccdeea1 Fixed array_unshift() 2014-02-21 17:38:12 +04:00
Dmitry Stogov
2161103fc3 Use better data structures (incomplete) 2014-02-10 17:49:21 +04:00
Dmitry Stogov
f4cfaf36e2 Use better data structures (incomplete) 2014-02-10 10:04:30 +04:00
Xinchen Hui
0f53e37494 Merge branch 'PHP-5.6' 2014-01-03 11:09:07 +08:00
Xinchen Hui
c081ce628f Bump year 2014-01-03 11:08:10 +08:00
Xinchen Hui
47c9027772 Bump year 2014-01-03 11:06:16 +08:00
Xinchen Hui
c0d060f5c0 Bump year 2014-01-03 11:04:26 +08:00
Kalle Sommer Nielsen
d14670ccdb Eliminate another TSRMLS_FETCH() in i_zend_is_true()
# Affected extensions have all been updated, ext/opcache and ext/zip
# both have macros for cross version compatibility
2013-12-18 07:25:05 +01:00
Nikita Popov
dc4bf922d9 Allow $num=0 in array_fill()
Implemented request #49824.
2013-11-12 22:02:51 +01:00
Sherif Ramadan
98c9e56ef0 Merge branch 'pull-request/287'
Add ability to use array keys with array_filter().
This adds a third (optional) argument to array_filter() that will determine
what gets passed to the callback, the array key, value or both.
The third argument can be one of two constants: ARRAY_FILTER_USE_BOTH or,
ARRAY_FILTER_USE_KEY.
2013-10-30 09:36:19 -04:00
Dmitry Stogov
b0f9768e02 Merge branch 'PHP-5.5'
* PHP-5.5:
  Improved performance of array_merge() by eliminating useless copying

Conflicts:
	NEWS
2013-10-28 13:47:37 +04:00
Dmitry Stogov
5c0890ba8a Improved performance of array_merge() by eliminating useless copying 2013-10-28 13:31:44 +04:00
Tjerk Meesters
75ba75e205 Using only two constants to signal use type intent. 2013-09-28 00:06:04 +08:00