src/hotspot/share/jfr/utilities/jfrDoublyLinkedList.hpp
changeset 58863 c16ac7a2eba4
parent 53244 9807daeb47c4
equal deleted inserted replaced
58861:2c3cc4b01880 58863:c16ac7a2eba4
    46   T* clear(bool return_tail = false);
    46   T* clear(bool return_tail = false);
    47   T* remove(T* const node);
    47   T* remove(T* const node);
    48   void prepend(T* const node);
    48   void prepend(T* const node);
    49   void append(T* const node);
    49   void append(T* const node);
    50   void append_list(T* const head_node, T* const tail_node, size_t count);
    50   void append_list(T* const head_node, T* const tail_node, size_t count);
    51   debug_only(bool in_list(const T* const target_node) const;)
    51   bool in_list(const T* const target_node) const;
    52   debug_only(bool locate(const T* start_node, const T* const target_node) const;)
    52   bool locate(const T* start_node, const T* const target_node) const;
    53 };
    53 };
    54 
    54 
    55 template <typename T>
    55 template <typename T>
    56 inline void JfrDoublyLinkedList<T>::prepend(T* const node) {
    56 inline void JfrDoublyLinkedList<T>::prepend(T* const node) {
    57   assert(node != NULL, "invariant");
    57   assert(node != NULL, "invariant");
   151   assert(head() == NULL, "invariant");
   151   assert(head() == NULL, "invariant");
   152   assert(tail() == NULL, "invariant");
   152   assert(tail() == NULL, "invariant");
   153   return node;
   153   return node;
   154 }
   154 }
   155 
   155 
   156 #ifdef ASSERT
       
   157 template <typename T>
   156 template <typename T>
   158 bool JfrDoublyLinkedList<T>::locate(const T* node, const T* const target) const {
   157 bool JfrDoublyLinkedList<T>::locate(const T* node, const T* const target) const {
   159   assert(target != NULL, "invariant");
   158   assert(target != NULL, "invariant");
   160   while (node != NULL) {
   159   while (node != NULL) {
   161     if (node == target) {
   160     if (node == target) {
   180     ++count;
   179     ++count;
   181     node = (T*)node->next();
   180     node = (T*)node->next();
   182   }
   181   }
   183   assert(count_param == count, "invariant");
   182   assert(count_param == count, "invariant");
   184 }
   183 }
   185 #endif // ASSERT
       
   186 
   184 
   187 template <typename T>
   185 template <typename T>
   188 void JfrDoublyLinkedList<T>::append_list(T* const head_node, T* const tail_node, size_t count) {
   186 void JfrDoublyLinkedList<T>::append_list(T* const head_node, T* const tail_node, size_t count) {
   189   assert(head_node != NULL, "invariant");
   187   assert(head_node != NULL, "invariant");
   190   assert(!in_list(head_node), "already in list error");
   188   assert(!in_list(head_node), "already in list error");