Skip to content

Commit

Permalink
8306740: G1: Change G1CardSetHashTableScan to lambda
Browse files Browse the repository at this point in the history
Reviewed-by: kbarrett, tschatzl
  • Loading branch information
albertnetymk committed Apr 25, 2023
1 parent a4a5385 commit 9d1fe65
Showing 1 changed file with 14 additions and 20 deletions.
34 changes: 14 additions & 20 deletions src/hotspot/share/gc/g1/g1CardSet.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -276,18 +276,6 @@ class G1CardSetHashTable : public CHeapObj<mtGCCardSet> {
G1CardSetHashTableValue* value() const { return _value; }
};

class G1CardSetHashTableScan : public StackObj {
G1CardSet::ContainerPtrClosure* _scan_f;
public:
explicit G1CardSetHashTableScan(G1CardSet::ContainerPtrClosure* f) : _scan_f(f) { }

bool operator()(G1CardSetHashTableValue* value) {
_scan_f->do_containerptr(value->_region_idx, value->_num_occupied, value->_container);
return true;
}
};


public:
static const size_t InitialLogTableSize = 2;

Expand Down Expand Up @@ -335,14 +323,14 @@ class G1CardSetHashTable : public CHeapObj<mtGCCardSet> {
return found.value();
}

void iterate_safepoint(G1CardSet::ContainerPtrClosure* cl2) {
G1CardSetHashTableScan cl(cl2);
_table_scanner.do_safepoint_scan(cl);
template <typename SCAN_FUNC>
void iterate_safepoint(SCAN_FUNC& scan_f) {
_table_scanner.do_safepoint_scan(scan_f);
}

void iterate(G1CardSet::ContainerPtrClosure* cl2) {
G1CardSetHashTableScan cl(cl2);
_table.do_scan(Thread::current(), cl);
template <typename SCAN_FUNC>
void iterate(SCAN_FUNC& scan_f) {
_table.do_scan(Thread::current(), scan_f);
}

void reset() {
Expand Down Expand Up @@ -924,10 +912,16 @@ void G1CardSet::iterate_cards_during_transfer(ContainerPtr const container, Card
}

void G1CardSet::iterate_containers(ContainerPtrClosure* cl, bool at_safepoint) {
auto do_value =
[&] (G1CardSetHashTableValue* value) {
cl->do_containerptr(value->_region_idx, value->_num_occupied, value->_container);
return true;
};

if (at_safepoint) {
_table->iterate_safepoint(cl);
_table->iterate_safepoint(do_value);
} else {
_table->iterate(cl);
_table->iterate(do_value);
}
}

Expand Down

1 comment on commit 9d1fe65

@openjdk-notifier
Copy link

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Please sign in to comment.