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