* hash-traits.h (pointer_hash::mark_deleted, pointer_hash::mark_empty)
	(pointer_hash::is_deleted, pointer_hash::is_empty): New functions.

From-SVN: r224956
This commit is contained in:
Richard Sandiford 2015-06-25 17:06:02 +00:00 committed by Richard Sandiford
parent 5ac6389bc1
commit 843adf8844
2 changed files with 37 additions and 1 deletions

View File

@ -1,3 +1,8 @@
2015-06-25 Richard Sandiford <richard.sandiford@arm.com>
* hash-traits.h (pointer_hash::mark_deleted, pointer_hash::mark_empty)
(pointer_hash::is_deleted, pointer_hash::is_empty): New functions.
2015-06-25 Richard Sandiford <richard.sandiford@arm.com>
* hash-traits.h (ggc_hasher::remove): Take a reference parameter.

View File

@ -66,9 +66,12 @@ struct pointer_hash : typed_noop_remove <Type>
typedef Type *compare_type;
static inline hashval_t hash (const value_type &);
static inline bool equal (const value_type &existing,
const compare_type &candidate);
static inline void mark_deleted (Type *&);
static inline void mark_empty (Type *&);
static inline bool is_deleted (Type *);
static inline bool is_empty (Type *);
};
template <typename Type>
@ -88,6 +91,34 @@ pointer_hash <Type>::equal (const value_type &existing,
return existing == candidate;
}
template <typename Type>
inline void
pointer_hash <Type>::mark_deleted (Type *&e)
{
e = reinterpret_cast<Type *> (1);
}
template <typename Type>
inline void
pointer_hash <Type>::mark_empty (Type *&e)
{
e = NULL;
}
template <typename Type>
inline bool
pointer_hash <Type>::is_deleted (Type *e)
{
return e == reinterpret_cast<Type *> (1);
}
template <typename Type>
inline bool
pointer_hash <Type>::is_empty (Type *e)
{
return e == NULL;
}
/* Hasher for entry in gc memory. */
template<typename T>