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 package sun.jvm.hotspot.gc.shared;
26
27 import java.io.*;
28 import java.util.*;
29
30 import sun.jvm.hotspot.debugger.*;
31 import sun.jvm.hotspot.runtime.*;
32 import sun.jvm.hotspot.types.*;
33 import sun.jvm.hotspot.utilities.*;
34
35 abstract public class GenCollectedHeap extends CollectedHeap {
36 private static AddressField youngGenField;
37 private static AddressField oldGenField;
38
39 private static AddressField youngGenSpecField;
40 private static AddressField oldGenSpecField;
41
42 private static GenerationFactory genFactory;
43
44 static {
45 VM.registerVMInitializedObserver(new Observer() {
46 public void update(Observable o, Object data) {
47 initialize(VM.getVM().getTypeDataBase());
48 }
49 });
50 }
114
115 /** Package-private access to GenerationSpecs */
116 GenerationSpec spec(int level) {
117 if (Assert.ASSERTS_ENABLED) {
118 Assert.that((level == 0) || (level == 1), "Index " + level +
119 " out of range (should be 0 or 1)");
120 }
121
122 if ((level != 0) && (level != 1)) {
123 return null;
124 }
125
126 if (level == 0) {
127 return (GenerationSpec)
128 VMObjectFactory.newObject(GenerationSpec.class,
129 youngGenSpecField.getAddress());
130 } else {
131 return (GenerationSpec)
132 VMObjectFactory.newObject(GenerationSpec.class,
133 oldGenSpecField.getAddress());
134 }
135 }
136
137 public void printOn(PrintStream tty) {
138 for (int i = 0; i < nGens(); i++) {
139 tty.print("Gen " + i + ": ");
140 getGen(i).printOn(tty);
141 tty.println("Invocations: " + getGen(i).invocations());
142 tty.println();
143 }
144 }
145 }
|
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 package sun.jvm.hotspot.gc.shared;
26
27 import java.io.*;
28 import java.util.*;
29
30 import sun.jvm.hotspot.debugger.*;
31 import sun.jvm.hotspot.gc.shared.*;
32 import sun.jvm.hotspot.runtime.*;
33 import sun.jvm.hotspot.types.*;
34 import sun.jvm.hotspot.utilities.*;
35
36 abstract public class GenCollectedHeap extends CollectedHeap {
37 private static AddressField youngGenField;
38 private static AddressField oldGenField;
39
40 private static AddressField youngGenSpecField;
41 private static AddressField oldGenSpecField;
42
43 private static GenerationFactory genFactory;
44
45 static {
46 VM.registerVMInitializedObserver(new Observer() {
47 public void update(Observable o, Object data) {
48 initialize(VM.getVM().getTypeDataBase());
49 }
50 });
51 }
115
116 /** Package-private access to GenerationSpecs */
117 GenerationSpec spec(int level) {
118 if (Assert.ASSERTS_ENABLED) {
119 Assert.that((level == 0) || (level == 1), "Index " + level +
120 " out of range (should be 0 or 1)");
121 }
122
123 if ((level != 0) && (level != 1)) {
124 return null;
125 }
126
127 if (level == 0) {
128 return (GenerationSpec)
129 VMObjectFactory.newObject(GenerationSpec.class,
130 youngGenSpecField.getAddress());
131 } else {
132 return (GenerationSpec)
133 VMObjectFactory.newObject(GenerationSpec.class,
134 oldGenSpecField.getAddress());
135 }
136 }
137
138 public void liveRegionsIterate(LiveRegionsClosure closure) {
139 // Run through all generations, obtaining bottom-top pairs.
140 for (int i = 0; i < nGens(); i++) {
141 Generation gen = getGen(i);
142 gen.liveRegionsIterate(closure);
143 }
144 }
145
146 public void printOn(PrintStream tty) {
147 for (int i = 0; i < nGens(); i++) {
148 tty.print("Gen " + i + ": ");
149 getGen(i).printOn(tty);
150 tty.println("Invocations: " + getGen(i).invocations());
151 tty.println();
152 }
153 }
154 }
|