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]