sval_t set_contains(intset_t *set, skey_t key) { sval_t result; #ifdef DEBUG_PRINT printf("++> set_contains(%d)\n", (int)val); IO_FLUSH; #endif #ifdef SEQUENTIAL node_t *prev, *next; prev = set->head; next = prev->next; while (next->key < keyl) { prev = next; next = prev->next; } result = (next->key == key) ? next->val : 0; #elif defined LOCKFREE result = harris_find(set, key); #endif return result; }
int set_contains(intset_t *set, val_t val, int transactional) { int result; #ifdef DEBUG printf("++> set_contains(%d)\n", (int)val); IO_FLUSH; #endif #ifdef SEQUENTIAL node_t *prev, *next; prev = set->head; next = prev->next; while (next->val < val) { prev = next; next = prev->next; } result = (next->val == val); #elif defined STM node_t *prev, *next; val_t v = 0; TX_START(EL); prev = set->head; next = (node_t *)TX_LOAD(&prev->next); while (1) { v = TX_LOAD((uintptr_t *) &next->val); if (v >= val) break; prev = next; next = (node_t *)TX_LOAD(&prev->next); } TX_END; result = (v == val); #elif defined LOCKFREE result = harris_find(set, val); #endif return result; }
sval_t set_contains(intset_t *set, skey_t key) { sval_t result; result = harris_find(set, key); return result; }