public static interface ProbeNode.WrapperNode extends InstrumentationNode
The implementation must be GL-specific. A wrapper decorates a GL AST node (the wrapper's child) by acting as a transparent proxy with respect to the GL's execution semantics.
Instrumentation at the wrapped node is implemented by an instance of ProbeNode
attached as a second child of the ProbeNode.WrapperNode
.
A wrapper is obliged to notify its attached ProbeNode
when execution events occur at
the wrapped AST node during program execution.
When a GL AST is cloned, the ProbeNode.WrapperNode
, its ProbeNode
and any
instrumentation are also cloned; they are in effect part of the GL
AST. An instance of Probe
represents abstractly the instrumentation at a particular
location in a GL AST; it tracks all the copies of the Wrapper and attached instrumentation,
and acts as a single point of access for tools.
This interface is not intended to be visible as part of the API for tools (instrumentation clients).
Implementation guidelines:
@Child private <GL>Node child;
@Child private ProbeNode probeNode;
Probe getProbe()
should be implemented as probeNode.getProbe();
insertProbe(ProbeNode)
should be implemented as
this.probeNode=insert(newProbeNode);
Instrument
s.Disclaimer: experimental interface under development.
Instrument
Modifier and Type | Method and Description |
---|---|
Node |
getChild()
Gets the node being "wrapped", i.e.
|
Probe |
getProbe()
Gets the
Probe responsible for installing this wrapper; none if the wrapper
installed via "lite-Probing". |
void |
insertProbe(ProbeNode probeNode)
Implementation support for completing a newly created wrapper node.
|
instrumentationInfo
Node getChild()
Probe getProbe()
Probe
responsible for installing this wrapper; none if the wrapper
installed via "lite-Probing".void insertProbe(ProbeNode probeNode)