From c21d8462505710d80646b3bddf7ba3e23e5293cb Mon Sep 17 00:00:00 2001 From: dpdani Date: Sun, 29 Sep 2024 15:04:07 +0200 Subject: [PATCH] Meta->generation from PyObject* to void* --- src/cereggii/atomic_dict/atomic_dict.c | 4 ++-- src/cereggii/atomic_dict/blocks.c | 2 -- src/cereggii/atomic_dict/meta.c | 4 ++-- src/include/atomic_dict_internal.h | 2 +- 4 files changed, 5 insertions(+), 7 deletions(-) diff --git a/src/cereggii/atomic_dict/atomic_dict.c b/src/cereggii/atomic_dict/atomic_dict.c index f6f9fa41..65dfefbe 100644 --- a/src/cereggii/atomic_dict/atomic_dict.c +++ b/src/cereggii/atomic_dict/atomic_dict.c @@ -554,7 +554,7 @@ AtomicDict_Debug(AtomicDict *self) meta = (AtomicDict_Meta *) AtomicRef_Get(self->metadata); metadata = Py_BuildValue("{sOsOsOsOsOsOsOsOsOsOsOsOsOsOsO}", "log_size\0", Py_BuildValue("B", meta->log_size), - "generation\0", Py_BuildValue("O", meta->generation), + "generation\0", Py_BuildValue("n", (Py_ssize_t) meta->generation), "node_size\0", Py_BuildValue("B", meta->node_size), "distance_size\0", Py_BuildValue("B", meta->distance_size), "tag_size\0", Py_BuildValue("B", meta->tag_size), @@ -622,7 +622,7 @@ AtomicDict_Debug(AtomicDict *self) } } - block_info = Py_BuildValue("{sOsO}", + block_info = Py_BuildValue("{snsO}", "gen\0", block->generation, "entries\0", entries); Py_DECREF(entries); diff --git a/src/cereggii/atomic_dict/blocks.c b/src/cereggii/atomic_dict/blocks.c index 4dfee37c..58ea71bc 100644 --- a/src/cereggii/atomic_dict/blocks.c +++ b/src/cereggii/atomic_dict/blocks.c @@ -28,8 +28,6 @@ AtomicDictBlock_New(AtomicDict_Meta *meta) void AtomicDictBlock_dealloc(AtomicDict_Block *self) { - Py_CLEAR(self->generation); - AtomicDict_Entry entry; for (int i = 0; i < ATOMIC_DICT_ENTRIES_IN_BLOCK; ++i) { entry = self->entries[i]; diff --git a/src/cereggii/atomic_dict/meta.c b/src/cereggii/atomic_dict/meta.c index 46593e7a..f6c227db 100644 --- a/src/cereggii/atomic_dict/meta.c +++ b/src/cereggii/atomic_dict/meta.c @@ -18,7 +18,7 @@ AtomicDictMeta_New(uint8_t log_size) AtomicDict_NodeSizeInfo node_sizes = AtomicDict_NodeSizesTable[log_size]; - generation = PyObject_CallObject((PyObject *) &PyBaseObject_Type, NULL); + generation = PyMem_RawMalloc(1); if (generation == NULL) goto fail; @@ -251,7 +251,7 @@ AtomicDictMeta_dealloc(AtomicDict_Meta *self) PyMem_RawFree(self->blocks); } - Py_CLEAR(self->generation); + PyMem_RawFree(self->generation); Py_CLEAR(self->new_gen_metadata); Py_CLEAR(self->new_metadata_ready); Py_CLEAR(self->node_migration_done); diff --git a/src/include/atomic_dict_internal.h b/src/include/atomic_dict_internal.h index f3a092b0..2d9ac405 100644 --- a/src/include/atomic_dict_internal.h +++ b/src/include/atomic_dict_internal.h @@ -80,7 +80,7 @@ struct AtomicDict_Meta { uint8_t log_size; // = node index_size uint64_t size; - PyObject *generation; + void *generation; uint64_t *index;