gcc/
authorRichard Sandiford <richard.sandiford@arm.com>
Thu, 25 Jun 2015 17:06:02 +0000 (17:06 +0000)
committerRichard Sandiford <rsandifo@gcc.gnu.org>
Thu, 25 Jun 2015 17:06:02 +0000 (17:06 +0000)
* hash-traits.h (pointer_hash::mark_deleted, pointer_hash::mark_empty)
(pointer_hash::is_deleted, pointer_hash::is_empty): New functions.

From-SVN: r224956

gcc/ChangeLog
gcc/hash-traits.h

index 32cecf1959abd00c4a1d57ea9d0b0a7597666be7..a9220e64619ed1e0c497d2d2265e5ca83a94b7a4 100644 (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.
index 1d1a220179fe8f617616b36fe968da01a9bea4a3..65ed32c89715260f7ba4ee773b1dc7ec77cb9a97 100644 (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>