src/share/vm/gc/g1/heapRegionManager.hpp
Print this page
@@ -1,7 +1,7 @@
/*
- * Copyright (c) 2001, 2016, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2001, 2017, Oracle and/or its affiliates. All rights reserved.
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
*
* This code is free software; you can redistribute it and/or modify it
* under the terms of the GNU General Public License version 2 only, as
* published by the Free Software Foundation.
@@ -26,10 +26,11 @@
#define SHARE_VM_GC_G1_HEAPREGIONMANAGER_HPP
#include "gc/g1/g1BiasedArray.hpp"
#include "gc/g1/g1RegionToSpaceMapper.hpp"
#include "gc/g1/heapRegionSet.hpp"
+#include "gc/shared/workgroup.hpp"
#include "services/memoryUsage.hpp"
class HeapRegion;
class HeapRegionClosure;
class HeapRegionClaimer;
@@ -282,6 +283,21 @@
bool is_region_claimed(uint region_index) const;
// Claim the given region, returns true if successfully claimed.
bool claim_region(uint region_index);
};
+
+// Subclass of AbstractGangTask that uses a HeapRegionClaimer to parallelize work on a region basis
+class G1ParallelizeByRegionsTask: public AbstractGangTask {
+ HeapRegionClaimer _hrclaimer;
+
+public:
+ G1ParallelizeByRegionsTask(const char* name, uint num_workers) :
+ AbstractGangTask(name),
+ _hrclaimer(num_workers) {}
+
+protected:
+ void all_heap_regions_work(HeapRegionClosure* cl,
+ uint worker_id,
+ bool concurrent = false);
+};
#endif // SHARE_VM_GC_G1_HEAPREGIONMANAGER_HPP