Changeset: af12610859ae for MonetDB
URL: https://dev.monetdb.org/hg/MonetDB/rev/af12610859ae
Modified Files:
        clients/Tests/exports.stable.out
        gdk/gdk.h
        gdk/gdk_aggr.c
        gdk/gdk_bat.c
        gdk/gdk_batop.c
        gdk/gdk_calc_convert.c
        gdk/gdk_string.c
        gdk/gdk_utils.c
        gdk/gdk_value.c
        monetdb5/extras/rapi/rapi.c
        monetdb5/mal/mal.h
        monetdb5/mal/mal_builder.c
        monetdb5/mal/mal_client.c
        monetdb5/mal/mal_client.h
        monetdb5/mal/mal_function.c
        monetdb5/mal/mal_instruction.c
        monetdb5/mal/mal_instruction.h
        monetdb5/mal/mal_interpreter.c
        monetdb5/mal/mal_parser.c
        monetdb5/mal/mal_profiler.c
        monetdb5/mal/mal_session.c
        monetdb5/mal/mal_stack.c
        monetdb5/modules/mal/calc.c
        monetdb5/modules/mal/iterator.c
        monetdb5/modules/mal/mal_mapi.c
        monetdb5/modules/mal/manifold.c
        monetdb5/modules/mal/remote.c
        monetdb5/optimizer/opt_aliases.c
        monetdb5/optimizer/opt_coercion.c
        monetdb5/optimizer/opt_commonTerms.c
        monetdb5/optimizer/opt_constants.c
        monetdb5/optimizer/opt_costModel.c
        monetdb5/optimizer/opt_dataflow.c
        monetdb5/optimizer/opt_deadcode.c
        monetdb5/optimizer/opt_dict.c
        monetdb5/optimizer/opt_emptybind.c
        monetdb5/optimizer/opt_evaluate.c
        monetdb5/optimizer/opt_for.c
        monetdb5/optimizer/opt_garbageCollector.c
        monetdb5/optimizer/opt_generator.c
        monetdb5/optimizer/opt_inline.c
        monetdb5/optimizer/opt_inline.h
        monetdb5/optimizer/opt_matpack.c
        monetdb5/optimizer/opt_mergetable.c
        monetdb5/optimizer/opt_mitosis.c
        monetdb5/optimizer/opt_multiplex.c
        monetdb5/optimizer/opt_prelude.c
        monetdb5/optimizer/opt_prelude.h
        monetdb5/optimizer/opt_profiler.c
        monetdb5/optimizer/opt_projectionpath.c
        monetdb5/optimizer/opt_pushselect.c
        monetdb5/optimizer/opt_querylog.c
        monetdb5/optimizer/opt_remap.c
        monetdb5/optimizer/opt_remoteQueries.c
        monetdb5/optimizer/opt_reorder.c
        monetdb5/optimizer/opt_support.h
        sql/backends/monet5/UDF/capi/capi.c
        sql/backends/monet5/UDF/pyapi3/pyapi3.c
        sql/backends/monet5/generator/generator.c
        sql/backends/monet5/rel_bin.c
        sql/backends/monet5/sql.c
        sql/backends/monet5/sql_gencode.c
        sql/backends/monet5/sql_rank.c
        sql/backends/monet5/sql_scenario.c
        sql/backends/monet5/sql_statement.c
        sql/backends/monet5/sql_statement.h
        sql/common/sql_hash.c
        sql/common/sql_list.c
        sql/include/sql_hash.h
        sql/include/sql_list.h
        sql/include/sql_mem.h
        sql/scripts/23_skyserver.sql
        sql/server/rel_basetable.c
        sql/server/rel_optimizer.c
        sql/server/sql_parser.y
        sql/server/sql_var.c
        sql/storage/bat/bat_storage.c
        sql/storage/bat/bat_utils.c
        sql/storage/sql_catalog.c
        sql/storage/store.c
        sql/test/prepare/Tests/sqlancer_prepare.sql
        sql/test/prepare/Tests/sqlancer_prepare.stable.err
        sql/test/prepare/Tests/sqlancer_prepare.stable.err.int128
Branch: resource_management
Log Message:

create new branch for resource_management improvements

first steps:
        use allocators in mal interpreter (therefor also the VAL* functions can 
now optionaly have an allocator as first argument)
        use temp - allocators instead of temp GDKmalloc's in optimizers


diffs (truncated from 4354 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
@@ -416,11 +416,11 @@ gdk_return TMsubcommit_list(bat *restric
 void VALclear(ValPtr v);
 int VALcmp(const ValRecord *p, const ValRecord *q);
 void *VALconvert(int typ, ValPtr t);
-ValPtr VALcopy(ValPtr dst, const ValRecord *src);
+ValPtr VALcopy(allocator *va, ValPtr dst, const ValRecord *src);
 void VALempty(ValPtr v);
 char *VALformat(const ValRecord *res) __attribute__((__warn_unused_result__));
 void *VALget(ValPtr v);
-ValPtr VALinit(ValPtr d, int tpe, const void *s);
+ValPtr VALinit(allocator *va, ValPtr d, int tpe, const void *s);
 bool VALisnil(const ValRecord *v);
 ValPtr VALset(ValPtr v, int t, void *p);
 gdk_return VARcalcabsolute(ValPtr ret, const ValRecord *v);
@@ -580,8 +580,10 @@ const ptr ptr_nil;
 struct dirent *readdir(DIR *dir);
 void rewinddir(DIR *dir);
 void *sa_alloc(allocator *sa, size_t sz);
+void sa_close(allocator *sa);
 allocator *sa_create(allocator *pa);
 void sa_destroy(allocator *sa);
+void sa_open(allocator *sa);
 void *sa_realloc(allocator *sa, void *ptr, size_t sz, size_t osz);
 allocator *sa_reset(allocator *sa);
 size_t sa_size(allocator *sa);
@@ -880,8 +882,8 @@ char *concatErrors(char *err1, const cha
 const char *connectRef;
 const char *containsRef;
 str convertConstant(malType type, ValPtr vr);
-InstrPtr copyInstruction(const InstrRecord *p);
-InstrPtr copyInstructionArgs(const InstrRecord *p, int args);
+InstrPtr copyInstruction(MalBlkPtr mb, const InstrRecord *p);
+InstrPtr copyInstructionArgs(MalBlkPtr mb, const InstrRecord *p, int args);
 MalBlkPtr copyMalBlk(MalBlkPtr mb);
 const char *copy_fromRef;
 const char *corrRef;
@@ -1085,6 +1087,7 @@ const char *minjarowinklerRef;
 const char *minusRef;
 const char *mirrorRef;
 const char *mitosisRef;
+const char *mkeyRef;
 const char *mmathRef;
 const char *modRef;
 char monet_characteristics[4096];
diff --git a/gdk/gdk.h b/gdk/gdk.h
--- a/gdk/gdk.h
+++ b/gdk/gdk.h
@@ -572,6 +572,128 @@ typedef struct Strimps Strimps;
 typedef struct RTree RTree;
 #endif
 
+
+#include <setjmp.h>
+
+typedef struct exception_buffer {
+#ifdef HAVE_SIGLONGJMP
+       sigjmp_buf state;
+#else
+       jmp_buf state;
+#endif
+       int code;
+       char *msg;
+       int enabled;
+} exception_buffer;
+
+gdk_export exception_buffer *eb_init(exception_buffer *eb);
+
+/* != 0 on when we return to the savepoint */
+#ifdef HAVE_SIGLONGJMP
+#define eb_savepoint(eb) ((eb)->enabled = 1, sigsetjmp((eb)->state, 0))
+#else
+#define eb_savepoint(eb) ((eb)->enabled = 1, setjmp((eb)->state))
+#endif
+gdk_export _Noreturn void eb_error(exception_buffer *eb, 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 */
+
+       size_t tmp_used; /* keeps total of tmp allocated bytes */
+       bool tmp_active; /* currently only one level of temp usage */
+       exception_buffer eb;
+} 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 void sa_open( allocator *sa );  /* open new frame of tempory 
allocations */
+gdk_export void sa_close( allocator *sa ); /* close temporary frame, reset to 
old state */
+
+#define ma_create(pa)          sa_create(pa)
+#define ma_destroy(ma)         sa_destroy(ma)
+#define ma_alloc(ma, sz)       (void*)sa_alloc(ma, sz)
+#define ma_zalloc(ma, sz)      (void*)sa_zalloc(ma, sz)
+#define ma_open(ma)            sa_open(ma)
+#define ma_close(ma)           sa_close(ma)
+
+#define MA_NEW( sa, type )                             ((type*)sa_alloc( sa, 
sizeof(type)))
+#define MA_ZNEW( sa, type )                            ((type*)sa_zalloc( sa, 
sizeof(type)))
+#define MA_NEW_ARRAY( sa, type, size )                 (type*)sa_alloc( sa, 
((size)*sizeof(type)))
+#define MA_ZNEW_ARRAY( sa, type, size )                        
(type*)sa_zalloc( sa, ((size)*sizeof(type)))
+#define MA_RENEW_ARRAY( sa, type, ptr, sz, osz )       (type*)sa_realloc( sa, 
ptr, ((sz)*sizeof(type)), ((osz)*sizeof(type)))
+#define MA_STRDUP( sa, s)                              sa_strdup(sa, s)
+
+
+#if !defined(NDEBUG) && !defined(__COVERITY__) && defined(__GNUC__)
+#define sa_alloc(sa, sz)                                       \
+       ({                                                      \
+               allocator *_sa = (sa);                  \
+               size_t _sz = (sz);                              \
+               void *_res = sa_alloc(_sa, _sz);                \
+               TRC_DEBUG(ALLOC,                                \
+                               "sa_alloc(%p,%zu) -> %p\n",     \
+                               _sa, _sz, _res);        \
+               _res;                                           \
+       })
+#define sa_zalloc(sa, sz)                                      \
+       ({                                                      \
+               allocator *_sa = (sa);                  \
+               size_t _sz = (sz);                              \
+               void *_res = sa_zalloc(_sa, _sz);               \
+               TRC_DEBUG(ALLOC,                                \
+                               "sa_zalloc(%p,%zu) -> %p\n",    \
+                               _sa, _sz, _res);        \
+               _res;                                           \
+       })
+#define sa_realloc(sa, ptr, sz, osz)                                   \
+       ({                                                              \
+               allocator *_sa = (sa);                          \
+               void *_ptr = (ptr);                                     \
+               size_t _sz = (sz);                                      \
+               size_t _osz = (osz);                                    \
+               void *_res = sa_realloc(_sa, _ptr, _sz, _osz);          \
+               TRC_DEBUG(ALLOC,                                \
+                               "sa_realloc(%p,%p,%zu,%zu) -> %p\n",    \
+                               _sa, _ptr, _sz, _osz, _res);            \
+               _res;                                                   \
+       })
+#define sa_strdup(sa, s)                                       \
+       ({                                                      \
+               allocator *_sa = (sa);                  \
+               const char *_s = (s);                           \
+               char *_res = sa_strdup(_sa, _s);                \
+               TRC_DEBUG(ALLOC,                                \
+                               "sa_strdup(%p,len=%zu) -> %p\n",        \
+                               _sa, strlen(_s), _res); \
+               _res;                                           \
+       })
+#define sa_strndup(sa, s, l)                                   \
+       ({                                                      \
+               allocator *_sa = (sa);                  \
+               const char *_s = (s);                           \
+               size_t _l = (l);                                \
+               char *_res = sa_strndup(_sa, _s, _l);           \
+               TRC_DEBUG(ALLOC,                                \
+                               "sa_strndup(%p,len=%zu) -> %p\n",       \
+                               _sa, _l, _res);         \
+               _res;                                           \
+       })
+#endif
+
 /*
  * @+ Binary Association Tables
  * Having gone to the previous preliminary definitions, we will now
@@ -646,15 +768,17 @@ typedef struct {
        } val;
        size_t len;
        short vtype;
-       bool bat;
+       unsigned short bat:1,
+               allocated:1;
+
 } *ValPtr, ValRecord;
 
 /* interface definitions */
 gdk_export void *VALconvert(int typ, ValPtr t);
 gdk_export char *VALformat(const ValRecord *res)
        __attribute__((__warn_unused_result__));
-gdk_export ValPtr VALcopy(ValPtr dst, const ValRecord *src);
-gdk_export ValPtr VALinit(ValPtr d, int tpe, const void *s);
+gdk_export ValPtr VALcopy(allocator *va, ValPtr dst, const ValRecord *src);
+gdk_export ValPtr VALinit(allocator *va, ValPtr d, int tpe, const void *s);
 gdk_export void VALempty(ValPtr v);
 gdk_export void VALclear(ValPtr v);
 gdk_export ValPtr VALset(ValPtr v, int t, void *p);
@@ -2496,106 +2620,4 @@ gdk_export gdk_return gdk_add_callback(c
                *argv[], int interval);
 gdk_export gdk_return gdk_remove_callback(char *, gdk_callback_func *f);
 
-
-#include <setjmp.h>
-
-typedef struct exception_buffer {
-#ifdef HAVE_SIGLONGJMP
-       sigjmp_buf state;
-#else
-       jmp_buf state;
-#endif
-       int code;
-       char *msg;
-       int enabled;
-} exception_buffer;
-
-gdk_export exception_buffer *eb_init(exception_buffer *eb);
-
-/* != 0 on when we return to the savepoint */
-#ifdef HAVE_SIGLONGJMP
-#define eb_savepoint(eb) ((eb)->enabled = 1, sigsetjmp((eb)->state, 0))
-#else
-#define eb_savepoint(eb) ((eb)->enabled = 1, setjmp((eb)->state))
-#endif
-gdk_export _Noreturn void eb_error(exception_buffer *eb, 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;
-} 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 );
-
-#if !defined(NDEBUG) && !defined(__COVERITY__) && defined(__GNUC__)
-#define sa_alloc(sa, sz)                                       \
-       ({                                                      \
-               allocator *_sa = (sa);                          \
-               size_t _sz = (sz);                              \
-               void *_res = sa_alloc(_sa, _sz);                \
-               TRC_DEBUG(ALLOC,                                \
-                               "sa_alloc(%p,%zu) -> %p\n",     \
-                               _sa, _sz, _res);                \
-               _res;                                           \
-       })
-#define sa_zalloc(sa, sz)                                      \
-       ({                                                      \
-               allocator *_sa = (sa);                          \
-               size_t _sz = (sz);                              \
-               void *_res = sa_zalloc(_sa, _sz);               \
-               TRC_DEBUG(ALLOC,                                \
-                               "sa_zalloc(%p,%zu) -> %p\n",    \
-                               _sa, _sz, _res);                \
-               _res;                                           \
-       })
-#define sa_realloc(sa, ptr, sz, osz)                                   \
-       ({                                                              \
-               allocator *_sa = (sa);                                  \
-               void *_ptr = (ptr);                                     \
-               size_t _sz = (sz);                                      \
-               size_t _osz = (osz);                                    \
-               void *_res = sa_realloc(_sa, _ptr, _sz, _osz);          \
-               TRC_DEBUG(ALLOC,                                        \
-                               "sa_realloc(%p,%p,%zu,%zu) -> %p\n",    \
-                               _sa, _ptr, _sz, _osz, _res);            \
-               _res;                                                   \
-       })
-#define sa_strdup(sa, s)                                               \
-       ({                                                              \
-               allocator *_sa = (sa);                                  \
-               const char *_s = (s);                                   \
-               char *_res = sa_strdup(_sa, _s);                        \
-               TRC_DEBUG(ALLOC,                                        \
-                               "sa_strdup(%p,len=%zu) -> %p\n",        \
-                               _sa, strlen(_s), _res);                 \
-               _res;                                                   \
-       })
-#define sa_strndup(sa, s, l)                                           \
-       ({                                                              \
-               allocator *_sa = (sa);                                  \
-               const char *_s = (s);                                   \
-               size_t _l = (l);                                        \
-               char *_res = sa_strndup(_sa, _s, _l);                   \
-               TRC_DEBUG(ALLOC,                                        \
_______________________________________________
checkin-list mailing list -- checkin-list@monetdb.org
To unsubscribe send an email to checkin-list-le...@monetdb.org

Reply via email to