Mercurial > hg > truffle
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 } |