franz1981 commented on a change in pull request #525: DISPATCH-1372 alloc_pool
intrusive linked list can be replaced by a linked stack
URL: https://github.com/apache/qpid-dispatch/pull/525#discussion_r297228983
##########
File path: src/alloc_pool.c
##########
@@ -44,20 +46,97 @@ DEQ_DECLARE(qd_alloc_type_t, qd_alloc_type_list_t);
#define PATTERN_BACK 0xbabecafe
struct qd_alloc_item_t {
- DEQ_LINKS(qd_alloc_item_t);
uint32_t sequence;
#ifdef QD_MEMORY_DEBUG
qd_alloc_type_desc_t *desc;
uint32_t header;
#endif
};
-DEQ_DECLARE(qd_alloc_item_t, qd_alloc_item_list_t);
+#define CHUNK_SIZE 128/sizeof(void*)
+struct qd_alloc_chunk_t {
+ qd_alloc_chunk_t *prev;
+ qd_alloc_item_t *items[CHUNK_SIZE];
+ qd_alloc_chunk_t *next;
+};
+
+struct qd_alloc_linked_stack_t {
+ //the base
+ qd_alloc_chunk_t *top_chunk;
+ uint32_t top; //qd_alloc_item* top_item =
top_chunk->items[top+1] <-> top > 0
Review comment:
> to avoid the padding in the middle of the struct you want to put top at
the end of the struct.
I haven't considered field padding, you're right!
In this case, considering that `base_chunk` is > 128 bytes I won't risk to
get a cache miss on each access?
----------------------------------------------------------------
This is an automated message from the Apache Git Service.
To respond to the message, please log on to GitHub and use the
URL above to go to the specific comment.
For queries about this service, please contact Infrastructure at:
[email protected]
With regards,
Apache Git Services
---------------------------------------------------------------------
To unsubscribe, e-mail: [email protected]
For additional commands, e-mail: [email protected]