X-Git-Url: http://nsz.repo.hu/git/?a=blobdiff_plain;f=ir%2Fir%2Firnodeset.h;h=330caa620ae3762bb2cbb6a834763e34e1f6b7a7;hb=af0115376ccdcc72e0643caf221407218f4504f0;hp=56a7df84933f26ebfee5f2f812331dc0384f8dea;hpb=aef4d3b28b21856e05c0bd91552b51b69ed5ac50;p=libfirm diff --git a/ir/ir/irnodeset.h b/ir/ir/irnodeset.h index 56a7df849..330caa620 100644 --- a/ir/ir/irnodeset.h +++ b/ir/ir/irnodeset.h @@ -1,5 +1,5 @@ /* - * Copyright (C) 1995-2007 University of Karlsruhe. All right reserved. + * Copyright (C) 1995-2008 University of Karlsruhe. All right reserved. * * This file is part of libFirm. * @@ -33,11 +33,23 @@ #include "firm_types.h" #include "xmalloc.h" +/* + * sebastian experimental: + * use ordered arrays as node sets. + * the guys here have made good experiences with that. + * Internally we use normal Firm arrays and binary + * search for locating the elements. Using arrays should + * give the sets a small footprint. + */ +#undef IR_NODESET_USE_ORDERED_SETS + #define HashSet ir_nodeset_t #define HashSetIterator ir_nodeset_iterator_t #define ValueType ir_node* #define DO_REHASH + #include "hashset.h" + #undef DO_REHASH #undef ValueType #undef HashSetIterator @@ -75,8 +87,8 @@ void ir_nodeset_destroy(ir_nodeset_t *nodeset); * @param expected_elements Number of elements expected in the nodeset (roughly) * @return The initialized nodeset */ -static INLINE ir_nodeset_t *ir_nodeset_new(size_t expected_elements) { - ir_nodeset_t *res = xmalloc(sizeof(*res)); +static inline ir_nodeset_t *ir_nodeset_new(size_t expected_elements) { + ir_nodeset_t *res = XMALLOC(ir_nodeset_t); ir_nodeset_init_size(res, expected_elements); return res; } @@ -84,7 +96,7 @@ static INLINE ir_nodeset_t *ir_nodeset_new(size_t expected_elements) { /** * Destroys a nodeset and frees the memory of the nodeset itself. */ -static INLINE void ir_nodeset_del(ir_nodeset_t *nodeset) { +static inline void ir_nodeset_del(ir_nodeset_t *nodeset) { ir_nodeset_destroy(nodeset); xfree(nodeset); } @@ -99,6 +111,7 @@ static INLINE void ir_nodeset_del(ir_nodeset_t *nodeset) { */ int ir_nodeset_insert(ir_nodeset_t *nodeset, ir_node *node); + /** * Removes a node from a nodeset. Does nothing if the nodeset doesn't contain * the node.