You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@netbeans.apache.org by en...@apache.org on 2021/01/09 23:51:50 UTC
[netbeans] branch master updated: Be sure to remove breakpoint
event interceptor, when it wasn't used.
This is an automated email from the ASF dual-hosted git repository.
entl pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/netbeans.git
The following commit(s) were added to refs/heads/master by this push:
new 0535f96 Be sure to remove breakpoint event interceptor, when it wasn't used.
new 4d92aa6 Merge pull request #2658 from entlicher/EventsInterceptFix
0535f96 is described below
commit 0535f963e33e93411a629b35fd9b2242f00ebbee
Author: Martin Entlicher <ma...@oracle.com>
AuthorDate: Sat Jan 9 20:45:52 2021 +0100
Be sure to remove breakpoint event interceptor, when it wasn't used.
---
.../modules/debugger/jpda/truffle/access/TruffleAccess.java | 10 +++++++---
1 file changed, 7 insertions(+), 3 deletions(-)
diff --git a/java/debugger.jpda.truffle/src/org/netbeans/modules/debugger/jpda/truffle/access/TruffleAccess.java b/java/debugger.jpda.truffle/src/org/netbeans/modules/debugger/jpda/truffle/access/TruffleAccess.java
index 0a08453..6560dd5 100644
--- a/java/debugger.jpda.truffle/src/org/netbeans/modules/debugger/jpda/truffle/access/TruffleAccess.java
+++ b/java/debugger.jpda.truffle/src/org/netbeans/modules/debugger/jpda/truffle/access/TruffleAccess.java
@@ -270,17 +270,20 @@ public class TruffleAccess implements JPDABreakpointListener {
ThreadReference tr = threadImpl.getThreadReference();
try {
Method suspendHereMethod = ClassTypeWrapper.concreteMethodByName(debugAccessorClass, METHOD_SUSPEND_HERE, METHOD_SUSPEND_HERE_SGN);
+ JPDADebuggerImpl debugger = threadImpl.getDebugger();
Value haltInfo;
Lock writeLock = threadImpl.accessLock.writeLock();
+ Function<EventSet, Boolean> breakpointEventInterceptor = null;
try {
writeLock.lock();
- skipSuspendedEventClearLeakingReferences(threadImpl.getDebugger(), thread);
+ breakpointEventInterceptor = skipSuspendedEventClearLeakingReferences(debugger, thread);
haltInfo = ClassTypeWrapper.invokeMethod(debugAccessorClass, tr, suspendHereMethod, Collections.emptyList(), ObjectReference.INVOKE_SINGLE_THREADED);
} finally {
+ ((JPDADebuggerImpl) debugger).getOperator().removeEventInterceptor(breakpointEventInterceptor);
writeLock.unlock();
}
if (haltInfo instanceof ObjectReference) {
- return (ObjectVariable) threadImpl.getDebugger().getVariable(haltInfo);
+ return (ObjectVariable) debugger.getVariable(haltInfo);
}
} catch (InvocationException ex) {
Exceptions.printStackTrace(ex);
@@ -290,7 +293,7 @@ public class TruffleAccess implements JPDABreakpointListener {
return null;
}
- private static void skipSuspendedEventClearLeakingReferences(JPDADebugger debugger, JPDAThread thread) {
+ private static Function<EventSet, Boolean> skipSuspendedEventClearLeakingReferences(JPDADebugger debugger, JPDAThread thread) {
ThreadReference tr = ((JPDAThreadImpl) thread).getThreadReference();
MethodBreakpoint clearLeakingReferencesBreakpoint = MethodBreakpoint.create("com.oracle.truffle.api.debug.SuspendedEvent", "clearLeakingReferences");
clearLeakingReferencesBreakpoint.setBreakpointType(MethodBreakpoint.TYPE_METHOD_ENTRY);
@@ -340,6 +343,7 @@ public class TruffleAccess implements JPDABreakpointListener {
});
((JPDADebuggerImpl) debugger).getOperator().addEventInterceptor(breakpointEventInterceptor);
DebuggerManager.getDebuggerManager().addBreakpoint(clearLeakingReferencesBreakpoint);
+ return breakpointEventInterceptor;
}
@Override
---------------------------------------------------------------------
To unsubscribe, e-mail: commits-unsubscribe@netbeans.apache.org
For additional commands, e-mail: commits-help@netbeans.apache.org
For further information about the NetBeans mailing lists, visit:
https://cwiki.apache.org/confluence/display/NETBEANS/Mailing+lists