IDEA-164040 breakpoints are not reached

This commit is contained in:
Egor.Ushakov
2016-11-18 12:58:53 +03:00
parent 278e2336ab
commit 3fc772f1fe
3 changed files with 4 additions and 15 deletions
@@ -318,6 +318,7 @@ public class RequestManagerImpl extends DebugProcessAdapterImpl implements Reque
registerRequest(requestor, prepareRequest);
prepareRequest.enable();
}
myDebugProcess.getVirtualMachineProxy().clearCaches(); // to force reload classes available so far
}
public void callbackOnPrepareClasses(ClassPrepareRequestor requestor, String classOrPatternToBeLoaded) {
@@ -330,6 +331,7 @@ public class RequestManagerImpl extends DebugProcessAdapterImpl implements Reque
if (LOG.isDebugEnabled()) {
LOG.debug("classOrPatternToBeLoaded = " + classOrPatternToBeLoaded);
}
myDebugProcess.getVirtualMachineProxy().clearCaches(); // to force reload classes available so far
}
}
@@ -127,25 +127,11 @@ public class VirtualMachineProxyImpl implements JdiTimer, VirtualMachineProxy {
public List<ReferenceType> classesByName(String s) {
String signature = JNITypeParserReflect.typeNameToSignature(s);
if (signature != null) {
boolean firstCall = myAllClassesByName == null;
boolean allClassesWereReady = myAllClasses != null;
if (myAllClassesByName == null) {
myAllClassesByName = new MultiMap<>();
allClasses().forEach(t -> myAllClassesByName.putValue(t.signature(), t));
}
Collection<ReferenceType> res = myAllClassesByName.get(signature);
// TODO: Below is extra logging for IDEA-164040, remove when fixed
if (res.isEmpty()) {
List<ReferenceType> types = myVirtualMachine.classesByName(s);
if (!types.isEmpty()) {
LOG.error("Obsolete classes cache does not contain " + s + ", while the real vm does" +
", firstCall=" + firstCall +
", allClassesWereReady=" + allClassesWereReady);
clearCaches();
}
return types;
}
return (List<ReferenceType>)res;
return (List<ReferenceType>)myAllClassesByName.get(signature);
}
else {
return myVirtualMachine.classesByName(s);
@@ -146,6 +146,7 @@ public class MethodBreakpoint extends BreakpointWithHighlighter<JavaMethodBreakp
if (request != null) {
requestsManager.registerRequest(this, request);
request.enable();
debugProcess.getVirtualMachineProxy().clearCaches(); // to force reload classes available so far
}
AtomicReference<ProgressIndicator> indicatorRef = new AtomicReference<>();