if (!sessionsUnchanged.isValid()) { CompilerDirectives.transferToInterpreterAndInvalidate(); initializeSessions(); List<DebuggerSession> sessionsWithUniqueNodes = null; for (DebuggerSession session : debuggerSessions) { if (consumeIsDuplicate(session)) { if (sessionsWithUniqueNodes == null) { if (debuggerSessions.length == 1) { CompilerDirectives.transferToInterpreterAndInvalidate(); if (breakpoint.condition != null) { this.breakCondition = insert(new ConditionalBreakNode(context, breakpoint)); notifyInserted(this.breakCondition); } else { this.breakCondition = null; if (!testCondition(frame)) { return result;
/** * Returns <code>true</code> if it should appear in the breakpoints list. * * @throws BreakpointConditionFailure */ boolean notifyIndirectHit(DebuggerNode source, DebuggerNode node, MaterializedFrame frame) throws BreakpointConditionFailure { if (!isEnabled()) { return false; } assert node.getBreakpoint() == this; if (source != node) { // TODO: We're testing the breakpoint condition for a second time (GR-7398). if (!((AbstractBreakpointNode) node).shouldBreak(frame)) { return false; } } else { // don't do the assert here, the breakpoint condition might have side effects. // assert ((BreakpointNode) node).shouldBreak(frame); } if (this.hitCount.incrementAndGet() <= ignoreCount) { // breakpoint hit was ignored return false; } if (isOneShot()) { setEnabled(false); } return true; }
if (!((AbstractBreakpointNode) node).testCondition(frame)) { return false;
if (!sessionsUnchanged.isValid()) { CompilerDirectives.transferToInterpreterAndInvalidate(); initializeSessions(); CompilerDirectives.transferToInterpreterAndInvalidate(); if (breakpoint.condition != null) { this.breakCondition = insert(new ConditionalBreakNode(context, breakpoint)); notifyInserted(this.breakCondition); } else { this.breakCondition = null; if (!shouldBreak(frame)) { return;
boolean testCondition(VirtualFrame frame) throws BreakpointConditionFailure { if (!conditionExistsUnchanged.isValid()) { CompilerDirectives.transferToInterpreterAndInvalidate(); if (breakpoint.condition != null) { this.breakCondition = insert(new ConditionalBreakNode(context, breakpoint)); notifyInserted(this.breakCondition); } else { this.breakCondition = null; } conditionExistsUnchanged = breakpoint.getConditionExistsUnchanged(); } if (breakCondition != null) { try { return breakCondition.executeBreakCondition(frame, sessions); } catch (Throwable e) { CompilerDirectives.transferToInterpreter(); throw new BreakpointConditionFailure(breakpoint, e); } } return true; }
final DebuggerSession[] getSessions() { if (!sessionsUnchanged.isValid()) { CompilerDirectives.transferToInterpreterAndInvalidate(); initializeSessions(); } return sessions; }
AbstractBreakpointNode(Breakpoint breakpoint, EventContext context) { super(context); this.breakpoint = breakpoint; initializeSessions(); this.conditionExistsUnchanged = breakpoint.getConditionExistsUnchanged(); if (breakpoint.condition != null) { this.breakCondition = new ConditionalBreakNode(context, breakpoint); } }
AbstractBreakpointNode(Breakpoint breakpoint, EventContext context) { super(context); this.breakpoint = breakpoint; initializeSessions(); this.conditionExistsUnchanged = breakpoint.getConditionExistsUnchanged(); if (breakpoint.condition != null) { this.breakCondition = new ConditionalBreakNode(context, breakpoint); } }