OPcall (JEL API)
Description: declaration: package: gnu.jel, class: OPcall

Package gnu.jel

# Class OPcall

java.lang.Object
gnu.jel.OP
gnu.jel.OPcall

    public class OPcall
    extends OP

A tree node, representing a method call (field/local variable load).

- ## Field Summary

  Fields
  Modifier and Type | Field | Description
  --- | --- | ---
  `protected static int[]` | `arrayStoreCodes` |
  `protected static byte[]` | `arrayTypeCodes` |
  `java.lang.reflect.Member` | `m` | Holds method to be executed
  `int` | `nplv` | local variable number (in case m=null), number of formal parameters of the method to call otherwise.

  ### Fields inherited from class gnu.jel.OP

  `chi, resID, resType, specialTypes, unwrapType`

- ## Constructor Summary

  Constructors
  Constructor | Description
  --- | ---
  `OPcall​(int lvarn, java.lang.Class<?> type)` | Prepares access to the local variable (formal parameter) of method.
  `OPcall​(java.lang.reflect.Member m, int np, java.util.Stack<OP> paramOPs, boolean aEval)` | Prepares a new method/field call/get operation to be added to the code.

- ## Method Summary

  Modifier and Type | Method | Description
  --- | --- | ---
  `void` | `compile​(ClassFile cf)` | Called to generate the code implementing this OP.
  `java.lang.Object` | `eval()` | Attempts to evaluate this function.

  ### Methods inherited from class gnu.jel.OP

  `isWidening, isWidening, narrow, typeID, typeIDObject, widen`

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

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

- ## Field Details

  - ### m

    public java.lang.reflect.Member m
    Holds method to be executed

  - ### nplv

    public int nplv
    local variable number (in case m=null), number of formal parameters of the method to call otherwise.

  - ### arrayTypeCodes

    protected static final byte[] arrayTypeCodes

  - ### arrayStoreCodes

    protected static final int[] arrayStoreCodes

- ## Constructor Details

  - ### OPcall

    public OPcall​(java.lang.reflect.Member m, int np, java.util.Stack<OP> paramOPs, boolean aEval) throws CompilationException
    Prepares a new method/field call/get operation to be added to the code.
    Parameters:
      `m` - method/field to call/get.
      `np` - number of actual formal parameters (not considering "this")
      `paramOPs` - stack holding the operands
      `aEval` - indicates if the method call should be attempted at the compile time
    Throws:
      `CompilationException`

  - ### OPcall

    public OPcall​(int lvarn, java.lang.Class<?> type)
    Prepares access to the local variable (formal parameter) of method.
    Parameters:
      `lvarn` - local variable number.
      `type` - local variable type.

- ## Method Details

  - ### eval

    public java.lang.Object eval() throws java.lang.Exception
    Attempts to evaluate this function.
    Specified by:
      `eval` in class `OP`
    Returns:
      the OPload, representing the function's result (if it can \ be evaluated).
    Throws:
      `java.lang.Exception` - if the function can't be evaluated, or the evaluation results in error.

  - ### compile

    public void compile​(ClassFile cf)
    Description copied from class: `OP`
    Called to generate the code implementing this OP.
    Specified by:
      `compile` in class `OP`
    Parameters:
      `cf` - class file with a new open method to write the code into.