Nikita Popov
0bf55b65d4
Remove two more always-true conditions
2014-09-16 18:28:59 +02:00
Dmitry Stogov
6991780793
Optimized FE_RESET and FE_FETCH
2014-09-16 01:34:27 +04:00
Nikita Popov
a7bfd006bd
Remove always-true comparisons
2014-09-15 23:07:31 +02:00
Nikita Popov
ca43b99fc6
Update types in zend_hash
...
* String lengths are size_t
* Indexes are uint32_t
* Flags are uint32_t
* Booleans are zend_bool
2014-09-15 23:07:31 +02:00
Dmitry Stogov
219794e1cd
Split and optimize loop
2014-08-27 00:52:50 +04:00
Anatol Belski
4d997f63d9
master renames phase 3
2014-08-25 20:22:49 +02:00
Anatol Belski
6f9f0bf205
master renames phase 2
2014-08-25 19:28:33 +02:00
Anatol Belski
c3e3c98ec6
master renames phase 1
2014-08-25 19:24:55 +02:00
Anatol Belski
864172d9a4
further fixes to ext/standard and zend
2014-08-16 17:31:40 +02:00
Anatol Belski
8ee2a4a9b5
first shot on merging the core fro the int64 branch
2014-08-16 11:16:11 +02:00
Dmitry Stogov
2ece977c80
Fixed conversion of empty packed array into hash
2014-08-14 13:44:37 +04:00
Dmitry Stogov
c1965f58d4
Use reference counting instead of zval duplication
2014-06-05 16:04:11 +04:00
Dmitry Stogov
b3b616cf7e
Introduced immutable arrays. They don't need to be copyed and may be used directly from SHM.
2014-05-29 18:21:56 +04:00
Dmitry Stogov
40256e0f9c
Use specialized functions instead of macros
2014-05-26 17:16:16 +04:00
Dmitry Stogov
b66728aabb
Removed useless initializations
2014-05-26 11:42:58 +04:00
Dmitry Stogov
9eb89dddb1
Use optimized zend_array_dup() function. convert zend_hash_num_elements() and zend_hash_next_free_element() into macros.
2014-05-23 20:37:53 +04:00
Dmitry Stogov
21da8af578
Removed the old hack that was originally developed to support constants in array indeces, and isn't needed anymore after the Bob's patch.
2014-05-19 01:20:56 +04:00
Dmitry Stogov
d07c1941ec
Use new hash iteration API and avoid old zend_hash_update_current_key() hack
2014-05-19 00:50:00 +04:00
Tjerk Meesters
e7b50a8ee9
Convert to unpacked before deleting elements
...
Return FAILURE immediately if a string index removal is attempted.
Moved condition higher up
2014-05-13 11:58:28 +08:00
Nikita Popov
b30c7fe263
Port JSON
2014-05-05 01:00:59 +02:00
Nikita Popov
69b5ee61d0
Fixed bug #67169 : []= after_array_splice incorrect
...
This fixes a regression I introduced in beta 1.
2014-05-02 12:49:51 +02:00
Dmitry Stogov
b1ff152782
Reimplement strtr()
2014-04-24 19:14:29 +04:00
Nikita Popov
c98d373eb6
Fix strict array comparison
...
Fixes Symfony test failures
2014-04-23 20:34:45 +02:00
Dmitry Stogov
72c287bd23
Combine HashTable.flags and HashTable.nApplyCount into single 32-bit word
2014-04-21 18:25:34 +04:00
Dmitry Stogov
050d7e38ad
Cleanup (1-st round)
2014-04-15 15:40:40 +04: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
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
3167b49ce9
Allocate HashTable->arData and HashTable->arHash at once
2014-04-07 18:22:03 +04:00
Dmitry Stogov
3485b11499
"incremental" hash bucket initialization
2014-04-07 13:31:44 +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
d8099d0468
Changed data layout to allow more efficient operations
2014-04-02 14:34:44 +04:00
Dmitry Stogov
60961bba3d
Avoid useless memset()
2014-04-01 23:56:45 +04:00
Dmitry Stogov
042c937f69
Use STR_COPY() instead of STR_DUP() where possible
2014-04-01 17:10:15 +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
Anatol Belski
9d4001f1c8
fix C89 compat
2014-03-22 10:44:01 +01:00
Nikita Popov
f331ed1414
Revert "Add helper function for updating bucket contents"
...
Reverting this for now, because it would require further changes
thanks to the zend signals tsrms-but-only-sometimes awesomeness.
2014-03-21 01:32:49 +01:00
Nikita Popov
4e7e301dda
Rename+move zend_hash_apply_deleter and reuse it
...
The interruption handling was normalized to wrap the entire deletion
operation (instead of leaving out the destructor call and/or the
deallocation) per the recommendation of somebody (don't remember who)
familiar with zend signals.
There is an always-inlined variant of the function for use in
the main deletion function, to ensure there is no performance
impact.
2014-03-21 00:14:52 +01:00
Nikita Popov
4efa58dd59
Make zend_hash_apply_deleter() void, to allow reuse
...
Also remove lies in the comment above the function. apply_deleter
is not safe against modification, if the modification involves
removing the next bucket.
Also modified the implementation of zend_hash_graceful_destroy()
to be fully graceful (the reverse variant already was).
2014-03-21 00:14:51 +01:00
Nikita Popov
c3a317117a
Add helper function for updating bucket contents
2014-03-21 00:14:46 +01:00
Nikita Popov
994fcfcff9
Remove unnecessary check
...
In case of an update the key already existed, so the next free
element can not change.
2014-03-20 22:58:10 +01:00
Dmitry Stogov
62c448ab8b
Fixed serialize/unserialize problems
2014-03-17 17:23:27 +04:00
Dmitry Stogov
51494f252f
Don't include trailing zero into hash caclculation
2014-03-14 15:35:57 +04:00
Dmitry Stogov
3e4c22b499
Fixed possible HashTable modification in its destructor
2014-03-06 16:53:13 +04:00
Dmitry Stogov
e0f6bae56b
Passing symbol_table into user error handlers
2014-03-04 14:17:17 +04:00
Xinchen Hui
a52659bc25
zend_hash_del didn't check the PACKED flag
2014-02-19 19:27:42 +08:00
Dmitry Stogov
5de7115679
Use better data structures (incomplete; able to run bench.php)
2014-02-18 16:27:38 +04:00
Dmitry Stogov
be82a07776
Use better data structures (incomplete)
2014-02-12 18:08:11 +04:00
Dmitry Stogov
f4cfaf36e2
Use better data structures (incomplete)
2014-02-10 10:04:30 +04:00