mirror of
https://gitflic.ru/project/openide/openide.git
synced 2026-09-27 10:03:11 +07:00
IDEA-164040 breakpoints are not reached
This commit is contained in:
@@ -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<>();
|
||||
|
||||
Reference in New Issue
Block a user