8 *
9 * This code is distributed in the hope that it will be useful, but WITHOUT
10 * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
11 * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
12 * version 2 for more details (a copy is included in the LICENSE file that
13 * accompanied this code).
14 *
15 * You should have received a copy of the GNU General Public License version
16 * 2 along with this work; if not, write to the Free Software Foundation,
17 * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
18 *
19 * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
20 * or visit www.oracle.com if you need additional information or have any
21 * questions.
22 *
23 */
24
25 #ifndef SHARE_VM_GC_G1_G1CODECACHEREMSET_HPP
26 #define SHARE_VM_GC_G1_G1CODECACHEREMSET_HPP
27
28 #include "memory/allocation.hpp"
29
30 class CodeBlobClosure;
31 class G1CodeRootSetTable;
32 class HeapRegion;
33 class nmethod;
34
35 // Implements storage for a set of code roots.
36 // All methods that modify the set are not thread-safe except if otherwise noted.
37 class G1CodeRootSet VALUE_OBJ_CLASS_SPEC {
38 friend class G1CodeRootSetTest;
39 private:
40
41 const static size_t SmallSize = 32;
42 const static size_t Threshold = 24;
43 const static size_t LargeSize = 512;
44
45 G1CodeRootSetTable* _table;
46 G1CodeRootSetTable* load_acquire_table();
47
48 size_t _length;
49
50 void move_to_large();
51 void allocate_small_table();
52
53 public:
54 G1CodeRootSet() : _table(NULL), _length(0) {}
55 ~G1CodeRootSet();
56
57 static void purge();
|
8 *
9 * This code is distributed in the hope that it will be useful, but WITHOUT
10 * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
11 * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
12 * version 2 for more details (a copy is included in the LICENSE file that
13 * accompanied this code).
14 *
15 * You should have received a copy of the GNU General Public License version
16 * 2 along with this work; if not, write to the Free Software Foundation,
17 * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
18 *
19 * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
20 * or visit www.oracle.com if you need additional information or have any
21 * questions.
22 *
23 */
24
25 #ifndef SHARE_VM_GC_G1_G1CODECACHEREMSET_HPP
26 #define SHARE_VM_GC_G1_G1CODECACHEREMSET_HPP
27
28 class CodeBlobClosure;
29 class G1CodeRootSetTable;
30 class HeapRegion;
31 class nmethod;
32
33 // Implements storage for a set of code roots.
34 // All methods that modify the set are not thread-safe except if otherwise noted.
35 class G1CodeRootSet {
36 friend class G1CodeRootSetTest;
37 private:
38
39 const static size_t SmallSize = 32;
40 const static size_t Threshold = 24;
41 const static size_t LargeSize = 512;
42
43 G1CodeRootSetTable* _table;
44 G1CodeRootSetTable* load_acquire_table();
45
46 size_t _length;
47
48 void move_to_large();
49 void allocate_small_table();
50
51 public:
52 G1CodeRootSet() : _table(NULL), _length(0) {}
53 ~G1CodeRootSet();
54
55 static void purge();
|