agent/src/share/classes/sun/jvm/hotspot/oops/ObjectHeap.java
Index Unified diffs Context diffs Sdiffs Patch New Old Previous File Next File 7031614 Sdiff agent/src/share/classes/sun/jvm/hotspot/oops

agent/src/share/classes/sun/jvm/hotspot/oops/ObjectHeap.java

Print this page




 345     if (handle.equals(shortArrayKlassHandle))          return getShortArrayKlassObj();
 346     if (handle.equals(longArrayKlassHandle))           return getLongArrayKlassObj();
 347     if (handle.equals(singleArrayKlassHandle))         return getSingleArrayKlassObj();
 348     if (handle.equals(doubleArrayKlassHandle))         return getDoubleArrayKlassObj();
 349     if (!VM.getVM().isCore()) {
 350       if (handle.equals(compiledICHolderKlassHandle))  return getCompiledICHolderKlassObj();
 351       if (handle.equals(methodDataKlassHandle))        return getMethodDataKlassObj();
 352     }
 353 
 354     // Then check if obj.klass() is one of the root objects
 355     OopHandle klass = Oop.getKlassForOopHandle(handle);
 356     if (klass != null) {
 357       if (klass.equals(methodKlassHandle))              return new Method(handle, this);
 358       if (klass.equals(constMethodKlassHandle))         return new ConstMethod(handle, this);
 359       if (klass.equals(constantPoolKlassHandle))        return new ConstantPool(handle, this);
 360       if (klass.equals(constantPoolCacheKlassHandle))   return new ConstantPoolCache(handle, this);
 361       if (!VM.getVM().isCore()) {
 362         if (klass.equals(compiledICHolderKlassHandle))  return new CompiledICHolder(handle, this);
 363         if (klass.equals(methodDataKlassHandle))        return new MethodData(handle, this);
 364       }
 365       if (klass.equals(instanceKlassKlassHandle))       return new InstanceKlass(handle, this);









 366       if (klass.equals(objArrayKlassKlassHandle))       return new ObjArrayKlass(handle, this);
 367       if (klass.equals(typeArrayKlassKlassHandle))      return new TypeArrayKlass(handle, this);
 368 
 369       // Lastly check if obj.klass().klass() is on of the root objects
 370       OopHandle klassKlass = Oop.getKlassForOopHandle(klass);
 371       if (klassKlass != null) {
 372         if (klassKlass.equals(instanceKlassKlassHandle))    return new Instance(handle, this);
 373         if (klassKlass.equals(objArrayKlassKlassHandle))    return new ObjArray(handle, this);
 374         if (klassKlass.equals(typeArrayKlassKlassHandle))   return new TypeArray(handle, this);
 375       }
 376     }
 377 
 378     if (DEBUG) {
 379       System.err.println("Unknown oop at " + handle);
 380       System.err.println("Oop's klass is " + klass);
 381     }
 382 
 383     throw new UnknownOopException();
 384   }
 385 




 345     if (handle.equals(shortArrayKlassHandle))          return getShortArrayKlassObj();
 346     if (handle.equals(longArrayKlassHandle))           return getLongArrayKlassObj();
 347     if (handle.equals(singleArrayKlassHandle))         return getSingleArrayKlassObj();
 348     if (handle.equals(doubleArrayKlassHandle))         return getDoubleArrayKlassObj();
 349     if (!VM.getVM().isCore()) {
 350       if (handle.equals(compiledICHolderKlassHandle))  return getCompiledICHolderKlassObj();
 351       if (handle.equals(methodDataKlassHandle))        return getMethodDataKlassObj();
 352     }
 353 
 354     // Then check if obj.klass() is one of the root objects
 355     OopHandle klass = Oop.getKlassForOopHandle(handle);
 356     if (klass != null) {
 357       if (klass.equals(methodKlassHandle))              return new Method(handle, this);
 358       if (klass.equals(constMethodKlassHandle))         return new ConstMethod(handle, this);
 359       if (klass.equals(constantPoolKlassHandle))        return new ConstantPool(handle, this);
 360       if (klass.equals(constantPoolCacheKlassHandle))   return new ConstantPoolCache(handle, this);
 361       if (!VM.getVM().isCore()) {
 362         if (klass.equals(compiledICHolderKlassHandle))  return new CompiledICHolder(handle, this);
 363         if (klass.equals(methodDataKlassHandle))        return new MethodData(handle, this);
 364       }
 365       if (klass.equals(instanceKlassKlassHandle)) {
 366           InstanceKlass ik = new InstanceKlass(handle, this);
 367           if (ik.getName().asString().equals("java/lang/Class")) {
 368               // We would normally do this using the vtable style
 369               // lookup but since it's not used for these currently
 370               // it's simpler to just check for the name.
 371               return new InstanceMirrorKlass(handle, this);
 372           }
 373           return ik;
 374       }
 375       if (klass.equals(objArrayKlassKlassHandle))       return new ObjArrayKlass(handle, this);
 376       if (klass.equals(typeArrayKlassKlassHandle))      return new TypeArrayKlass(handle, this);
 377 
 378       // Lastly check if obj.klass().klass() is on of the root objects
 379       OopHandle klassKlass = Oop.getKlassForOopHandle(klass);
 380       if (klassKlass != null) {
 381         if (klassKlass.equals(instanceKlassKlassHandle))    return new Instance(handle, this);
 382         if (klassKlass.equals(objArrayKlassKlassHandle))    return new ObjArray(handle, this);
 383         if (klassKlass.equals(typeArrayKlassKlassHandle))   return new TypeArray(handle, this);
 384       }
 385     }
 386 
 387     if (DEBUG) {
 388       System.err.println("Unknown oop at " + handle);
 389       System.err.println("Oop's klass is " + klass);
 390     }
 391 
 392     throw new UnknownOopException();
 393   }
 394 


agent/src/share/classes/sun/jvm/hotspot/oops/ObjectHeap.java
Index Unified diffs Context diffs Sdiffs Patch New Old Previous File Next File