# HG changeset patch # Parent 42737fa6b0b3dae0206a4a4e8935865cae1717ff diff --git a/src/share/classes/com/sun/tools/jdi/ReferenceTypeImpl.java b/src/share/classes/com/sun/tools/jdi/ReferenceTypeImpl.java --- a/src/share/classes/com/sun/tools/jdi/ReferenceTypeImpl.java +++ b/src/share/classes/com/sun/tools/jdi/ReferenceTypeImpl.java @@ -33,7 +33,7 @@ public abstract class ReferenceTypeImpl extends TypeImpl implements ReferenceType { protected long ref; - private String signature = null; + protected String signature = null; private String genericSignature = null; private boolean genericSignatureGotten = false; private String baseSourceName = null; diff --git a/src/share/classes/com/sun/tools/jdi/VirtualMachineImpl.java b/src/share/classes/com/sun/tools/jdi/VirtualMachineImpl.java --- a/src/share/classes/com/sun/tools/jdi/VirtualMachineImpl.java +++ b/src/share/classes/com/sun/tools/jdi/VirtualMachineImpl.java @@ -779,6 +779,13 @@ */ if (signature != null) { type.setSignature(signature); + } else if (type.signature == null) { + // Looking at the signature field directly, since signature() + // method does a remote call, which we want to avoid. + // We are guaranteed to have a signature for classes that are + // prepared. Since we have no signature here, this class must + // not be prepared, so do not cache. + return type; } typesByID.put(new Long(id), type);