Class/Object

sigmastate.lang.Terms

MethodCall

Related Docs: object MethodCall | package Terms

Permalink

case class MethodCall(obj: Value[SType], method: SMethod, args: IndexedSeq[Value[SType]], typeSubst: Map[STypeVar, SType]) extends Value[SType] with Product with Serializable

Represents in ErgoTree an invocation of method of the object obj with arguments args. The SMethod instances in STypeCompanions may have type STypeIdent in methods types, but valid ErgoTree should have SMethod instances specialized for specific types of obj and args using specializeFor. This means, if we save typeId, mathodId, and we save all the arguments, we can restore the specialized SMethod instance. This work by induction, if we assume all arguments are monomorphic, then we can make MethodCall monomorphic. Thus, all ErgoTree instances are monomorphic by construction.

obj

object on which method will be invoked

method

method to be invoked

args

arguments passed to the method on invocation

typeSubst

a map of concrete type for each generic type parameter

Linear Supertypes
Serializable, Serializable, Value[SType], SigmaNode, Product, Equals, AnyRef, Any
Ordering
  1. Alphabetic
  2. By Inheritance
Inherited
  1. MethodCall
  2. Serializable
  3. Serializable
  4. Value
  5. SigmaNode
  6. Product
  7. Equals
  8. AnyRef
  9. Any
  1. Hide All
  2. Show All
Visibility
  1. Public
  2. All

Instance Constructors

  1. new MethodCall(obj: Value[SType], method: SMethod, args: IndexedSeq[Value[SType]], typeSubst: Map[STypeVar, SType])

    Permalink

    obj

    object on which method will be invoked

    method

    method to be invoked

    args

    arguments passed to the method on invocation

    typeSubst

    a map of concrete type for each generic type parameter

Value Members

  1. final def !=(arg0: Any): Boolean

    Permalink
    Definition Classes
    AnyRef → Any
  2. final def ##(): Int

    Permalink
    Definition Classes
    AnyRef → Any
  3. final def ==(arg0: Any): Boolean

    Permalink
    Definition Classes
    AnyRef → Any
  4. val args: IndexedSeq[Value[SType]]

    Permalink

    arguments passed to the method on invocation

  5. final def asInstanceOf[T0]: T0

    Permalink
    Definition Classes
    Any
  6. def clone(): AnyRef

    Permalink
    Attributes
    protected[java.lang]
    Definition Classes
    AnyRef
    Annotations
    @throws( ... )
  7. def companion: ValueCompanion

    Permalink
    Definition Classes
    MethodCallValue
  8. final def eq(arg0: AnyRef): Boolean

    Permalink
    Definition Classes
    AnyRef
  9. def finalize(): Unit

    Permalink
    Attributes
    protected[java.lang]
    Definition Classes
    AnyRef
    Annotations
    @throws( classOf[java.lang.Throwable] )
  10. final def getClass(): Class[_]

    Permalink
    Definition Classes
    AnyRef → Any
  11. final def isInstanceOf[T0]: Boolean

    Permalink
    Definition Classes
    Any
  12. val method: SMethod

    Permalink

    method to be invoked

  13. final def ne(arg0: AnyRef): Boolean

    Permalink
    Definition Classes
    AnyRef
  14. final def notify(): Unit

    Permalink
    Definition Classes
    AnyRef
  15. final def notifyAll(): Unit

    Permalink
    Definition Classes
    AnyRef
  16. val obj: Value[SType]

    Permalink

    object on which method will be invoked

  17. def opCode: OpCode

    Permalink

    Unique id of the node class used in serialization of ErgoTree.

    Unique id of the node class used in serialization of ErgoTree.

    Definition Classes
    Value
  18. def opName: String

    Permalink
    Definition Classes
    Value
  19. def opType: SFunc

    Permalink

    Every value represents an operation and that operation can be associated with a function type, describing functional meaning of the operation, kind of operation signature.

    Every value represents an operation and that operation can be associated with a function type, describing functional meaning of the operation, kind of operation signature. Thus we can obtain global operation identifiers by combining Value.opName with Value.opType, so that if (v1.opName == v2.opName) && (v1.opType == v2.opType) then v1 and v2 are functionally point-wise equivalent. This in particular means that if two _different_ ops have the same opType they _should_ have different opNames. Thus defined op ids are used in a Cost Model - a table of all existing primitives coupled with performance parameters.

    Definition Classes
    MethodCallValue
  20. def sourceContext: Nullable[SourceContext]

    Permalink
    Definition Classes
    Value
  21. def sourceContext_=(srcCtx: Nullable[SourceContext]): Unit

    Permalink
    Definition Classes
    Value
  22. final def synchronized[T0](arg0: ⇒ T0): T0

    Permalink
    Definition Classes
    AnyRef
  23. val tpe: SType

    Permalink

    The type of the value represented by this node.

    The type of the value represented by this node. If the value is an operation it is the type of operation result.

    Definition Classes
    MethodCallValue
  24. val typeSubst: Map[STypeVar, SType]

    Permalink

    a map of concrete type for each generic type parameter

  25. final def wait(): Unit

    Permalink
    Definition Classes
    AnyRef
    Annotations
    @throws( ... )
  26. final def wait(arg0: Long, arg1: Int): Unit

    Permalink
    Definition Classes
    AnyRef
    Annotations
    @throws( ... )
  27. final def wait(arg0: Long): Unit

    Permalink
    Definition Classes
    AnyRef
    Annotations
    @throws( ... )

Inherited from Serializable

Inherited from Serializable

Inherited from Value[SType]

Inherited from SigmaNode

Inherited from Product

Inherited from Equals

Inherited from AnyRef

Inherited from Any

Ungrouped