comparison truffle/com.oracle.truffle.sl/src/com/oracle/truffle/sl/nodes/instrument/SLStatementWrapperNode.java @ 22226:c896a8e70777

Truffle/Instrumentation: Redesign instrumentation node classes to reduce the public API exposure. - ProbeNode is no longer public - Public interface InstrumentationNode.TruffleEvents is now abstract class EventHandlerNode with package private constructor - Interface ProbeNode.WrapperNode is no longer inside ProbeNode and has been expanded slightly so ProbeNode can be package private
author Michael Van De Vanter <michael.van.de.vanter@oracle.com>
date Sun, 20 Sep 2015 15:51:39 -0700
parents dc83cc1f94f2
children 68a0c3dcea10
comparison
equal deleted inserted replaced
22225:a0fa69e3e60e 22226:c896a8e70777
39 * SOFTWARE. 39 * SOFTWARE.
40 */ 40 */
41 package com.oracle.truffle.sl.nodes.instrument; 41 package com.oracle.truffle.sl.nodes.instrument;
42 42
43 import com.oracle.truffle.api.frame.VirtualFrame; 43 import com.oracle.truffle.api.frame.VirtualFrame;
44 import com.oracle.truffle.api.instrument.EventHandlerNode;
44 import com.oracle.truffle.api.instrument.Instrument; 45 import com.oracle.truffle.api.instrument.Instrument;
45 import com.oracle.truffle.api.instrument.KillException; 46 import com.oracle.truffle.api.instrument.KillException;
46 import com.oracle.truffle.api.instrument.Probe; 47 import com.oracle.truffle.api.instrument.Probe;
47 import com.oracle.truffle.api.instrument.ProbeNode; 48 import com.oracle.truffle.api.instrument.WrapperNode;
48 import com.oracle.truffle.api.instrument.ProbeNode.WrapperNode;
49 import com.oracle.truffle.api.nodes.Node; 49 import com.oracle.truffle.api.nodes.Node;
50 import com.oracle.truffle.api.nodes.NodeCost; 50 import com.oracle.truffle.api.nodes.NodeCost;
51 import com.oracle.truffle.api.nodes.NodeInfo; 51 import com.oracle.truffle.api.nodes.NodeInfo;
52 import com.oracle.truffle.sl.nodes.SLStatementNode; 52 import com.oracle.truffle.sl.nodes.SLStatementNode;
53 53
59 */ 59 */
60 @NodeInfo(cost = NodeCost.NONE) 60 @NodeInfo(cost = NodeCost.NONE)
61 public final class SLStatementWrapperNode extends SLStatementNode implements WrapperNode { 61 public final class SLStatementWrapperNode extends SLStatementNode implements WrapperNode {
62 62
63 @Child private SLStatementNode child; 63 @Child private SLStatementNode child;
64 @Child private ProbeNode probeNode; 64 @Child private EventHandlerNode eventHandlerNode;
65 65
66 public SLStatementWrapperNode(SLStatementNode child) { 66 public SLStatementWrapperNode(SLStatementNode child) {
67 super(child.getSourceSection()); 67 super(child.getSourceSection());
68 assert !(child instanceof SLStatementWrapperNode); 68 assert !(child instanceof SLStatementWrapperNode);
69 this.child = child; 69 this.child = child;
81 @Override 81 @Override
82 public SLStatementNode getNonWrapperNode() { 82 public SLStatementNode getNonWrapperNode() {
83 return child; 83 return child;
84 } 84 }
85 85
86 public void insertProbe(ProbeNode newProbeNode) { 86 @Override
87 this.probeNode = newProbeNode; 87 public void insertEventHandlerNode(EventHandlerNode eventHandler) {
88 this.eventHandlerNode = eventHandler;
88 } 89 }
89 90
90 public Probe getProbe() { 91 public Probe getProbe() {
91 return probeNode.getProbe(); 92 return eventHandlerNode.getProbe();
92 } 93 }
93 94
94 @Override 95 @Override
95 public Node getChild() { 96 public Node getChild() {
96 return child; 97 return child;
97 } 98 }
98 99
99 @Override 100 @Override
100 public void executeVoid(VirtualFrame vFrame) { 101 public void executeVoid(VirtualFrame vFrame) {
101 probeNode.enter(child, vFrame); 102 eventHandlerNode.enter(child, vFrame);
102 103
103 try { 104 try {
104 child.executeVoid(vFrame); 105 child.executeVoid(vFrame);
105 probeNode.returnVoid(child, vFrame); 106 eventHandlerNode.returnVoid(child, vFrame);
106 } catch (KillException e) { 107 } catch (KillException e) {
107 throw (e); 108 throw (e);
108 } catch (Exception e) { 109 } catch (Exception e) {
109 probeNode.returnExceptional(child, vFrame, e); 110 eventHandlerNode.returnExceptional(child, vFrame, e);
110 throw (e); 111 throw (e);
111 } 112 }
112 } 113 }
113 114
114 } 115 }