Commit graph

1102 commits

Author SHA1 Message Date
Dmitry Stogov
050d7e38ad Cleanup (1-st round) 2014-04-15 15:40:40 +04:00
Dmitry Stogov
703c1bc570 Fixed passing arguments by reference into array_walk() callbacks. 2014-04-14 15:11:05 +04:00
Bob Weinand
12844292b8 Merge branch 'PHP-5.6' 2014-04-14 00:10:25 +02:00
Bob Weinand
a93e734f81 Merge branch 'PHP-5.5' into PHP-5.6 2014-04-14 00:08:36 +02:00
Bob Weinand
bf3edbada6 Merge branch 'PHP-5.4' into PHP-5.5 2014-04-13 23:03:53 +02:00
Bob Weinand
beda5093b4 Reverted to 5a0da281e5
Discussion: http://news.php.net/php.cvs/76836
2014-04-13 23:01:31 +02:00
Bob Weinand
ef214aa3c0 Merge branch 'PHP-5.6' 2014-04-13 19:28:32 +02:00
Bob Weinand
fb99409f89 Merge branch 'PHP-5.5' into PHP-5.6 2014-04-13 19:27:43 +02:00
Bob Weinand
eca0644e0a Merge branch 'PHP-5.4' into PHP-5.5 2014-04-13 19:25:07 +02:00
Bob Weinand
1a4a9eede5 Fix bug #67064 in a BC safe way
You can use an optional parameter now when implementing the Countable interface
to get the $mode passed to count().
2014-04-13 19:24:12 +02:00
Nikita Popov
21e01f2b70 Merge branch 'PHP-5.6' 2014-04-09 12:31:35 +02:00
Nikita Popov
ad2ef3d97e Add only_integer_keys option to zend_hash_reindex
This allows to either do a full reindex, or only reindex the integer
keys.
2014-04-09 12:31:21 +02:00
Nikita Popov
f485c84a14 Don't always separate splice replacement array
Only perform separation when a typecast is done. Avoids doing a
full hash copy in many cases.
2014-04-09 12:31:21 +02:00
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