src/hotspot/share/jfr/leakprofiler/chains/edgeStore.cpp
changeset 58132 caa25ab47aca
parent 57777 90ead0febf56
child 58157 9dca61a7df19
child 58679 9c3209ff7550
child 58863 c16ac7a2eba4
equal deleted inserted replaced
58131:3054503bad7d 58132:caa25ab47aca
    53 
    53 
    54 bool EdgeStore::is_empty() const {
    54 bool EdgeStore::is_empty() const {
    55   return !_edges->has_entries();
    55   return !_edges->has_entries();
    56 }
    56 }
    57 
    57 
    58 void EdgeStore::assign_id(EdgeEntry* entry) {
    58 void EdgeStore::on_link(EdgeEntry* entry) {
    59   assert(entry != NULL, "invariant");
    59   assert(entry != NULL, "invariant");
    60   assert(entry->id() == 0, "invariant");
    60   assert(entry->id() == 0, "invariant");
    61   entry->set_id(++_edge_id_counter);
    61   entry->set_id(++_edge_id_counter);
    62 }
    62 }
    63 
    63 
    64 bool EdgeStore::equals(const Edge& query, uintptr_t hash, const EdgeEntry* entry) {
    64 bool EdgeStore::on_equals(uintptr_t hash, const EdgeEntry* entry) {
    65   assert(entry != NULL, "invariant");
    65   assert(entry != NULL, "invariant");
    66   assert(entry->hash() == hash, "invariant");
    66   assert(entry->hash() == hash, "invariant");
    67   return true;
    67   return true;
    68 }
    68 }
    69 
    69 
       
    70 void EdgeStore::on_unlink(EdgeEntry* entry) {
       
    71   assert(entry != NULL, "invariant");
       
    72   // nothing
       
    73 }
       
    74 
    70 #ifdef ASSERT
    75 #ifdef ASSERT
    71 bool EdgeStore::contains(const oop* reference) const {
    76 bool EdgeStore::contains(const oop* reference) const {
    72   return get(reference) != NULL;
    77   return get(reference) != NULL;
    73 }
    78 }
    74 #endif
    79 #endif
    75 
    80 
    76 StoredEdge* EdgeStore::get(const oop* reference) const {
    81 StoredEdge* EdgeStore::get(const oop* reference) const {
    77   assert(reference != NULL, "invariant");
    82   assert(reference != NULL, "invariant");
    78   const StoredEdge e(NULL, reference);
    83   EdgeEntry* const entry = _edges->lookup_only((uintptr_t)reference);
    79   EdgeEntry* const entry = _edges->lookup_only(e, (uintptr_t)reference);
       
    80   return entry != NULL ? entry->literal_addr() : NULL;
    84   return entry != NULL ? entry->literal_addr() : NULL;
    81 }
    85 }
    82 
    86 
    83 StoredEdge* EdgeStore::put(const oop* reference) {
    87 StoredEdge* EdgeStore::put(const oop* reference) {
    84   assert(reference != NULL, "invariant");
    88   assert(reference != NULL, "invariant");
    85   const StoredEdge e(NULL, reference);
    89   const StoredEdge e(NULL, reference);
    86   assert(NULL == _edges->lookup_only(e, (uintptr_t)reference), "invariant");
    90   assert(NULL == _edges->lookup_only((uintptr_t)reference), "invariant");
    87   EdgeEntry& entry = _edges->put(e, (uintptr_t)reference);
    91   EdgeEntry& entry = _edges->put((uintptr_t)reference, e);
    88   return entry.literal_addr();
    92   return entry.literal_addr();
    89 }
    93 }
    90 
    94 
    91 traceid EdgeStore::get_id(const Edge* edge) const {
    95 traceid EdgeStore::get_id(const Edge* edge) const {
    92   assert(edge != NULL, "invariant");
    96   assert(edge != NULL, "invariant");
    93   EdgeEntry* const entry = _edges->lookup_only(*edge, (uintptr_t)edge->reference());
    97   EdgeEntry* const entry = _edges->lookup_only((uintptr_t)edge->reference());
    94   assert(entry != NULL, "invariant");
    98   assert(entry != NULL, "invariant");
    95   return entry->id();
    99   return entry->id();
    96 }
   100 }
    97 
   101 
    98 traceid EdgeStore::gc_root_id(const Edge* edge) const {
   102 traceid EdgeStore::gc_root_id(const Edge* edge) const {