@Override public void enter(Node node, VirtualFrame frame) { this.probe.checkProbeUnchanged(); final BeforeTagInstrument beforeTagInstrument = probe.getBeforeTagInstrument(); if (beforeTagInstrument != null) { beforeTagInstrument .getListener() .onEnter(probe, ((WrapperNode) this.getParent()).getChild(), frame); } if (firstInstrumentNode != null) { firstInstrumentNode.enter(node, frame); } }
@Override public void returnVoid(Node node, VirtualFrame frame) { this.probe.checkProbeUnchanged(); if (firstInstrumentNode != null) { firstInstrumentNode.returnVoid(node, frame); } final AfterTagInstrument afterTagInstrument = probe.getAfterTagInstrument(); if (afterTagInstrument != null) { afterTagInstrument .getListener() .onReturnVoid(probe, ((WrapperNode) this.getParent()).getChild(), frame); } }
@Override public void returnExceptional(Node node, VirtualFrame frame, Throwable exception) { if (exception instanceof KillException) { throw (KillException) exception; } if (exception instanceof QuitException) { throw (QuitException) exception; } this.probe.checkProbeUnchanged(); if (firstInstrumentNode != null) { firstInstrumentNode.returnExceptional(node, frame, exception); } final AfterTagInstrument afterTagInstrument = probe.getAfterTagInstrument(); if (afterTagInstrument != null) { afterTagInstrument .getListener() .onReturnExceptional( probe, ((WrapperNode) this.getParent()).getChild(), frame, exception); } }