Changeset: a2b1a32d59fb for MonetDB URL: http://dev.monetdb.org/hg/MonetDB?cmd=changeset;node=a2b1a32d59fb Modified Files: clients/Tests/exports.stable.out gdk/gdk.h gdk/gdk_atoms.mx gdk/gdk_bat.c gdk/gdk_bat.h gdk/gdk_batop.mx gdk/gdk_bbp.mx gdk/gdk_delta.c gdk/gdk_heap.c gdk/gdk_logger.c gdk/gdk_private.h gdk/gdk_scanselect.mx gdk/gdk_scanselect_defs.mx gdk/gdk_search.mx gdk/gdk_storage.c gdk/gdk_utils.c gdk/gdk_value.c monetdb5/extras/crackers/crackers_joins.mx monetdb5/extras/crackers/crackers_select_ops.mx monetdb5/extras/crackers/crackers_sideways.mx monetdb5/extras/crackers/crackers_sortmerge.mx monetdb5/mal/mal_atom.c monetdb5/modules/kernel/group.mx monetdb5/modules/mal/mkey.c Branch: sciql Log Message:
Merge with default branch diffs (truncated from 2674 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 @@ -9,19 +9,19 @@ stdout of test 'exports` in directory '. int ALIGNsetH(BAT *b1, BAT *b2); int ALIGNsynced(BAT *b1, BAT *b2); int ATOMcmp(int id, const void *v_1, const void *v_2); -ptr ATOMdup(int id, ptr val); +ptr ATOMdup(int id, const void *val); bte ATOMelmshift(int sz); -int ATOMformat(int id, ptr val, char **buf); +int ATOMformat(int id, const void *val, char **buf); int ATOMindex(char *nme); -int ATOMlen(int id, ptr v); +int ATOMlen(int id, const void *v); str ATOMname(int id); ptr ATOMnil(int id); -int ATOMprint(int id, ptr val, stream *fd); +int ATOMprint(int id, const void *val, stream *fd); void ATOMproperty(char *nme, char *property, GDKfcn fcn, int val); size_t BATaccess(BAT *b, int what, int advice, int load); BAT *BATalpha(BAT *b); BAT *BATantijoin(BAT *l, BAT *r); -BAT *BATantiuselect_(BAT *b, ptr tl, ptr th, bit li, bit hi); +BAT *BATantiuselect_(BAT *b, const void *tl, const void *th, bit li, bit hi); BAT *BATappend(BAT *b, BAT *c, bit force); void BATassertProps(BAT *b); atomDesc BATatoms[]; @@ -93,7 +93,7 @@ BAT *BATcalcxor(BAT *b1, BAT *b2, int ac BAT *BATcalcxorcst(BAT *b, const ValRecord *v, int accum); BAT *BATclear(BAT *b); BAT *BATcommit(BAT *b); -BAT *BATconst(BAT *l, int tt, ptr val); +BAT *BATconst(BAT *l, int tt, const void *val); BAT *BATconvert(BAT *b, int tp, int abort_on_error); BAT *BATcopy(BAT *b, int ht, int tt, int writeable); BUN BATcount(BAT *b); @@ -150,14 +150,14 @@ int BATprintf(stream *f, BAT *b); BAT *BATrangejoin(BAT *l, BAT *rl, BAT *rh, bit li, bit hi); BAT *BATrangesplit(BAT *b, BUN n, int unary); BAT *BATreplace(BAT *b, BAT *n, bit force); -BAT *BATrestrict(BAT *b, ptr hl, ptr hh, ptr tl, ptr th); +BAT *BATrestrict(BAT *b, const void *hl, const void *hh, const void *tl, const void *th); BAT *BATrevert(BAT *b); BAT *BATroles(BAT *b, const char *hnme, const char *tnme); BAT *BATsample(BAT *b, BUN n); BAT *BATsave(BAT *b); BAT *BATsdiff(BAT *b, BAT *c); -BAT *BATselect(BAT *b, ptr tl, ptr th); -BAT *BATselect_(BAT *b, ptr tl, ptr th, bit li, bit hi); +BAT *BATselect(BAT *b, const void *tl, const void *th); +BAT *BATselect_(BAT *b, const void *tl, const void *th, bit li, bit hi); BAT *BATsemijoin(BAT *l, BAT *r); BAT *BATseqbase(BAT *b, oid o); BAT *BATset(BAT *b, int onoff); @@ -176,8 +176,8 @@ BAT *BATsunique(BAT *b); BAT *BATthetajoin(BAT *l, BAT *r, int mode, BUN estimate); int BATtopN(BAT *b, BUN topN); BAT *BATundo(BAT *b); -BAT *BATuselect(BAT *b, ptr tl, ptr th); -BAT *BATuselect_(BAT *b, ptr tl, ptr th, bit li, bit hi); +BAT *BATuselect(BAT *b, const void *tl, const void *th); +BAT *BATuselect_(BAT *b, const void *tl, const void *th, bit li, bit hi); BBPrec *BBP; int BBP_curstamp; void BBPclear(bat bid); @@ -207,16 +207,16 @@ void BBPshare(bat b); int BBPsize; int BBPsync(int cnt, bat *subcommit); void BBPunlock(const char *s); -BAT *BUNappend(BAT *b, ptr right, bit force); -BAT *BUNdel(BAT *b, ptr left, ptr right, bit force); -BAT *BUNdelHead(BAT *b, ptr left, bit force); +BAT *BUNappend(BAT *b, const void *right, bit force); +BAT *BUNdel(BAT *b, const void *left, const void *right, bit force); +BAT *BUNdelHead(BAT *b, const void *left, bit force); BUN BUNdelete(BAT *b, BUN p, bit force); -BAT *BUNfastins(BAT *b, ptr left, ptr right); -BUN BUNfnd(BAT *b, ptr left); -BAT *BUNinplace(BAT *b, BUN p, ptr left, ptr right, bit force); -BAT *BUNins(BAT *b, ptr left, ptr right, bit force); -BUN BUNlocate(BAT *b, ptr left, ptr right); -BAT *BUNreplace(BAT *b, ptr left, ptr right, bit force); +BAT *BUNfastins(BAT *b, const void *left, const void *right); +BUN BUNfnd(BAT *b, const void *left); +BAT *BUNinplace(BAT *b, BUN p, const void *left, const void *right, bit force); +BAT *BUNins(BAT *b, const void *left, const void *right, bit force); +BUN BUNlocate(BAT *b, const void *left, const void *right); +BAT *BUNreplace(BAT *b, const void *left, const void *right, bit force); size_t GDK_mem_bigsize; size_t GDK_mem_maxsize; int GDK_mem_pagebits; @@ -261,7 +261,7 @@ size_t GDKvm_heapsize(void); void *GDKzalloc(size_t size); void HASHdestroy(BAT *b); BUN HASHlist(Hash *h, BUN i); -BUN HASHprobe(Hash *h, ptr v); +BUN HASHprobe(Hash *h, const void *v); void HASHremove(BAT *b); void HEAP_free(Heap *heap, var_t block); void HEAP_initialize(Heap *heap, size_t nbytes, size_t nprivate, int alignment); @@ -299,30 +299,9 @@ int OIDfromStr(const char *src, int *len oid OIDnew(oid inc); int OIDtoStr(str *dst, int *len, const oid *src); void PROPdestroy(PROPrec *p); -BUN SORTfnd_bte(BAT *b, ptr v); -BUN SORTfnd_dbl(BAT *b, ptr v); -BUN SORTfnd_flt(BAT *b, ptr v); -BUN SORTfnd_int(BAT *b, ptr v); -BUN SORTfnd_lng(BAT *b, ptr v); -BUN SORTfnd_loc(BAT *b, ptr v); -BUN SORTfnd_sht(BAT *b, ptr v); -BUN SORTfnd_var(BAT *b, ptr v); -BUN SORTfndfirst_bte(BAT *b, ptr v); -BUN SORTfndfirst_dbl(BAT *b, ptr v); -BUN SORTfndfirst_flt(BAT *b, ptr v); -BUN SORTfndfirst_int(BAT *b, ptr v); -BUN SORTfndfirst_lng(BAT *b, ptr v); -BUN SORTfndfirst_loc(BAT *b, ptr v); -BUN SORTfndfirst_sht(BAT *b, ptr v); -BUN SORTfndfirst_var(BAT *b, ptr v); -BUN SORTfndlast_bte(BAT *b, ptr v); -BUN SORTfndlast_dbl(BAT *b, ptr v); -BUN SORTfndlast_flt(BAT *b, ptr v); -BUN SORTfndlast_int(BAT *b, ptr v); -BUN SORTfndlast_lng(BAT *b, ptr v); -BUN SORTfndlast_loc(BAT *b, ptr v); -BUN SORTfndlast_sht(BAT *b, ptr v); -BUN SORTfndlast_var(BAT *b, ptr v); +BUN SORTfnd(BAT *b, const void *v); +BUN SORTfndfirst(BAT *b, const void *v); +BUN SORTfndlast(BAT *b, const void *v); void *THRdata[16]; void THRdel(Thread t); Thread THRget(int tid); @@ -343,7 +322,7 @@ ValPtr VALcopy(ValPtr dst, ValPtr src); void VALempty(ValPtr v); int VALformat(char **buf, ValPtr res); void *VALget(ValPtr v); -ValPtr VALinit(ValPtr d, int tpe, ptr s); +ValPtr VALinit(ValPtr d, int tpe, const void *s); ValPtr VALset(ValPtr v, int t, ptr p); int VARcalcabsolute(ValPtr ret, const ValRecord *v); int VARcalcadd(ValPtr ret, const ValRecord *lft, const ValRecord *rgt, int abort_on_error); @@ -487,7 +466,7 @@ int strLen(const char *s); int strNil(const char *s); int strToStr(str *dst, int *len, const char *src); const char str_nil[2]; -int void_inplace(BAT *b, oid id, ptr val, bit force); +int void_inplace(BAT *b, oid id, const void *val, bit force); BUN void_replace_bat(BAT *b, BAT *u, bit force); int *win_errno(void); int win_mkdir(const char *, const int mode); diff --git a/gdk/gdk.h b/gdk/gdk.h --- a/gdk/gdk.h +++ b/gdk/gdk.h @@ -708,7 +708,7 @@ typedef struct { gdk_export ptr VALconvert(int typ, ValPtr t); gdk_export int VALformat(char **buf, ValPtr res); gdk_export ValPtr VALcopy(ValPtr dst, ValPtr src); -gdk_export ValPtr VALinit(ValPtr d, int tpe, ptr s); +gdk_export ValPtr VALinit(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, ptr p); @@ -1142,21 +1142,21 @@ gdk_export bte ATOMelmshift(int sz); * @end itemize */ /* NOTE: `p' is evaluated after a possible upgrade of the heap */ -#define Hputvalue(b, p, v, copyall) \ +#define HTputvalue(b, p, v, copyall, HT) \ do { \ - if ((b)->hvarsized && (b)->htype) { \ + if ((b)->HT->varsized && (b)->HT->type) { \ var_t _d; \ ptr _ptr; \ - ATOMput((b)->htype, (b)->H->vheap, &_d, v); \ - if ((b)->H->width < SIZEOF_VAR_T && \ - ((b)->H->width <= 2 ? _d - GDK_VAROFFSET : _d) >= ((size_t) 1 << (8 * (b)->H->width))) { \ + ATOMput((b)->HT->type, (b)->HT->vheap, &_d, v); \ + if ((b)->HT->width < SIZEOF_VAR_T && \ + ((b)->HT->width <= 2 ? _d - GDK_VAROFFSET : _d) >= ((size_t) 1 << (8 * (b)->HT->width))) { \ /* doesn't fit in current heap, upgrade it */ \ BATaccessBegin(b, USE_HEAD, MMAP_SEQUENTIAL); \ - GDKupgradevarheap((b)->H, _d, (copyall)); \ + GDKupgradevarheap((b)->HT, _d, (copyall)); \ BATaccessEnd(b, USE_HEAD, MMAP_SEQUENTIAL); \ } \ _ptr = (p); \ - switch ((b)->H->width) { \ + switch ((b)->HT->width) { \ case 1: \ * (unsigned char *) _ptr = (unsigned char) (_d - GDK_VAROFFSET); \ break; \ @@ -1171,23 +1171,38 @@ gdk_export bte ATOMelmshift(int sz); break; \ } \ } else \ - ATOMput((b)->htype, (b)->H->vheap, (p), v); \ + ATOMput((b)->HT->type, (b)->HT->vheap, (p), v); \ } while (0) -#define Tputvalue(b, p, v, copyall) \ +#define Hputvalue(b, p, v, copyall) HTputvalue(b, p, v, copyall, H) +#define Tputvalue(b, p, v, copyall) HTputvalue(b, p, v, copyall, T) +#define HTreplacevalue(b, p, v, HT) \ do { \ - if ((b)->tvarsized && (b)->ttype) { \ + if ((b)->HT->varsized && (b)->HT->type) { \ var_t _d; \ ptr _ptr; \ - ATOMput((b)->ttype, (b)->T->vheap, &_d, v); \ - if ((b)->T->width < SIZEOF_VAR_T && \ - ((b)->T->width <= 2 ? _d - GDK_VAROFFSET : _d) >= ((size_t) 1 << (8 * (b)->T->width))) { \ + _ptr = (p); \ + switch ((b)->HT->width) { \ + case 1: \ + _d = (var_t) * (unsigned char *) _ptr + GDK_VAROFFSET; \ + break; \ + case 2: \ + _d = (var_t) * (unsigned short *) _ptr + GDK_VAROFFSET; \ + break; \ + case 4: \ + _d = (var_t) * (unsigned int *) _ptr; \ + break; \ + case 8: \ + _d = * (var_t *) _ptr; \ + break; \ + } \ + ATOMreplace((b)->HT->type, (b)->HT->vheap, &_d, v); \ + if ((b)->HT->width < SIZEOF_VAR_T && \ + ((b)->HT->width <= 2 ? _d - GDK_VAROFFSET : _d) >= ((size_t) 1 << (8 * (b)->HT->width))) { \ /* doesn't fit in current heap, upgrade it */ \ - BATaccessBegin(b, USE_TAIL, MMAP_SEQUENTIAL); \ - GDKupgradevarheap((b)->T, _d, (copyall)); \ - BATaccessEnd(b, USE_TAIL, MMAP_SEQUENTIAL); \ + GDKupgradevarheap((b)->HT, _d, 0); \ } \ _ptr = (p); \ - switch ((b)->T->width) { \ + switch ((b)->HT->width) { \ case 1: \ * (unsigned char *) _ptr = (unsigned char) (_d - GDK_VAROFFSET); \ break; \ @@ -1202,120 +1217,32 @@ gdk_export bte ATOMelmshift(int sz); break; \ } \ } else \ - ATOMput((b)->ttype, (b)->T->vheap, (p), v); \ + ATOMreplace((b)->HT->type, (b)->HT->vheap, (p), v); \ } while (0) -#define Hreplacevalue(b, p, v) \ - do { \ - if ((b)->hvarsized && (b)->htype) { \ - var_t _d; \ - ptr _ptr; \ - _ptr = (p); \ - switch ((b)->H->width) { \ - case 1: \ - _d = (var_t) * (unsigned char *) _ptr + GDK_VAROFFSET; \ - break; \ - case 2: \ - _d = (var_t) * (unsigned short *) _ptr + GDK_VAROFFSET; \ - break; \ - case 4: \ - _d = (var_t) * (unsigned int *) _ptr; \ - break; \ - case 8: \ - _d = * (var_t *) _ptr; \ - break; \ - } \ - ATOMreplace((b)->htype, (b)->H->vheap, &_d, v); \ - if ((b)->H->width < SIZEOF_VAR_T && \ - ((b)->H->width <= 2 ? _d - GDK_VAROFFSET : _d) >= ((size_t) 1 << (8 * (b)->H->width))) { \ - /* doesn't fit in current heap, upgrade it */ \ - GDKupgradevarheap((b)->H, _d, 0); \ - } \ - _ptr = (p); \ - switch ((b)->H->width) { \ - case 1: \ - * (unsigned char *) _ptr = (unsigned char) (_d - GDK_VAROFFSET); \ - break; \ - case 2: \ - * (unsigned short *) _ptr = (unsigned short) (_d - GDK_VAROFFSET); \ - break; \ - case 4: \ - * (unsigned int *) _ptr = (unsigned int) _d; \ - break; \ - case 8: \ - * (var_t *) _ptr = _d; \ - break; \ - } \ - } else \ - ATOMreplace((b)->htype, (b)->H->vheap, (p), v); \ +#define Hreplacevalue(b, p, v) HTreplacevalue(b, p, v, H) +#define Treplacevalue(b, p, v) HTreplacevalue(b, p, v, T) +#define HTfastins_nocheck(b, p, v, s, HT) \ + do { \ + assert((b)->HT->width == (s)); \ + (b)->HT->heap.free += (s); \ + HTputvalue((b), HT##loc((b), (p)), (v), 0, HT); \ _______________________________________________ Checkin-list mailing list Checkin-list@monetdb.org http://mail.monetdb.org/mailman/listinfo/checkin-list