projects
/
libfirm
/ blobdiff
commit
grep
author
committer
pickaxe
?
search:
re
summary
|
shortlog
|
log
|
commit
|
commitdiff
|
tree
raw
|
inline
| side by side
*** empty log message ***
[libfirm]
/
ir
/
adt
/
pdeq.c
diff --git
a/ir/adt/pdeq.c
b/ir/adt/pdeq.c
index
493e2e6
..
8f679e0
100644
(file)
--- a/
ir/adt/pdeq.c
+++ b/
ir/adt/pdeq.c
@@
-12,7
+12,7
@@
#ifdef HAVE_CONFIG_H
#ifdef HAVE_CONFIG_H
-# include
<config.h>
+# include
"config.h"
#endif
#include <assert.h>
#endif
#include <assert.h>
@@
-22,11
+22,14
@@
# include <string.h>
# endif
# include <string.h>
# endif
-#include "cookies.h"
-#include "debug.h"
+#include "fourcc.h"
#include "pdeq.h"
#include "xmalloc.h"
#include "pdeq.h"
#include "xmalloc.h"
+#include "align.h"
+/* Pointer Double Ended Queue */
+#define PDEQ_MAGIC1 FOURCC('P','D','E','1')
+#define PDEQ_MAGIC2 FOURCC('P','D','E','2')
/** Size of pdeq block cache. */
#define TUNE_NSAVED_PDEQS 16
/** Size of pdeq block cache. */
#define TUNE_NSAVED_PDEQS 16
@@
-39,8
+42,7
@@
#ifdef NDEBUG
# define VRFY(dq) ((void)0)
#else
#ifdef NDEBUG
# define VRFY(dq) ((void)0)
#else
-# define VRFY(dq) \
- (d_(df_vrfy_level,1) ? _pdeq_vrfy ((dq)) : assert ((dq) && ((dq)->cookie == PDEQ_COOKIE1)))
+# define VRFY(dq) assert((dq) && ((dq)->magic == PDEQ_MAGIC1))
#endif
/**
#endif
/**
@@
-49,7
+51,7
@@
*/
struct pdeq {
#ifndef NDEBUG
*/
struct pdeq {
#ifndef NDEBUG
- unsigned
cookie; /**< debug cookie
*/
+ unsigned
magic; /**< debug magic
*/
#endif
pdeq *l_end, *r_end; /**< left and right ends of the deque */
pdeq *l, *r; /**< left and right neighbour */
#endif
pdeq *l_end, *r_end; /**< left and right ends of the deque */
pdeq *l, *r; /**< left and right neighbour */
@@
-78,13
+80,11
@@
unsigned pdeqs_cached;
static INLINE void free_pdeq_block (pdeq *p)
{
#ifndef NDEBUG
static INLINE void free_pdeq_block (pdeq *p)
{
#ifndef NDEBUG
- p->
cookie
= 0xbadf00d1;
+ p->
magic
= 0xbadf00d1;
#endif
if (pdeqs_cached < TUNE_NSAVED_PDEQS) {
#endif
if (pdeqs_cached < TUNE_NSAVED_PDEQS) {
- if (d_ (df_pdeq, 2)) printf ("[%p ==> pdeq_block_cache] ", p);
pdeq_block_cache[pdeqs_cached++] = p;
} else {
pdeq_block_cache[pdeqs_cached++] = p;
} else {
- if (d_ (df_pdeq, 2)) printf ("[%p ==> free] ", p);
xfree (p);
}
}
xfree (p);
}
}
@@
-99,10
+99,8
@@
static INLINE pdeq *alloc_pdeq_block (void)
pdeq *p;
if (TUNE_NSAVED_PDEQS && pdeqs_cached) {
p = pdeq_block_cache[--pdeqs_cached];
pdeq *p;
if (TUNE_NSAVED_PDEQS && pdeqs_cached) {
p = pdeq_block_cache[--pdeqs_cached];
- if (d_ (df_pdeq, 2)) printf ("[pdeq_block_cache ==> %p] ", p);
} else {
p = xmalloc (PREF_MALLOC_SIZE);
} else {
p = xmalloc (PREF_MALLOC_SIZE);
- if (d_ (df_pdeq, 2)) printf ("[malloc ==> %p] ", p);
}
return p;
}
}
return p;
}
@@
-118,14
+116,13
@@
void _pdeq_vrfy(pdeq *dq)
{
pdeq *q;
{
pdeq *q;
- if (d_ (df_pdeq, 5)) printf ("[pdeq_vrfy %p] ", dq);
assert ( dq
assert ( dq
- && (dq->
cookie == PDEQ_COOKIE
1)
+ && (dq->
magic == PDEQ_MAGIC
1)
&& (dq->l_end && dq->r_end));
q = dq->l_end;
while (q) {
&& (dq->l_end && dq->r_end));
q = dq->l_end;
while (q) {
- assert ( ((q == dq) || (q->
cookie == PDEQ_COOKIE
2))
+ assert ( ((q == dq) || (q->
magic == PDEQ_MAGIC
2))
&& ((q == dq->l_end) ^ (q->l != NULL))
&& ((q == dq->r_end) ^ (q->r != NULL))
&& (!q->l || (q == q->l->r))
&& ((q == dq->l_end) ^ (q->l != NULL))
&& ((q == dq->r_end) ^ (q->r != NULL))
&& (!q->l || (q == q->l->r))
@@
-145,14
+142,13
@@
pdeq *new_pdeq(void)
dq = alloc_pdeq_block();
#ifndef NDEBUG
dq = alloc_pdeq_block();
#ifndef NDEBUG
- dq->
cookie = PDEQ_COOKIE
1;
+ dq->
magic = PDEQ_MAGIC
1;
#endif
dq->l_end = dq->r_end = dq;
dq->l = dq->r = NULL;
dq->n = dq->p = 0;
VRFY(dq);
#endif
dq->l_end = dq->r_end = dq;
dq->l = dq->r = NULL;
dq->n = dq->p = 0;
VRFY(dq);
- if (d_(df_pdeq, 1)) printf("(new_pdeq ==> %p)\n", dq);
return dq;
}
return dq;
}
@@
-181,14
+177,12
@@
void del_pdeq(pdeq *dq)
free_pdeq_block(q);
} while ((q = qq));
free_pdeq_block(q);
} while ((q = qq));
- if (d_(df_pdeq, 1)) printf("(del_pdeq %p)\n", dq);
}
/* Checks if a list is empty. */
int pdeq_empty(pdeq *dq)
{
VRFY(dq);
}
/* Checks if a list is empty. */
int pdeq_empty(pdeq *dq)
{
VRFY(dq);
- if (d_(df_pdeq, 4)) printf("(pdeq_empty %p ==> %d)\n", dq, dq->l_end->n == 0);
return dq->l_end->n == 0;
}
return dq->l_end->n == 0;
}
@@
-207,7
+201,6
@@
int pdeq_len(pdeq *dq)
q = q->r;
} while (q);
q = q->r;
} while (q);
- if (d_(df_pdeq, 4)) printf("(pdeq_len %p ==> %d)\n", dq, n);
return n;
}
return n;
}
@@
-216,7
+209,6
@@
pdeq * pdeq_putr(pdeq *dq, const void *x)
{
pdeq *rdq;
int n;
{
pdeq *rdq;
int n;
- int pr = 0;
VRFY(dq);
VRFY(dq);
@@
-228,9
+220,8
@@
pdeq * pdeq_putr(pdeq *dq, const void *x)
if (dq->n) { /* ... if trunk used */
/* allocate and init new block */
ndq = alloc_pdeq_block();
if (dq->n) { /* ... if trunk used */
/* allocate and init new block */
ndq = alloc_pdeq_block();
- pr = d_(df_pdeq, 2);
#ifndef NDEBUG
#ifndef NDEBUG
- ndq->
cookie = PDEQ_COOKIE
2;
+ ndq->
magic = PDEQ_MAGIC
2;
#endif
ndq->l_end = ndq->r_end = NULL;
}
#endif
ndq->l_end = ndq->r_end = NULL;
}
@@
-248,7
+239,6
@@
pdeq * pdeq_putr(pdeq *dq, const void *x)
rdq->data[n] = x;
VRFY(dq);
rdq->data[n] = x;
VRFY(dq);
- if (d_(df_pdeq, 3) || pr) printf("(pdeq_putr %p %p)\n", dq, x);
return dq;
}
return dq;
}
@@
-257,7
+247,6
@@
pdeq *pdeq_putl(pdeq *dq, const void *x)
{
pdeq *ldq;
int p;
{
pdeq *ldq;
int p;
- int pr = 0;
VRFY(dq);
VRFY(dq);
@@
-269,9
+258,8
@@
pdeq *pdeq_putl(pdeq *dq, const void *x)
if (dq->n) { /* ... if trunk used */
/* allocate and init new block */
ndq = alloc_pdeq_block();
if (dq->n) { /* ... if trunk used */
/* allocate and init new block */
ndq = alloc_pdeq_block();
- pr = d_(df_pdeq, 2);
#ifndef NDEBUG
#ifndef NDEBUG
- ndq->
cookie = PDEQ_COOKIE
2;
+ ndq->
magic = PDEQ_MAGIC
2;
#endif
ndq->l_end = ndq->r_end = NULL;
}
#endif
ndq->l_end = ndq->r_end = NULL;
}
@@
-291,7
+279,6
@@
pdeq *pdeq_putl(pdeq *dq, const void *x)
ldq->data[p] = x;
VRFY(dq);
ldq->data[p] = x;
VRFY(dq);
- if (d_(df_pdeq, 3) || pr) printf("(pdeq_putl %p %p)\n", dq, x);
return dq;
}
return dq;
}
@@
-301,7
+288,6
@@
void *pdeq_getr(pdeq *dq)
pdeq *rdq;
const void *x;
int n;
pdeq *rdq;
const void *x;
int n;
- int pr = 0;
VRFY(dq);
assert(dq->l_end->n);
VRFY(dq);
assert(dq->l_end->n);
@@
-321,12
+307,10
@@
void *pdeq_getr(pdeq *dq)
}
if (dq != rdq) {
free_pdeq_block(rdq);
}
if (dq != rdq) {
free_pdeq_block(rdq);
- pr = d_(df_pdeq, 2);
}
}
VRFY(dq);
}
}
VRFY(dq);
- if (d_(df_pdeq, 3) || pr) printf("(pdeq_getr %p ==> %p)\n", dq, x);
return (void *)x;
}
return (void *)x;
}
@@
-336,7
+320,6
@@
void *pdeq_getl(pdeq *dq)
pdeq *ldq;
const void *x;
int p;
pdeq *ldq;
const void *x;
int p;
- int pr = 0;
VRFY(dq);
assert(dq->l_end->n);
VRFY(dq);
assert(dq->l_end->n);
@@
-357,12
+340,10
@@
void *pdeq_getl(pdeq *dq)
}
if (dq != ldq) {
free_pdeq_block(ldq);
}
if (dq != ldq) {
free_pdeq_block(ldq);
- pr = d_(df_pdeq, 2);
}
}
VRFY(dq);
}
}
VRFY(dq);
- if (d_(df_pdeq, 3) || pr) printf("(pdeq_getl %p ==> %p)\n", dq, x);
return (void *)x;
}
return (void *)x;
}
@@
-383,22
+364,21
@@
int pdeq_contains(pdeq *dq, const void *x)
p = q->p; ep = p + q->n;
if (ep > NDATA) {
p = q->p; ep = p + q->n;
if (ep > NDATA) {
- do if (q->data[p] == x) goto found; while (++p < NDATA);
+ do {
+ if (q->data[p] == x) return 1;
+ } while (++p < NDATA);
p = 0;
ep -= NDATA;
}
p = 0;
ep -= NDATA;
}
- while (p < ep) if (q->data[p++] == x) goto found;
+ while (p < ep) {
+ if (q->data[p++] == x) return 1;
+ }
q = q->r;
} while (q);
q = q->r;
} while (q);
- if (d_(df_pdeq, 3)) printf("(pdeq_contains %p %p ==> 0)\n", dq, x);
return 0;
return 0;
-
-found: /* The two gotos can be optimized away, if !DEBUG */
- if (d_(df_pdeq, 3)) printf("(pdeq_contains %p %p ==> 1)\n", dq, x);
- return 1;
}
/*
}
/*
@@
-421,23
+401,21
@@
void *pdeq_search(pdeq *dq, cmp_fun cmp, const void *key)
p = q->p; ep = p + q->n;
if (ep > NDATA) {
p = q->p; ep = p + q->n;
if (ep > NDATA) {
- do if (!cmp (q->data[p], key)) goto found; while (++p < NDATA);
+ do {
+ if (!cmp (q->data[p], key)) return (void *)q->data[p-1];
+ } while (++p < NDATA);
p = 0;
ep -= NDATA;
}
p = 0;
ep -= NDATA;
}
- while (p < ep) if (!cmp (q->data[p++], key)) goto found;
+ while (p < ep) {
+ if (!cmp (q->data[p++], key)) return (void *)q->data[p-1];
+ }
q = q->r;
} while (q);
q = q->r;
} while (q);
- if (d_(df_pdeq, 3)) printf("(pdeq_search %p %p %p ==> 0)\n", dq, cmp, key);
return NULL;
return NULL;
-
-found: /* The two gotos can be optimized away, if !DEBUG */
- if (d_(df_pdeq, 3)) printf("(pdeq_contains %p %p %p ==> %p)\n",
- dq, cmp, key, q->data[p]);
- return (void *)q->data[p-1];
}
/*
}
/*
@@
-468,7
+446,6
@@
void **pdeq_copyl(pdeq *dq, const void **dst)
q = q->r;
}
q = q->r;
}
- if (d_(df_pdeq, 3)) printf("(pdeq_copyl %p %p ==> %p)\n", dq, dst, d);
return (void **)dst;
}
return (void **)dst;
}
@@
-499,6
+476,5
@@
void **pdeq_copyr(pdeq *dq, const void **dst)
q = q->l;
}
q = q->l;
}
- if (d_(df_pdeq, 3)) printf("(pdeq_copyr %p %p ==> %p)\n", dq, dst, d);
return (void **)dst;
}
return (void **)dst;
}