com.oracle.truffle.api.instrument

## Interface ProbeNode.Instrumentable

Enclosing class:
  ProbeNode

    public 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`. Only one `Probe` may be installed at each node; subsequent calls return the one already installed.

See Also:
  `Instrument`

### Method Summary

Methods
`Probe` `probe()` Enables "instrumentation" of a Guest Language Truffle node, where the node is presumed to be part of a well-formed Truffle AST that is not being executed.
`void` `probeLite(TruffleEventReceiver eventReceiver)` Enables a one-time, unchangeable "instrumentation" of a Guest Language Truffle node, where the node is presumed to be part of a well-formed Truffle AST that is not being executed.

### Method Detail

#### probe

    Probe probe()

Enables "instrumentation" of a Guest Language Truffle node, where the node is presumed to be part of a well-formed Truffle AST that is not being executed. The AST may be modified as a side effect.

This interface is not intended to be visible as part of the API for tools (instrumentation clients).

Returns:
  a (possibly newly created) `Probe` associated with this node.

#### probeLite

    void probeLite(TruffleEventReceiver eventReceiver)

Enables a one-time, unchangeable "instrumentation" of a Guest Language Truffle node, where the node is presumed to be part of a well-formed Truffle AST that is not being executed. The AST may be modified as a side-effect. Unlike `probe()`, once `probeLite(TruffleEventReceiver)` is called at a node, no additional probing can be added and no additional instrumentation can be attached.

This interface is not intended to be visible as part of the API for tools (instrumentation clients).

Parameters:
  `eventReceiver` - The `TruffleEventReceiver` for the single "instrument" being attached to this node.