Changeset: 5df2abd05a24 for MonetDB URL: http://dev.monetdb.org/hg/MonetDB?cmd=changeset;node=5df2abd05a24 Modified Files: gdk/gdk.h Branch: Jul2015 Log Message:
32-bit versions of macros. diffs (99 lines): diff --git a/gdk/gdk.h b/gdk/gdk.h --- a/gdk/gdk.h +++ b/gdk/gdk.h @@ -1154,6 +1154,7 @@ gdk_export bte ATOMelmshift(int sz); * @end itemize */ /* NOTE: `p' is evaluated after a possible upgrade of the heap */ +#if SIZEOF_VAR_T == 8 #define HTputvalue(b, p, v, copyall, HT) \ do { \ if ((b)->HT->varsized && (b)->HT->type) { \ @@ -1185,8 +1186,6 @@ gdk_export bte ATOMelmshift(int sz); ATOMputFIX((b)->HT->type, (p), v); \ } \ } while (0) -#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)->HT->varsized && (b)->HT->type) { \ @@ -1233,6 +1232,78 @@ gdk_export bte ATOMelmshift(int sz); ATOMreplaceFIX((b)->HT->type, (p), v); \ } \ } while (0) +#else +#define HTputvalue(b, p, v, copyall, HT) \ + do { \ + if ((b)->HT->varsized && (b)->HT->type) { \ + var_t _d; \ + ptr _ptr; \ + ATOMputVAR((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 */ \ + if (GDKupgradevarheap((b)->HT, _d, (copyall), (b)->batRestricted == BAT_READ) != GDK_SUCCEED) \ + goto bunins_failed; \ + } \ + _ptr = (p); \ + switch ((b)->HT->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: \ + * (var_t *) _ptr = _d; \ + break; \ + } \ + } else { \ + ATOMputFIX((b)->HT->type, (p), v); \ + } \ + } while (0) +#define HTreplacevalue(b, p, v, HT) \ + do { \ + if ((b)->HT->varsized && (b)->HT->type) { \ + var_t _d; \ + ptr _ptr; \ + _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 *) _ptr; \ + break; \ + } \ + ATOMreplaceVAR((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 */ \ + if (GDKupgradevarheap((b)->HT, _d, 0, (b)->batRestricted == BAT_READ) != GDK_SUCCEED) \ + goto bunins_failed; \ + } \ + _ptr = (p); \ + switch ((b)->HT->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: \ + * (var_t *) _ptr = _d; \ + break; \ + } \ + } else { \ + ATOMreplaceFIX((b)->HT->type, (p), v); \ + } \ + } while (0) +#endif +#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 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) \ _______________________________________________ checkin-list mailing list checkin-list@monetdb.org https://www.monetdb.org/mailman/listinfo/checkin-list