Interface ParamList

All Known Implementing Classes:
ParamListRegisterOut, ParamListStandard, ParamListStandardOut

public interface ParamList
A group of ParamEntry that form a complete set for passing parameters (in one direction)
  • Nested Class Summary

    Nested Classes
    Modifier and Type
    Interface
    Description
    static class 
     
  • Method Summary

    Modifier and Type
    Method
    Description
    void
    assignMap(PrototypePieces proto, DataTypeManager dtManage, ArrayList<ParameterPieces> res, boolean addAutoParams)
    Given a list of datatypes, calculate the storage locations used for passing those data-types
    void
    encode(Encoder encoder, boolean isInput)
     
    Get a list of all parameter storage locations consisting of a single register
    Get the address space associated with any stack based parameters in this list.
    int
    Return the amount of alignment used for parameters passed on the stack, or -1 if there are no stack params
    Find the boundary offset that separates parameters on the stack from other local variables This is usually the address of the first stack parameter, but if the stack grows positive, this is the first address AFTER the parameters on the stack
    boolean
    Determine if this ParmList is equivalent to another instance
    boolean
    Return true if the this pointer occurs before an indirect return pointer The automatic parameters: this parameter and the hidden return value pointer both tend to be allocated from the initial general purpose registers reserved for parameter passing.
    boolean
    Determine if a particular address range is a possible parameter, and if so what slot(s) it occupies
    void
     
  • Method Details

    • assignMap

      void assignMap(PrototypePieces proto, DataTypeManager dtManage, ArrayList<ParameterPieces> res, boolean addAutoParams)
      Given a list of datatypes, calculate the storage locations used for passing those data-types
      Parameters:
      proto - is the list of datatypes
      dtManage - is the data-type manager
      res - is the vector for holding the storage locations and other parameter properties
      addAutoParams - if true add/process auto-parameters
    • encode

      void encode(Encoder encoder, boolean isInput) throws IOException
      Throws:
      IOException
    • restoreXml

      void restoreXml(XmlPullParser parser, CompilerSpec cspec) throws XmlParseException
      Throws:
      XmlParseException
    • getPotentialRegisterStorage

      VariableStorage[] getPotentialRegisterStorage(Program prog)
      Get a list of all parameter storage locations consisting of a single register
      Parameters:
      prog - is the controlling program
      Returns:
      an array of VariableStorage
    • getStackParameterAlignment

      int getStackParameterAlignment()
      Return the amount of alignment used for parameters passed on the stack, or -1 if there are no stack params
      Returns:
      the alignment
    • getStackParameterOffset

      Long getStackParameterOffset()
      Find the boundary offset that separates parameters on the stack from other local variables This is usually the address of the first stack parameter, but if the stack grows positive, this is the first address AFTER the parameters on the stack
      Returns:
      the boundary offset
    • possibleParamWithSlot

      boolean possibleParamWithSlot(Address loc, int size, ParamList.WithSlotRec res)
      Determine if a particular address range is a possible parameter, and if so what slot(s) it occupies
      Parameters:
      loc - is the starting address of the range
      size - is the size of the range in bytes
      res - holds the resulting slot and slotsize
      Returns:
      true if the range is a possible parameter
    • getSpacebase

      AddressSpace getSpacebase()
      Get the address space associated with any stack based parameters in this list.
      Returns:
      the stack address space, if this models parameters passed on the stack, null otherwise
    • isThisBeforeRetPointer

      boolean isThisBeforeRetPointer()
      Return true if the this pointer occurs before an indirect return pointer The automatic parameters: this parameter and the hidden return value pointer both tend to be allocated from the initial general purpose registers reserved for parameter passing. This method returns true if the this parameter is allocated first.
      Returns:
      false if the hidden return value pointer is allocated first
    • isEquivalent

      boolean isEquivalent(ParamList obj)
      Determine if this ParmList is equivalent to another instance
      Parameters:
      obj - is the other instance
      Returns:
      true if they are equivalent