Package com.oracle.truffle.api.instrument

## Class ProbeNode

- java.lang.Object
- - com.oracle.truffle.api.nodes.Node
  - - com.oracle.truffle.api.instrument.ProbeNode

All Implemented Interfaces:
  `InstrumentationNode`, `TruffleEventReceiver`, `NodeInterface`, `java.lang.Cloneable`

    public abstract class ProbeNode
    extends Node
    implements TruffleEventReceiver, InstrumentationNode

Implementation interfaces and classes for attaching `Probe`s to `ProbeNode.WrapperNode`s.

### Nested Class Summary

Nested Classes
`static interface` `ProbeNode.Instrumentable` Any Truffle node implementing this interface can be "instrumented" by installing a `Probe` that intercepts execution events at the node and routes them to any `Instrument`s that have been attached to the `Probe`.
`static interface` `ProbeNode.WrapperNode` A node that can be inserted into a Truffle AST, and which enables instrumentation at a particular Guest Language (GL) node.

### Nested classes/interfaces inherited from class com.oracle.truffle.api.nodes.Node

`Node.Child, Node.Children`

### Constructor Summary

Constructors
`ProbeNode()`

### Method Summary

All Methods Static Methods Instance Methods Abstract Methods Concrete Methods
`abstract Probe` `getProbe()`
`static Probe` `insertProbe​(ProbeNode.WrapperNode wrapper)` Create a new `Probe` associated with, and attached to, a Guest Language specific instance of `ProbeNode.WrapperNode`.
`static void` `insertProbeLite​(ProbeNode.WrapperNode wrapper, TruffleEventReceiver eventReceiver)` Creates a new `ProbeNode.ProbeLiteNode` associated with, and attached to, a Guest Language specific instance of `ProbeNode.WrapperNode`.

### Methods inherited from class com.oracle.truffle.api.nodes.Node

`accept, adoptChildren, assignSourceSection, atomic, atomic, clearSourceSection, clone, copy, getChildren, getCost, getDebugProperties, getDescription, getEncapsulatingSourceSection, getLanguage, getParent, getRootNode, getSourceSection, insert, insert, isReplaceable, onAdopt, onReplace, replace, replace, toString`

### Methods inherited from class java.lang.Object

`equals, finalize, getClass, hashCode, notify, notifyAll, wait, wait, wait`

### Methods inherited from interface com.oracle.truffle.api.instrument.InstrumentationNode

`instrumentationInfo`

### Methods inherited from interface com.oracle.truffle.api.instrument.TruffleEventReceiver

`enter, returnExceptional, returnValue, returnVoid`

### Constructor Detail

#### ProbeNode

    public ProbeNode()

### Method Detail

#### insertProbe

    public static Probe insertProbe​(ProbeNode.WrapperNode wrapper)

Create a new `Probe` associated with, and attached to, a Guest Language specific instance of `ProbeNode.WrapperNode`.

#### insertProbeLite

    public static void insertProbeLite​(ProbeNode.WrapperNode wrapper,
                                       TruffleEventReceiver eventReceiver)

Creates a new `ProbeNode.ProbeLiteNode` associated with, and attached to, a Guest Language specific instance of `ProbeNode.WrapperNode`.

#### getProbe

    public abstract Probe getProbe()
                            throws java.lang.IllegalStateException

Returns:
  the `Probe` permanently associated with this `ProbeNode`.
Throws:
  `java.lang.IllegalStateException` - if this location was "lite-Probed"