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