Changeset: d3089be71c6d for MonetDB
URL: https://dev.monetdb.org/hg/MonetDB/rev/d3089be71c6d
Modified Files:
        gdk/gdk.h
        gdk/gdk_utils.c
Branch: resource_management
Log Message:

align size based on sa_alloc when freeing objects


diffs (41 lines):

diff --git a/gdk/gdk.h b/gdk/gdk.h
--- a/gdk/gdk.h
+++ b/gdk/gdk.h
@@ -604,6 +604,7 @@ typedef struct allocator {
        size_t usedmem; /* used memory */
        size_t objects; /* number of objects */
        size_t inuse;   /* number of objects in use*/
+       size_t freelist_hits; /* number of object reuse*/
        void *freelist; /* list of freed objects */
        void *freelist_blks;    /* list of freed blks */
 
diff --git a/gdk/gdk_utils.c b/gdk/gdk_utils.c
--- a/gdk/gdk_utils.c
+++ b/gdk/gdk_utils.c
@@ -2170,6 +2170,7 @@ sa_use_freed_obj(allocator *pa, size_t s
                        } else {
                                pa->freelist = curr->n;
                        }
+                       pa->freelist_hits += 1;
                        return curr;
                } else {
                        prev = curr;
@@ -2235,6 +2236,7 @@ sa_create(allocator *pa)
        sa->used = 0;
        sa->objects = 0;
        sa->inuse = 0;
+       sa->freelist_hits = 0;
        sa->tmp_active = 0;
        sa->tmp_used = 0;
        return sa;
@@ -2424,7 +2426,10 @@ sa_close( allocator *sa )
 void
 sa_free(allocator *sa, void *obj, size_t sz)
 {
+       sz = round16(sz); // allign size as per sa_alloc
        if (sz < SA_BLOCK_SIZE) {
                sa_free_obj(sa, obj, sz);
+       } else {
+               sa_free_blk(sa, obj);
        }
 }
_______________________________________________
checkin-list mailing list -- checkin-list@monetdb.org
To unsubscribe send an email to checkin-list-le...@monetdb.org

Reply via email to