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.memory;
26
27 import java.io.*;
28 import java.util.*;
29 import sun.jvm.hotspot.debugger.*;
30 import sun.jvm.hotspot.gc.cms.CMSHeap;
31 import sun.jvm.hotspot.gc.serial.SerialHeap;
32 import sun.jvm.hotspot.gc.shared.*;
33 import sun.jvm.hotspot.gc.g1.G1CollectedHeap;
34 import sun.jvm.hotspot.gc.parallel.*;
35 import sun.jvm.hotspot.oops.*;
36 import sun.jvm.hotspot.types.*;
37 import sun.jvm.hotspot.runtime.*;
38
39
40 public class Universe {
41 private static AddressField collectedHeapField;
42 private static VirtualConstructor heapConstructor;
43 private static sun.jvm.hotspot.types.OopField mainThreadGroupField;
44 private static sun.jvm.hotspot.types.OopField systemThreadGroupField;
45
46 // single dimensional primitive array klasses
47 private static sun.jvm.hotspot.types.AddressField boolArrayKlassField;
48 private static sun.jvm.hotspot.types.AddressField byteArrayKlassField;
49 private static sun.jvm.hotspot.types.AddressField charArrayKlassField;
50 private static sun.jvm.hotspot.types.AddressField intArrayKlassField;
51 private static sun.jvm.hotspot.types.AddressField shortArrayKlassField;
52 private static sun.jvm.hotspot.types.AddressField longArrayKlassField;
53 private static sun.jvm.hotspot.types.AddressField singleArrayKlassField;
65 }
66
67 static {
68 VM.registerVMInitializedObserver(new Observer() {
69 public void update(Observable o, Object data) {
70 initialize(VM.getVM().getTypeDataBase());
71 }
72 });
73 }
74
75 private static synchronized void initialize(TypeDataBase db) {
76 Type type = db.lookupType("Universe");
77
78 collectedHeapField = type.getAddressField("_collectedHeap");
79
80 heapConstructor = new VirtualConstructor(db);
81 heapConstructor.addMapping("CMSHeap", CMSHeap.class);
82 heapConstructor.addMapping("SerialHeap", SerialHeap.class);
83 heapConstructor.addMapping("ParallelScavengeHeap", ParallelScavengeHeap.class);
84 heapConstructor.addMapping("G1CollectedHeap", G1CollectedHeap.class);
85
86 mainThreadGroupField = type.getOopField("_main_thread_group");
87 systemThreadGroupField = type.getOopField("_system_thread_group");
88
89 boolArrayKlassField = type.getAddressField("_boolArrayKlassObj");
90 byteArrayKlassField = type.getAddressField("_byteArrayKlassObj");
91 charArrayKlassField = type.getAddressField("_charArrayKlassObj");
92 intArrayKlassField = type.getAddressField("_intArrayKlassObj");
93 shortArrayKlassField = type.getAddressField("_shortArrayKlassObj");
94 longArrayKlassField = type.getAddressField("_longArrayKlassObj");
95 singleArrayKlassField = type.getAddressField("_singleArrayKlassObj");
96 doubleArrayKlassField = type.getAddressField("_doubleArrayKlassObj");
97
98 narrowOopBaseField = type.getAddressField("_narrow_oop._base");
99 narrowOopShiftField = type.getCIntegerField("_narrow_oop._shift");
100 narrowKlassBaseField = type.getAddressField("_narrow_klass._base");
101 narrowKlassShiftField = type.getCIntegerField("_narrow_klass._shift");
102
103 UniverseExt.initialize(heapConstructor);
104 }
|
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.memory;
26
27 import java.io.*;
28 import java.util.*;
29 import sun.jvm.hotspot.debugger.*;
30 import sun.jvm.hotspot.gc.cms.CMSHeap;
31 import sun.jvm.hotspot.gc.serial.SerialHeap;
32 import sun.jvm.hotspot.gc.shared.*;
33 import sun.jvm.hotspot.gc.g1.G1CollectedHeap;
34 import sun.jvm.hotspot.gc.epsilon.EpsilonHeap;
35 import sun.jvm.hotspot.gc.parallel.*;
36 import sun.jvm.hotspot.oops.*;
37 import sun.jvm.hotspot.types.*;
38 import sun.jvm.hotspot.runtime.*;
39
40
41 public class Universe {
42 private static AddressField collectedHeapField;
43 private static VirtualConstructor heapConstructor;
44 private static sun.jvm.hotspot.types.OopField mainThreadGroupField;
45 private static sun.jvm.hotspot.types.OopField systemThreadGroupField;
46
47 // single dimensional primitive array klasses
48 private static sun.jvm.hotspot.types.AddressField boolArrayKlassField;
49 private static sun.jvm.hotspot.types.AddressField byteArrayKlassField;
50 private static sun.jvm.hotspot.types.AddressField charArrayKlassField;
51 private static sun.jvm.hotspot.types.AddressField intArrayKlassField;
52 private static sun.jvm.hotspot.types.AddressField shortArrayKlassField;
53 private static sun.jvm.hotspot.types.AddressField longArrayKlassField;
54 private static sun.jvm.hotspot.types.AddressField singleArrayKlassField;
66 }
67
68 static {
69 VM.registerVMInitializedObserver(new Observer() {
70 public void update(Observable o, Object data) {
71 initialize(VM.getVM().getTypeDataBase());
72 }
73 });
74 }
75
76 private static synchronized void initialize(TypeDataBase db) {
77 Type type = db.lookupType("Universe");
78
79 collectedHeapField = type.getAddressField("_collectedHeap");
80
81 heapConstructor = new VirtualConstructor(db);
82 heapConstructor.addMapping("CMSHeap", CMSHeap.class);
83 heapConstructor.addMapping("SerialHeap", SerialHeap.class);
84 heapConstructor.addMapping("ParallelScavengeHeap", ParallelScavengeHeap.class);
85 heapConstructor.addMapping("G1CollectedHeap", G1CollectedHeap.class);
86 heapConstructor.addMapping("EpsilonHeap", EpsilonHeap.class);
87
88 mainThreadGroupField = type.getOopField("_main_thread_group");
89 systemThreadGroupField = type.getOopField("_system_thread_group");
90
91 boolArrayKlassField = type.getAddressField("_boolArrayKlassObj");
92 byteArrayKlassField = type.getAddressField("_byteArrayKlassObj");
93 charArrayKlassField = type.getAddressField("_charArrayKlassObj");
94 intArrayKlassField = type.getAddressField("_intArrayKlassObj");
95 shortArrayKlassField = type.getAddressField("_shortArrayKlassObj");
96 longArrayKlassField = type.getAddressField("_longArrayKlassObj");
97 singleArrayKlassField = type.getAddressField("_singleArrayKlassObj");
98 doubleArrayKlassField = type.getAddressField("_doubleArrayKlassObj");
99
100 narrowOopBaseField = type.getAddressField("_narrow_oop._base");
101 narrowOopShiftField = type.getCIntegerField("_narrow_oop._shift");
102 narrowKlassBaseField = type.getAddressField("_narrow_klass._base");
103 narrowKlassShiftField = type.getCIntegerField("_narrow_klass._shift");
104
105 UniverseExt.initialize(heapConstructor);
106 }
|