comparison agent/src/share/classes/sun/jvm/hotspot/jdi/ReferenceTypeImpl.java @ 6725:da91efe96a93

6964458: Reimplement class meta-data storage to use native memory Summary: Remove PermGen, allocate meta-data in metaspace linked to class loaders, rewrite GC walking, rewrite and rename metadata to be C++ classes Reviewed-by: jmasa, stefank, never, coleenp, kvn, brutisso, mgerdin, dholmes, jrose, twisti, roland Contributed-by: jmasa <jon.masamitsu@oracle.com>, stefank <stefan.karlsson@oracle.com>, mgerdin <mikael.gerdin@oracle.com>, never <tom.rodriguez@oracle.com>
author coleenp
date Sat, 01 Sep 2012 13:25:18 -0400
parents 04ade88d9712
children 29985fccf378
comparison
equal deleted inserted replaced
6724:36d1d483d5d6 6725:da91efe96a93
133 * or in different VMs must not return 0). 133 * or in different VMs must not return 0).
134 */ 134 */
135 ReferenceTypeImpl other = (ReferenceTypeImpl)refType; 135 ReferenceTypeImpl other = (ReferenceTypeImpl)refType;
136 int comp = name().compareTo(other.name()); 136 int comp = name().compareTo(other.name());
137 if (comp == 0) { 137 if (comp == 0) {
138 Oop rf1 = ref(); 138 Klass rf1 = ref();
139 Oop rf2 = other.ref(); 139 Klass rf2 = other.ref();
140 // optimize for typical case: refs equal and VMs equal 140 // optimize for typical case: refs equal and VMs equal
141 if (rf1.equals(rf2)) { 141 if (rf1.equals(rf2)) {
142 // sequenceNumbers are always positive 142 // sequenceNumbers are always positive
143 comp = vm.sequenceNumber - 143 comp = vm.sequenceNumber -
144 ((VirtualMachineImpl)(other.virtualMachine())).sequenceNumber; 144 ((VirtualMachineImpl)(other.virtualMachine())).sequenceNumber;
145 } else { 145 } else {
146 comp = rf1.getHandle().minus(rf2.getHandle()) < 0? -1 : 1; 146 comp = rf1.getAddress().minus(rf2.getAddress()) < 0? -1 : 1;
147 } 147 }
148 } 148 }
149 return comp; 149 return comp;
150 } 150 }
151 151
223 } 223 }
224 224
225 private boolean isThrowableBacktraceField(sun.jvm.hotspot.oops.Field fld) { 225 private boolean isThrowableBacktraceField(sun.jvm.hotspot.oops.Field fld) {
226 // refer to JvmtiEnv::GetClassFields in jvmtiEnv.cpp. 226 // refer to JvmtiEnv::GetClassFields in jvmtiEnv.cpp.
227 // We want to filter out java.lang.Throwable.backtrace (see 4446677). 227 // We want to filter out java.lang.Throwable.backtrace (see 4446677).
228 // It contains some methodOops that aren't quite real Objects. 228 // It contains some Method*s that aren't quite real Objects.
229 if (fld.getFieldHolder().getName().equals(vm.javaLangThrowable()) && 229 if (fld.getFieldHolder().getName().equals(vm.javaLangThrowable()) &&
230 fld.getID().getName().equals("backtrace")) { 230 fld.getID().getName().equals("backtrace")) {
231 return true; 231 return true;
232 } else { 232 } else {
233 return false; 233 return false;
930 return "loaded by bootstrap loader"; 930 return "loaded by bootstrap loader";
931 } 931 }
932 } 932 }
933 933
934 long uniqueID() { 934 long uniqueID() {
935 return vm.getAddressValue(ref()); 935 return vm.getAddressValue(ref().getJavaMirror());
936 } 936 }
937 937
938 // new method since 1.6 938 // new method since 1.6
939 public int majorVersion() { 939 public int majorVersion() {
940 if (!vm.canGetClassFileVersion()) { 940 if (!vm.canGetClassFileVersion()) {