public class Box extends Expression
Boxes an expression - converts an expression returning a native type to the Object equivalent of that type (e.g. byte becomes java.lang.Byte, double becomes java.lang.Double).
  • Field Details

    • expr

      public final Expression expr
      The expression to box
    • boxType

      public final Type boxType
      The type of the expression
    • desiredBoxType

      public final Type desiredBoxType
      An optional desired box type, such as boxing a byte as a java.lang.Integer instead of java.lang.Byte
  • Constructor Details

    • Box

      public Box(Expression expr)
      Create a box for an expression
      Parameters:
      expr - The expression to box, the box type is derived from the expression type
    • Box

      public Box(Expression expr, String filename, int lineNumber)
      Create a box for an expression
      Parameters:
      expr - The expression to box, the box type is derived from the expression type
      filename - The source filename this expression is associated with
      lineNumber - The source line number this expression is associated with
    • Box

      public Box(Expression expr, Type desiredBoxType)
      Create a box for an expression with a specific box type
      Parameters:
      expr - The expression to box, the box type is derived from the expression type
      desiredBoxType - The type of the box to use, in case it is different than what would otherwise be derived from the expression type
    • Box

      public Box(Expression expr, Type desiredBoxType, String filename, int lineNumber)
      Create a box for an expression with a specific box type
      Parameters:
      expr - The expression to box, the box type is derived from the expression type
      desiredBoxType - The type of the box to use, in case it is different than what would otherwise be derived from the expression type
      filename - The source filename this expression is associated with
      lineNumber - The source line number this expression is associated with
    • Box

      public Box(Expression expr, Type unboxedType, Type desiredBoxType)
      Create a box for an expression with a specific box type
      Parameters:
      expr - The expression to box, the box type is derived from the expression type
      unboxedType - The type of the unboxed expression (if it is different from that of expr)
      desiredBoxType - The type of the box to use, in case it is different than what would otherwise be derived from the expression type
    • Box

      public Box(Expression expr, Type unboxedType, Type desiredBoxType, String filename, int lineNumber)
      Create a box for an expression with a specific box type
      Parameters:
      expr - The expression to box, the box type is derived from the expression type
      unboxedType - The type of the unboxed expression (if it is different from that of expr)
      desiredBoxType - The type of the box to use, in case it is different than what would otherwise be derived from the expression type
      filename - The source filename this expression is associated with
      lineNumber - The source line number this expression is associated with
  • Method Details

    • getType

      public Type getType()
      Description copied from class: Expression
      Get the type returned by this expression
      Specified by:
      getType in class Expression
      Returns:
      The type of this expression
    • findCaptured

      public void findCaptured(Environment env)
      Description copied from class: Expression
      Search for local variables that would be captured by a lambda. Each expression has its own implementation of this, because each subexpression must be searched.
      Specified by:
      findCaptured in class Expression
      Parameters:
      env - The environment chain to search
    • reset

      public void reset()
      Description copied from class: Expression
      Resets any labels in expressions so that the method can be regenerated
      Overrides:
      reset in class Expression
    • convertToFullTailCalls

      public Expression convertToFullTailCalls(boolean inTailPosition)
      Description copied from class: Expression
      Converts this expression to one that is compatible with full tail call optimization
      Specified by:
      convertToFullTailCalls in class Expression
      Parameters:
      inTailPosition - True if this expression is called from the tail position
      Returns:
      A version of this expression whose types are compatible with full tail call optimization
    • generate

      public void generate(ClassGenerator generator, Environment env, boolean inTailPosition)
      Description copied from class: Expression
      Generate the bytecode for this expression
      Specified by:
      generate in class Expression
      Parameters:
      generator - The generator for generating instructions and additional declarations
      env - The environment containing the local variables currently visible to this expression
      inTailPosition - True if this expression is being generated from the tail position of the method