Mercurial > hg > truffle
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()) { |