Changeset: e148ff76270c for MonetDB
URL: https://dev.monetdb.org/hg/MonetDB/rev/e148ff76270c
Modified Files:
        clients/Tests/exports.stable.out
        gdk/gdk.h
        gdk/gdk_private.h
        gdk/gdk_utils.c
        sql/backends/monet5/rel_bin.c
        sql/backends/monet5/sql_gencode.c
        sql/backends/monet5/sql_scenario.c
        sql/backends/monet5/sql_statement.c
Branch: default
Log Message:

Hide implementation details of the allocator type.


diffs (truncated from 1669 to 300 lines):

diff --git a/clients/Tests/exports.stable.out b/clients/Tests/exports.stable.out
--- a/clients/Tests/exports.stable.out
+++ b/clients/Tests/exports.stable.out
@@ -569,6 +569,7 @@ const ptr ptr_nil;
 void *sa_alloc(allocator *sa, size_t sz);
 allocator *sa_create(allocator *pa);
 void sa_destroy(allocator *sa);
+exception_buffer *sa_get_eb(allocator *sa) __attribute__((__pure__));
 void *sa_realloc(allocator *sa, void *ptr, size_t sz, size_t osz);
 allocator *sa_reset(allocator *sa);
 size_t sa_size(allocator *sa);
diff --git a/gdk/gdk.h b/gdk/gdk.h
--- a/gdk/gdk.h
+++ b/gdk/gdk.h
@@ -2525,29 +2525,20 @@ gdk_export exception_buffer *eb_init(exc
 #endif
 gdk_export _Noreturn void eb_error(exception_buffer *eb, const char *msg, int 
val);
 
-typedef struct allocator {
-       struct allocator *pa;
-       size_t size;
-       size_t nr;
-       char **blks;
-       size_t used;    /* memory used in last block */
-       size_t usedmem; /* used memory */
-       void *freelist; /* list of freed blocks */
-       exception_buffer eb;
-       char *first_block; /* the special block in blks that also holds our 
bookkeeping */
-       size_t reserved;  /* space in first_block is reserved up to here  */
-} allocator;
+typedef struct allocator allocator;
 
-gdk_export allocator *sa_create( allocator *pa );
-gdk_export allocator *sa_reset( allocator *sa );
-gdk_export void *sa_alloc( allocator *sa,  size_t sz );
-gdk_export void *sa_zalloc( allocator *sa,  size_t sz );
-gdk_export void *sa_realloc( allocator *sa,  void *ptr, size_t sz, size_t osz 
);
-gdk_export void sa_destroy( allocator *sa );
-gdk_export char *sa_strndup( allocator *sa, const char *s, size_t l);
-gdk_export char *sa_strdup( allocator *sa, const char *s);
-gdk_export char *sa_strconcat( allocator *sa, const char *s1, const char *s2);
-gdk_export size_t sa_size( allocator *sa );
+gdk_export allocator *sa_create(allocator *pa );
+gdk_export allocator *sa_reset(allocator *sa );
+gdk_export void *sa_alloc(allocator *sa,  size_t sz );
+gdk_export void *sa_zalloc(allocator *sa,  size_t sz );
+gdk_export void *sa_realloc(allocator *sa,  void *ptr, size_t sz, size_t osz );
+gdk_export void sa_destroy(allocator *sa );
+gdk_export char *sa_strndup(allocator *sa, const char *s, size_t l);
+gdk_export char *sa_strdup(allocator *sa, const char *s);
+gdk_export char *sa_strconcat(allocator *sa, const char *s1, const char *s2);
+gdk_export size_t sa_size(allocator *sa );
+gdk_export exception_buffer *sa_get_eb(allocator *sa)
+       __attribute__((__pure__));
 
 #if !defined(NDEBUG) && !defined(__COVERITY__) && defined(__GNUC__)
 #define sa_alloc(sa, sz)                                       \
diff --git a/gdk/gdk_private.h b/gdk/gdk_private.h
--- a/gdk/gdk_private.h
+++ b/gdk/gdk_private.h
@@ -39,6 +39,19 @@ enum range_comp_t {
        range_inside,           /* search range inside bat range */
 };
 
+struct allocator {
+       struct allocator *pa;
+       size_t size;
+       size_t nr;
+       char **blks;
+       size_t used;    /* memory used in last block */
+       size_t usedmem; /* used memory */
+       void *freelist; /* list of freed blocks */
+       exception_buffer eb;
+       char *first_block; /* the special block in blks that also holds our 
bookkeeping */
+       size_t reserved;  /* space in first_block is reserved up to here  */
+};
+
 bool ATOMisdescendant(int id, int parentid)
        __attribute__((__visibility__("hidden")));
 int ATOMunknown_find(const char *nme)
diff --git a/gdk/gdk_utils.c b/gdk/gdk_utils.c
--- a/gdk/gdk_utils.c
+++ b/gdk/gdk_utils.c
@@ -2360,3 +2360,9 @@ sa_size(allocator *sa)
 {
        return sa->usedmem;
 }
+
+exception_buffer *
+sa_get_eb(allocator *sa)
+{
+       return &sa->eb;
+}
diff --git a/sql/backends/monet5/rel_bin.c b/sql/backends/monet5/rel_bin.c
--- a/sql/backends/monet5/rel_bin.c
+++ b/sql/backends/monet5/rel_bin.c
@@ -56,8 +56,8 @@ add_to_rowcount_accumulator(backend *be,
 
        InstrPtr q = newStmt(be->mb, calcRef, plusRef);
        if (q == NULL) {
-               if (be->mvc->sa->eb.enabled)
-                       eb_error(&be->mvc->sa->eb, be->mvc->errstr[0] ? 
be->mvc->errstr : be->mb->errors ? be->mb->errors : *GDKerrbuf ? GDKerrbuf : 
"out of memory", 1000);
+               if (sa_get_eb(be->mvc->sa)->enabled)
+                       eb_error(sa_get_eb(be->mvc->sa), be->mvc->errstr[0] ? 
be->mvc->errstr : be->mb->errors ? be->mb->errors : *GDKerrbuf ? GDKerrbuf : 
"out of memory", 1000);
                return -1;
        }
        q = pushArgument(be->mb, q, be->rowcount);
@@ -1311,8 +1311,8 @@ emit_loadcolumn(backend *be, stmt *oncli
                pushInstruction(mb, p);
        }
        if (p == NULL || mb->errors) {
-               if (be->mvc->sa->eb.enabled)
-                       eb_error(&be->mvc->sa->eb, be->mvc->errstr[0] ? 
be->mvc->errstr : mb->errors ? mb->errors : *GDKerrbuf ? GDKerrbuf : "out of 
memory", 1000);
+               if (sa_get_eb(be->mvc->sa)->enabled)
+                       eb_error(sa_get_eb(be->mvc->sa), be->mvc->errstr[0] ? 
be->mvc->errstr : mb->errors ? mb->errors : *GDKerrbuf ? GDKerrbuf : "out of 
memory", 1000);
                return sql_error(be->mvc, 10, SQLSTATE(HY013) MAL_MALLOC_FAIL);
        }
 
@@ -2614,8 +2614,8 @@ rel2bin_table(backend *be, sql_rel *rel,
                                                narg += list_length(ops);
                                        InstrPtr q = newStmtArgs(be->mb, 
sqlRef, "unionfunc", narg);
                                        if (q == NULL) {
-                                               if (be->mvc->sa->eb.enabled)
-                                                       
eb_error(&be->mvc->sa->eb, be->mvc->errstr[0] ? be->mvc->errstr : 
be->mb->errors ? be->mb->errors : *GDKerrbuf ? GDKerrbuf : "out of memory", 
1000);
+                                               if 
(sa_get_eb(be->mvc->sa)->enabled)
+                                                       
eb_error(sa_get_eb(be->mvc->sa), be->mvc->errstr[0] ? be->mvc->errstr : 
be->mb->errors ? be->mb->errors : *GDKerrbuf ? GDKerrbuf : "out of memory", 
1000);
                                                return sql_error(sql, 10, 
SQLSTATE(HY013) MAL_MALLOC_FAIL);
                                        }
                                        /* Generate output rowid column and 
output of function f */
@@ -7744,8 +7744,8 @@ rel_bin(backend *be, sql_rel *rel)
                sql->type = sqltype;  /* reset */
 
        if (be->mb->errors) {
-               if (be->mvc->sa->eb.enabled)
-                       eb_error(&be->mvc->sa->eb, be->mvc->errstr[0] ? 
be->mvc->errstr : be->mb->errors, 1000);
+               if (sa_get_eb(be->mvc->sa)->enabled)
+                       eb_error(sa_get_eb(be->mvc->sa), be->mvc->errstr[0] ? 
be->mvc->errstr : be->mb->errors, 1000);
                return NULL;
        }
        return s;
diff --git a/sql/backends/monet5/sql_gencode.c 
b/sql/backends/monet5/sql_gencode.c
--- a/sql/backends/monet5/sql_gencode.c
+++ b/sql/backends/monet5/sql_gencode.c
@@ -275,7 +275,7 @@ static int
        backend *be = (backend *) c->sqlcontext;
        Symbol symbackup = c->curprg;
        backend bebackup = *be;         /* backup current backend */
-       exception_buffer ebsave = m->sa->eb;
+       exception_buffer ebsave = *sa_get_eb(m->sa);
 
        if (strlen(mod) >= IDLENGTH) {
                (void) sql_error(m, 10, SQLSTATE(42000) "Module name '%s' too 
large for the backend", mod);
@@ -296,8 +296,8 @@ static int
        if (c->curprg == NULL) {
                sql_error(m, 10, SQLSTATE(HY013) MAL_MALLOC_FAIL);
                goto bailout;
-       } else if (eb_savepoint(&m->sa->eb)) {
-               sql_error(m, 10, "%s", m->sa->eb.msg);
+       } else if (eb_savepoint(sa_get_eb(m->sa))) {
+               sql_error(m, 10, "%s", sa_get_eb(m->sa)->msg);
                freeSymbol(c->curprg);
                goto bailout;
        } else if (_create_relational_function_body(m, nr, call, rel_ops, 
inline_func) < 0) {
@@ -305,14 +305,14 @@ static int
        }
        *be = bebackup;
        c->curprg = symbackup;
-       m->sa->eb = ebsave;
+       *sa_get_eb(m->sa) = ebsave;
        return 0;
   bailout:
        *be = bebackup;
        c->curprg = symbackup;
-       m->sa->eb = ebsave;
-       if (m->sa->eb.enabled)
-               eb_error(&m->sa->eb, m->errstr[0] ? m->errstr : be->mb->errors 
? be->mb->errors : *GDKerrbuf ? GDKerrbuf : "out of memory", 1000);
+       *sa_get_eb(m->sa) = ebsave;
+       if (sa_get_eb(m->sa)->enabled)
+               eb_error(sa_get_eb(m->sa), m->errstr[0] ? m->errstr : 
be->mb->errors ? be->mb->errors : *GDKerrbuf ? GDKerrbuf : "out of memory", 
1000);
        return -1;
 }
 
@@ -925,7 +925,7 @@ static int
        Client c = MCgetClient(m->clientid);
        backend *be = (backend *) c->sqlcontext;
        Symbol symbackup = c->curprg;
-       exception_buffer ebsave = m->sa->eb;
+       exception_buffer ebsave = *sa_get_eb(m->sa);
 
        if (list_empty(prp->value.pval)) {
                sql_error(m, 003, SQLSTATE(42000) "Missing REMOTE property on 
the input relation");
@@ -953,8 +953,8 @@ static int
        if (c->curprg == NULL) {
                sql_error(m, 10, SQLSTATE(HY013) MAL_MALLOC_FAIL);
                goto bailout;
-       } else if (eb_savepoint(&m->sa->eb)) {
-               sql_error(m, 10, "%s", m->sa->eb.msg);
+       } else if (eb_savepoint(sa_get_eb(m->sa))) {
+               sql_error(m, 10, "%s", sa_get_eb(m->sa)->msg);
                freeSymbol(c->curprg);
                goto bailout;
        } else if (_create_relational_remote_body(m, mod, name, rel, rel2, 
call, prp) < 0) {
@@ -962,14 +962,14 @@ static int
        }
        sa_reset(m->ta);
        c->curprg = symbackup;
-       m->sa->eb = ebsave;
+       *sa_get_eb(m->sa) = ebsave;
        return 0;
   bailout:
        sa_reset(m->ta);
        c->curprg = symbackup;
-       m->sa->eb = ebsave;
-       if (m->sa->eb.enabled)
-               eb_error(&m->sa->eb, m->errstr[0] ? m->errstr : be->mb->errors 
? be->mb->errors : *GDKerrbuf ? GDKerrbuf : "out of memory", 1000);
+       *sa_get_eb(m->sa) = ebsave;
+       if (sa_get_eb(m->sa)->enabled)
+               eb_error(sa_get_eb(m->sa), m->errstr[0] ? m->errstr : 
be->mb->errors ? be->mb->errors : *GDKerrbuf ? GDKerrbuf : "out of memory", 
1000);
        return -1;
 }
 
@@ -1077,20 +1077,20 @@ backend_dumpstmt(backend *be, MalBlkPtr 
        exception_buffer ebsave = {.enabled = 0};
 
        if (m->sa) {
-               ebsave = m->sa->eb;
-               if (eb_savepoint(&m->sa->eb)) {
-                       (void) sql_error(m, 10, "%s", m->sa->eb.msg);
+               ebsave = *sa_get_eb(m->sa);
+               if (eb_savepoint(sa_get_eb(m->sa))) {
+                       (void) sql_error(m, 10, "%s", sa_get_eb(m->sa)->msg);
                        goto bailout;
                }
        }
        if (backend_dumpstmt_body(be, mb, r, top, add_end, query) < 0)
                goto bailout;
        if (m->sa)
-               m->sa->eb = ebsave;
+               *sa_get_eb(m->sa) = ebsave;
        return 0;
   bailout:
        if (m->sa)
-               m->sa->eb = ebsave;
+               *sa_get_eb(m->sa) = ebsave;
        return -1;
 }
 
@@ -1171,7 +1171,7 @@ backend_dumpproc(backend *be, Client c, 
        mvc *m = be->mvc;
        Symbol symbackup = c->curprg;
        backend bebackup = *be;         /* backup current backend */
-       exception_buffer ebsave = m->sa->eb;
+       exception_buffer ebsave = *sa_get_eb(m->sa);
        int argc = 1;
        const char *sql_private_module = putName(sql_private_module_name);
 
@@ -1184,8 +1184,8 @@ backend_dumpproc(backend *be, Client c, 
        if (c->curprg == NULL) {
                sql_error(m, 10, SQLSTATE(HY013) MAL_MALLOC_FAIL);
                goto bailout;
-       } else if (eb_savepoint(&m->sa->eb)) {
-               sql_error(m, 10, "%s", m->sa->eb.msg);
+       } else if (eb_savepoint(sa_get_eb(m->sa))) {
+               sql_error(m, 10, "%s", sa_get_eb(m->sa)->msg);
                freeSymbol(c->curprg);
                goto bailout;
        } else if (backend_dumpproc_body(be, c, r) < 0) {
@@ -1193,12 +1193,12 @@ backend_dumpproc(backend *be, Client c, 
        }
        *be = bebackup;
        c->curprg = symbackup;
-       m->sa->eb = ebsave;
+       *sa_get_eb(m->sa) = ebsave;
        return 0;
   bailout:
        *be = bebackup;
        c->curprg = symbackup;
-       m->sa->eb = ebsave;
+       *sa_get_eb(m->sa) = ebsave;
        return -1;
 }
 
@@ -1637,7 +1637,7 @@ backend_create_sql_func(backend *be, sql
        const char *sql_shared_module = putName(sql_shared_module_name);
        const char *sql_private_module = putName(sql_private_module_name);
        const char *modname = prepare?sql_private_module:sql_shared_module;
-       exception_buffer ebsave = m->sa->eb;
+       exception_buffer ebsave = *sa_get_eb(m->sa);
        char befname[IDLENGTH];
        int nargs;
        char *fimp;
@@ -1657,8 +1657,8 @@ backend_create_sql_func(backend *be, sql
        } else if (c->curprg == NULL) {
                sql_error(m, 10, SQLSTATE(HY013) MAL_MALLOC_FAIL);
                goto bailout;
-       } else if (eb_savepoint(&m->sa->eb)) {
-               sql_error(m, 10, "%s", m->sa->eb.msg);
+       } else if (eb_savepoint(sa_get_eb(m->sa))) {
+               sql_error(m, 10, "%s", sa_get_eb(m->sa)->msg);
                freeSymbol(c->curprg);
_______________________________________________
checkin-list mailing list -- [email protected]
To unsubscribe send an email to [email protected]

Reply via email to