comparison src/share/vm/memory/genRemSet.hpp @ 14518:d8041d695d19

Merged with jdk9/dev/hotspot changeset 3812c088b945
author twisti
date Tue, 11 Mar 2014 18:45:59 -0700
parents 63a4eb8bcd23
children 4ca6dc0799b6
comparison
equal deleted inserted replaced
14141:f97c5ec83832 14518:d8041d695d19
1 /* 1 /*
2 * Copyright (c) 2001, 2012, Oracle and/or its affiliates. All rights reserved. 2 * Copyright (c) 2001, 2013, Oracle and/or its affiliates. All rights reserved.
3 * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. 3 * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
4 * 4 *
5 * This code is free software; you can redistribute it and/or modify it 5 * This code is free software; you can redistribute it and/or modify it
6 * under the terms of the GNU General Public License version 2 only, as 6 * under the terms of the GNU General Public License version 2 only, as
7 * published by the Free Software Foundation. 7 * published by the Free Software Foundation.
25 #ifndef SHARE_VM_MEMORY_GENREMSET_HPP 25 #ifndef SHARE_VM_MEMORY_GENREMSET_HPP
26 #define SHARE_VM_MEMORY_GENREMSET_HPP 26 #define SHARE_VM_MEMORY_GENREMSET_HPP
27 27
28 #include "oops/oop.hpp" 28 #include "oops/oop.hpp"
29 29
30 // A GenRemSet provides ways of iterating over pointers accross generations. 30 // A GenRemSet provides ways of iterating over pointers across generations.
31 // (This is especially useful for older-to-younger.) 31 // (This is especially useful for older-to-younger.)
32 32
33 class Generation; 33 class Generation;
34 class BarrierSet; 34 class BarrierSet;
35 class OopsInGenClosure; 35 class OopsInGenClosure;
51 51
52 BarrierSet* _bs; 52 BarrierSet* _bs;
53 KlassRemSet _klass_rem_set; 53 KlassRemSet _klass_rem_set;
54 54
55 public: 55 public:
56 enum Name {
57 CardTable,
58 Other
59 };
60
61 GenRemSet(BarrierSet * bs) : _bs(bs) {} 56 GenRemSet(BarrierSet * bs) : _bs(bs) {}
62 GenRemSet() : _bs(NULL) {} 57 GenRemSet() : _bs(NULL) {}
63 58
64 virtual Name rs_kind() = 0;
65
66 // These are for dynamic downcasts. Unfortunately that it names the 59 // These are for dynamic downcasts. Unfortunately that it names the
67 // possible subtypes (but not that they are subtypes!) Return NULL if 60 // possible subtypes (but not that they are subtypes!) Return NULL if
68 // the cast is invalide. 61 // the cast is invalid.
69 virtual CardTableRS* as_CardTableRS() { return NULL; } 62 virtual CardTableRS* as_CardTableRS() { return NULL; }
70 63
71 // Return the barrier set associated with "this." 64 // Return the barrier set associated with "this."
72 BarrierSet* bs() { return _bs; } 65 BarrierSet* bs() { return _bs; }
73 66
104 97
105 // If the rem set imposes any alignment restrictions on boundaries 98 // If the rem set imposes any alignment restrictions on boundaries
106 // within the heap, this function tells whether they are met. 99 // within the heap, this function tells whether they are met.
107 virtual bool is_aligned(HeapWord* addr) = 0; 100 virtual bool is_aligned(HeapWord* addr) = 0;
108 101
109 // If the RS (or BS) imposes an aligment constraint on maximum heap size. 102 // Returns any alignment constraint that the remembered set imposes upon the
110 // (This must be static, and dispatch on "nm", because it is called 103 // heap.
111 // before an RS is created.) 104 static uintx max_alignment_constraint();
112 static uintx max_alignment_constraint(Name nm);
113 105
114 virtual void verify() = 0; 106 virtual void verify() = 0;
115 107
116 // Verify that the remembered set has no entries for 108 // Verify that the remembered set has no entries for
117 // the heap interval denoted by mr. If there are any 109 // the heap interval denoted by mr. If there are any