comparison agent/src/share/classes/sun/jvm/hotspot/memory/Universe.java @ 113:ba764ed4b6f2

6420645: Create a vm that uses compressed oops for up to 32gb heapsizes Summary: Compressed oops in instances, arrays, and headers. Code contributors are coleenp, phh, never, swamyv Reviewed-by: jmasa, kamg, acorn, tbell, kvn, rasbold
author coleenp
date Sun, 13 Apr 2008 17:43:42 -0400
parents a61af66fc99e
children d1605aabd0a1
comparison
equal deleted inserted replaced
110:a49a647afe9a 113:ba764ed4b6f2
51 private static sun.jvm.hotspot.types.OopField doubleArrayKlassObjField; 51 private static sun.jvm.hotspot.types.OopField doubleArrayKlassObjField;
52 52
53 // system obj array klass object 53 // system obj array klass object
54 private static sun.jvm.hotspot.types.OopField systemObjArrayKlassObjField; 54 private static sun.jvm.hotspot.types.OopField systemObjArrayKlassObjField;
55 55
56 private static AddressField heapBaseField;
57
56 static { 58 static {
57 VM.registerVMInitializedObserver(new Observer() { 59 VM.registerVMInitializedObserver(new Observer() {
58 public void update(Observable o, Object data) { 60 public void update(Observable o, Object data) {
59 initialize(VM.getVM().getTypeDataBase()); 61 initialize(VM.getVM().getTypeDataBase());
60 } 62 }
81 longArrayKlassObjField = type.getOopField("_longArrayKlassObj"); 83 longArrayKlassObjField = type.getOopField("_longArrayKlassObj");
82 singleArrayKlassObjField = type.getOopField("_singleArrayKlassObj"); 84 singleArrayKlassObjField = type.getOopField("_singleArrayKlassObj");
83 doubleArrayKlassObjField = type.getOopField("_doubleArrayKlassObj"); 85 doubleArrayKlassObjField = type.getOopField("_doubleArrayKlassObj");
84 86
85 systemObjArrayKlassObjField = type.getOopField("_systemObjArrayKlassObj"); 87 systemObjArrayKlassObjField = type.getOopField("_systemObjArrayKlassObj");
88
89 heapBaseField = type.getAddressField("_heap_base");
86 } 90 }
87 91
88 public Universe() { 92 public Universe() {
89 } 93 }
90 94
91 public CollectedHeap heap() { 95 public CollectedHeap heap() {
92 try { 96 try {
93 return (CollectedHeap) heapConstructor.instantiateWrapperFor(collectedHeapField.getValue()); 97 return (CollectedHeap) heapConstructor.instantiateWrapperFor(collectedHeapField.getValue());
94 } catch (WrongTypeException e) { 98 } catch (WrongTypeException e) {
95 return new CollectedHeap(collectedHeapField.getValue()); 99 return new CollectedHeap(collectedHeapField.getValue());
100 }
101 }
102
103 public static long getHeapBase() {
104 if (heapBaseField.getValue() == null) {
105 return 0;
106 } else {
107 return heapBaseField.getValue().minus(null);
96 } 108 }
97 } 109 }
98 110
99 /** Returns "TRUE" iff "p" points into the allocated area of the heap. */ 111 /** Returns "TRUE" iff "p" points into the allocated area of the heap. */
100 public boolean isIn(Address p) { 112 public boolean isIn(Address p) {