Changeset: 16288aef9b9b for MonetDB
URL: https://dev.monetdb.org/hg/MonetDB/rev/16288aef9b9b
Modified Files:
gdk/gdk_analytic_func.c
Branch: default
Log Message:
Reducing code explosion
diffs (57 lines):
diff --git a/gdk/gdk_analytic_func.c b/gdk/gdk_analytic_func.c
--- a/gdk/gdk_analytic_func.c
+++ b/gdk/gdk_analytic_func.c
@@ -68,30 +68,35 @@ GDKrebuild_segment_tree(oid ncount, oid
} \
} while (0)
-#define ANALYTICAL_NTILE_IMP(TPE, NEXT_VALUE, LNG_HGE, UPCAST, VALIDATION)
\
+#define ANALYTICAL_NTILE(IMP, TPE, NEXT_VALUE, LNG_HGE, UPCAST, VALIDATION)
\
do { \
TPE *restrict rb = (TPE*)Tloc(r, 0); \
if (p) { \
for (; i < cnt; i++) { \
- if (np[i]) \
- NTILE_CALC(TPE, NEXT_VALUE, LNG_HGE,
UPCAST, VALIDATION);\
- } \
- } \
- i = cnt; \
- NTILE_CALC(TPE, NEXT_VALUE, LNG_HGE, UPCAST, VALIDATION);
\
+ if (np[i]) { \
+ntile##IMP##TPE: \
+ NTILE_CALC(TPE, NEXT_VALUE, LNG_HGE,
UPCAST, VALIDATION); \
+ } \
+ } \
+ } \
+ if (!last) { \
+ last = true; \
+ i = cnt; \
+ goto ntile##IMP##TPE; \
+ } \
} while (0)
#define ANALYTICAL_NTILE_SINGLE_IMP(TPE, LNG_HGE, UPCAST) \
do { \
TPE ntl = *(TPE*) ntile; \
if (!is_##TPE##_nil(ntl) && ntl < 0) goto invalidntile; \
- ANALYTICAL_NTILE_IMP(TPE, ntl, LNG_HGE, UPCAST, ;); \
+ ANALYTICAL_NTILE(SINGLE, TPE, ntl, LNG_HGE, UPCAST, ;); \
} while (0)
#define ANALYTICAL_NTILE_MULTI_IMP(TPE, LNG_HGE, UPCAST) \
do { \
TPE *restrict nn = (TPE*)Tloc(n, 0); \
- ANALYTICAL_NTILE_IMP(TPE, nn[k], LNG_HGE, UPCAST, if (val < 0)
goto invalidntile;); \
+ ANALYTICAL_NTILE(MULTI, TPE, nn[k], LNG_HGE, UPCAST, if (val <
0) goto invalidntile;); \
} while (0)
gdk_return
@@ -99,7 +104,7 @@ GDKanalyticalntile(BAT *r, BAT *b, BAT *
{
lng i = 0, k = 0, cnt = (lng) BATcount(b);
bit *restrict np = p ? Tloc(p, 0) : NULL;
- bool has_nils = false;
+ bool has_nils = false, last = false;
assert((n && !ntile) || (!n && ntile));
_______________________________________________
checkin-list mailing list
[email protected]
https://www.monetdb.org/mailman/listinfo/checkin-list