Package ghidra.pcode.emu.jit.op

# Record Class JitNopOp

java.lang.Object
java.lang.Record
ghidra.pcode.emu.jit.op.JitNopOp

Record Components:
  `op` - the p-code op

All Implemented Interfaces:
  `JitOp`

public record JitNopOp(PcodeOp op) extends Record implements JitOp
The use-def node for a `JitPassage.NopPcodeOp` or an inlined `PcodeOp.CALLOTHER`.

When a callother is inlined, we preserve the original op for bookkeeping, but ensure that no code is emitted for it by wrapping it in this use-def node class.

- ## Constructor Summary

  Constructors
  Constructor
  Description
  `JitNopOp(PcodeOp op)`
  Creates an instance of a `JitNopOp` record class.

- ## Method Summary

  Modifier and Type
  Method
  Description
  `boolean`
  `canBeRemoved()`
  Indicates the operation can be removed if its output is never used.
  `final boolean`
  `equals(Object o)`
  Indicates whether some other object is "equal to" this one.
  `final int`
  `hashCode()`
  Returns a hash code value for this object.
  `List<JitVal>`
  `inputs()`
  The input operand use-def nodes in some defined order
  `void`
  `link()`
  Add this op to the `JitVal.uses()` of each input operand, and (if applicable) set the `JitOutVar.definition()` of the output operand to this op.
  `PcodeOp`
  `op()`
  Returns the value of the `op` record component.
  `final String`
  `toString()`
  Returns a string representation of this record class.
  `JitTypeBehavior`
  `typeFor(int position)`
  Get the required type behavior for the input at the given position in `JitOp.inputs()`
  `void`
  `unlink()`
  Remove this op from the `JitVal.uses()` of each input operand, and (if applicable) unset the `JitOutVar.definition()` of the output operand.

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

  `clone, finalize, getClass, notify, notifyAll, wait, wait, wait`

- ## Constructor Details

  - ### JitNopOp

    public JitNopOp(PcodeOp op)
    Creates an instance of a `JitNopOp` record class.
    Parameters:
      `op` - the value for the `op` record component

- ## Method Details

  - ### canBeRemoved

    public boolean canBeRemoved()
    Description copied from interface: `JitOp`
    Indicates the operation can be removed if its output is never used.
    Specified by:
      `canBeRemoved` in interface `JitOp`
    Returns:
      true if removable

  - ### link

    public void link()
    Description copied from interface: `JitOp`
    Add this op to the `JitVal.uses()` of each input operand, and (if applicable) set the `JitOutVar.definition()` of the output operand to this op.
    Specified by:
      `link` in interface `JitOp`

  - ### unlink

    public void unlink()
    Description copied from interface: `JitOp`
    Remove this op from the `JitVal.uses()` of each input operand, and (if applicable) unset the `JitOutVar.definition()` of the output operand.
    Specified by:
      `unlink` in interface `JitOp`

  - ### inputs

    public List<JitVal> inputs()
    Description copied from interface: `JitOp`
    The input operand use-def nodes in some defined order
    Specified by:
      `inputs` in interface `JitOp`
    Returns:
      the list of inputs

  - ### typeFor

    public JitTypeBehavior typeFor(int position)
    Description copied from interface: `JitOp`
    Get the required type behavior for the input at the given position in `JitOp.inputs()`
    Specified by:
      `typeFor` in interface `JitOp`
    Parameters:
      `position` - the input position
    Returns:
      the behavior

  - ### toString

    public final String toString()
    Returns a string representation of this record class. The representation contains the name of the class, followed by the name and value of each of the record components.
    Specified by:
      `toString` in class `Record`
    Returns:
      a string representation of this object

  - ### hashCode

    public final int hashCode()
    Returns a hash code value for this object. The value is derived from the hash code of each of the record components.
    Specified by:
      `hashCode` in class `Record`
    Returns:
      a hash code value for this object

  - ### equals

    public final boolean equals(Object o)
    Indicates whether some other object is "equal to" this one. The objects are equal if the other object is of the same class and if all the record components are equal. All components in this record class are compared with `Objects::equals(Object,Object)`.
    Specified by:
      `equals` in class `Record`
    Parameters:
      `o` - the object with which to compare
    Returns:
      `true` if this object is the same as the `o` argument; `false` otherwise.

  - ### op

    public PcodeOp op()
    Returns the value of the `op` record component.
    Specified by:
      `op` in interface `JitOp`
    Returns:
      the value of the `op` record component