comparison agent/src/share/classes/sun/jvm/hotspot/memory/Universe.java @ 6848:8e47bac5643a

7054512: Compress class pointers after perm gen removal Summary: support of compress class pointers in the compilers. Reviewed-by: kvn, twisti
author roland
date Tue, 09 Oct 2012 10:11:38 +0200
parents da91efe96a93
children
comparison
equal deleted inserted replaced
6847:65d07d9ee446 6848:8e47bac5643a
51 private static sun.jvm.hotspot.types.AddressField singleArrayKlassField; 51 private static sun.jvm.hotspot.types.AddressField singleArrayKlassField;
52 private static sun.jvm.hotspot.types.AddressField doubleArrayKlassField; 52 private static sun.jvm.hotspot.types.AddressField doubleArrayKlassField;
53 53
54 private static AddressField narrowOopBaseField; 54 private static AddressField narrowOopBaseField;
55 private static CIntegerField narrowOopShiftField; 55 private static CIntegerField narrowOopShiftField;
56 private static AddressField narrowKlassBaseField;
57 private static CIntegerField narrowKlassShiftField;
56 58
57 static { 59 static {
58 VM.registerVMInitializedObserver(new Observer() { 60 VM.registerVMInitializedObserver(new Observer() {
59 public void update(Observable o, Object data) { 61 public void update(Observable o, Object data) {
60 initialize(VM.getVM().getTypeDataBase()); 62 initialize(VM.getVM().getTypeDataBase());
84 singleArrayKlassField = type.getAddressField("_singleArrayKlassObj"); 86 singleArrayKlassField = type.getAddressField("_singleArrayKlassObj");
85 doubleArrayKlassField = type.getAddressField("_doubleArrayKlassObj"); 87 doubleArrayKlassField = type.getAddressField("_doubleArrayKlassObj");
86 88
87 narrowOopBaseField = type.getAddressField("_narrow_oop._base"); 89 narrowOopBaseField = type.getAddressField("_narrow_oop._base");
88 narrowOopShiftField = type.getCIntegerField("_narrow_oop._shift"); 90 narrowOopShiftField = type.getCIntegerField("_narrow_oop._shift");
91 narrowKlassBaseField = type.getAddressField("_narrow_klass._base");
92 narrowKlassShiftField = type.getCIntegerField("_narrow_klass._shift");
89 } 93 }
90 94
91 public Universe() { 95 public Universe() {
92 } 96 }
93 97
108 } 112 }
109 113
110 public static int getNarrowOopShift() { 114 public static int getNarrowOopShift() {
111 return (int)narrowOopShiftField.getValue(); 115 return (int)narrowOopShiftField.getValue();
112 } 116 }
117
118 public static long getNarrowKlassBase() {
119 if (narrowKlassBaseField.getValue() == null) {
120 return 0;
121 } else {
122 return narrowKlassBaseField.getValue().minus(null);
123 }
124 }
125
126 public static int getNarrowKlassShift() {
127 return (int)narrowKlassShiftField.getValue();
128 }
129
113 130
114 /** Returns "TRUE" iff "p" points into the allocated area of the heap. */ 131 /** Returns "TRUE" iff "p" points into the allocated area of the heap. */
115 public boolean isIn(Address p) { 132 public boolean isIn(Address p) {
116 return heap().isIn(p); 133 return heap().isIn(p);
117 } 134 }