scala.tools.nsc.backend.icode

ICodes

abstract class ICodes extends Members with BasicBlocks with Opcodes with TypeStacks with TypeKinds with ExceptionHandlers with Primitives with Linearizers with Printers with Repository

Glue together ICode parts.

Source
ICodes.scala
Linear Supertypes
Known Subclasses
Type Hierarchy Learn more about scaladoc diagrams
Ordering
  1. Alphabetic
  2. By inheritance
Inherited
  1. ICodes
  2. Repository
  3. Printers
  4. Linearizers
  5. Primitives
  6. ExceptionHandlers
  7. TypeKinds
  8. TypeStacks
  9. Opcodes
  10. BasicBlocks
  11. Members
  12. AnyRef
  13. Any
Implicitly
  1. by any2stringadd
  2. by any2stringfmt
  3. by any2ArrowAssoc
  4. by any2Ensuring
  1. Hide All
  2. Show all
Learn more about member selection
Visibility
  1. Public
  2. All

Instance Constructors

  1. new ICodes()

Type Members

  1. final case class ARRAY(elem: ICodes.TypeKind) extends ICodes.TypeKind with Product with Serializable

    Definition Classes
    TypeKinds
  2. case class Arithmetic(op: ICodes.ArithmeticOp, kind: ICodes.TypeKind) extends ICodes.Primitive with Product with Serializable

    Definition Classes
    Primitives
  3. class ArithmeticOp extends AnyRef

    This class represents an arithmetic operation.

  4. case class ArrayLength(kind: ICodes.TypeKind) extends ICodes.Primitive with Product with Serializable

    Definition Classes
    Primitives
  5. case class BOXED(kind: ICodes.TypeKind) extends ICodes.TypeKind with Product with Serializable

    A boxed value.

  6. class BasicBlock extends ProgramPoint[ICodes.BasicBlock]

    This class represents a basic block.

  7. class Code extends AnyRef

    This class represents the intermediate code of a method or other multi-block piece of code, like exception handlers.

  8. case class Comparison(op: ICodes.ComparisonOp, kind: ICodes.TypeKind) extends ICodes.Primitive with Product with Serializable

    Definition Classes
    Primitives
  9. class ComparisonOp extends AnyRef

    This class represents a comparison operation.

  10. case class Conversion(src: ICodes.TypeKind, dst: ICodes.TypeKind) extends ICodes.Primitive with Product with Serializable

    Definition Classes
    Primitives
  11. class DepthFirstLinerizer extends ICodes.Linearizer

    Linearize code using a depth first traversal.

  12. class DumpLinearizer extends ICodes.Linearizer

    A 'dump' of the blocks in this method, which does not require any well-formedness of the basic blocks (like the last instruction being a jump).

  13. class ExceptionHandler extends AnyRef

    Definition Classes
    ExceptionHandlers
  14. class Finalizer extends ICodes.ExceptionHandler

    Definition Classes
    ExceptionHandlers
  15. class IClass extends ICodes.IMember

    Represent a class in ICode

  16. abstract class ICodePhase extends GlobalPhase

    A phase which works on icode.

  17. class IField extends ICodes.IMember

    Represent a field in ICode

  18. trait IMember extends Ordered[ICodes.IMember]

    Common interface for IClass/IField/IMethod.

  19. class IMethod extends ICodes.IMember

    Represents a method in ICode.

  20. abstract class Instruction extends Cloneable

    This class represents an instruction of the intermediate code.

  21. abstract class Linearizer extends AnyRef

    Definition Classes
    Linearizers
  22. class Local extends AnyRef

    Represent local variables and parameters

  23. case class Logical(op: ICodes.LogicalOp, kind: ICodes.TypeKind) extends ICodes.Primitive with Product with Serializable

    Definition Classes
    Primitives
  24. class LogicalOp extends AnyRef

    This class represents a logical operation.

  25. class MSILLinearizer extends ICodes.Linearizer

    The MSIL linearizer is used only for methods with at least one exception handler.

  26. case class Negation(kind: ICodes.TypeKind) extends ICodes.Primitive with Product with Serializable

    Definition Classes
    Primitives
  27. class NormalLinearizer extends ICodes.Linearizer with WorklistAlgorithm

    A simple linearizer which predicts all branches to take the 'success' branch and tries to schedule those blocks immediately after the test.

  28. class Primitive extends AnyRef

    This class represents a primitive operation.

  29. class PrimitivePrinter extends AnyRef

    Pretty printer for primitives

  30. final case class REFERENCE(cls: Global.Symbol) extends ICodes.TypeKind with Product with Serializable

    A class type.

  31. type Rep = collection.immutable.List[TypeKind]

    Definition Classes
    TypeStacks
  32. class ReversePostOrderLinearizer extends ICodes.Linearizer

    Linearize code in reverse post order.

  33. case class Shift(op: ICodes.ShiftOp, kind: ICodes.TypeKind) extends ICodes.Primitive with Product with Serializable

    Definition Classes
    Primitives
  34. class ShiftOp extends AnyRef

    This class represents a shift operation.

  35. case class StringConcat(el: ICodes.TypeKind) extends ICodes.Primitive with Product with Serializable

    Definition Classes
    Primitives
  36. case class Test(op: ICodes.TestOp, kind: ICodes.TypeKind, zero: Boolean) extends ICodes.Primitive with Product with Serializable

    Definition Classes
    Primitives
  37. sealed abstract class TestOp extends AnyRef

    This class represents a test operation.

  38. class TextPrinter extends AnyRef

    Definition Classes
    Printers
  39. sealed abstract class TypeKind extends AnyRef

    This class represents a type kind.

  40. class TypeStack extends AnyRef

    Definition Classes
    TypeStacks
  41. sealed abstract class ValueTypeKind extends ICodes.TypeKind

    Definition Classes
    TypeKinds

Abstract Value Members

  1. abstract val global: Global

    Definition Classes
    ICodesRepository

Concrete Value Members

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

    Definition Classes
    AnyRef
  2. final def !=(arg0: Any): Boolean

    Definition Classes
    Any
  3. final def ##(): Int

    Definition Classes
    AnyRef → Any
  4. def +(other: String): String

    Implicit information
    This member is added by an implicit conversion from ICodes to StringAdd performed by method any2stringadd in scala.Predef.
    Definition Classes
    StringAdd
  5. def ->[B](y: B): (ICodes, B)

    Implicit information
    This member is added by an implicit conversion from ICodes to ArrowAssoc[ICodes] performed by method any2ArrowAssoc in scala.Predef.
    Definition Classes
    ArrowAssoc
    Annotations
    @inline()
  6. final def ==(arg0: AnyRef): Boolean

    Definition Classes
    AnyRef
  7. final def ==(arg0: Any): Boolean

    Definition Classes
    Any
  8. object ADD extends ICodes.ArithmeticOp with Product with Serializable

    An arithmetic addition operation

  9. object AND extends ICodes.LogicalOp with Product with Serializable

    A bitwise AND operation

  10. object ASR extends ICodes.ShiftOp with Product with Serializable

    An arithmetic shift to the right

  11. lazy val AnyRefReference: TypeKind

  12. def ArrayN(elem: TypeKind, dims: Int): ARRAY

    Definition Classes
    TypeKinds
  13. object BOOL extends ICodes.ValueTypeKind with Product with Serializable

    A boolean value

  14. object BYTE extends ICodes.ValueTypeKind with Product with Serializable

    A 1-byte signed integer

  15. lazy val BoxedUnitReference: TypeKind

  16. object CHAR extends ICodes.ValueTypeKind with Product with Serializable

    A 2-byte UNSIGNED integer

  17. object CMP extends ICodes.ComparisonOp with Product with Serializable

    A comparison operation with no default for NaNs

  18. object CMPG extends ICodes.ComparisonOp with Product with Serializable

    A comparison operation with +1 default for NaNs

  19. object CMPL extends ICodes.ComparisonOp with Product with Serializable

    A comparison operation with -1 default for NaNs

  20. object ConcatClass extends ICodes.TypeKind with Product with Serializable

    Dummy TypeKind to represent the ConcatClass in a platform-independent way.

  21. object DIV extends ICodes.ArithmeticOp with Product with Serializable

    An arithmetic division operation

  22. object DOUBLE extends ICodes.ValueTypeKind with Product with Serializable

    An 8-byte floating point number

  23. object EQ extends ICodes.TestOp with Product with Serializable

    An equality test

  24. object EndConcat extends ICodes.Primitive with Product with Serializable

    type: (buf) => STR jvm : It should turn the StringBuffer into a String.

  25. object FLOAT extends ICodes.ValueTypeKind with Product with Serializable

    A 4-byte floating point number

  26. object GE extends ICodes.TestOp with Product with Serializable

    A greater-than-or-equal test

  27. object GT extends ICodes.TestOp with Product with Serializable

    A greater-than test

  28. object INT extends ICodes.ValueTypeKind with Product with Serializable

    A 4-byte signed integer

  29. object LE extends ICodes.TestOp with Product with Serializable

    A less-than-or-equal test

  30. object LONG extends ICodes.ValueTypeKind with Product with Serializable

    An 8-byte signed integer

  31. object LSL extends ICodes.ShiftOp with Product with Serializable

    A logical shift to the left

  32. object LSR extends ICodes.ShiftOp with Product with Serializable

    A logical shift to the right

  33. object LT extends ICodes.TestOp with Product with Serializable

    A less-than test

  34. object MUL extends ICodes.ArithmeticOp with Product with Serializable

    An arithmetic multiplication operation

  35. object NE extends ICodes.TestOp with Product with Serializable

    A non-equality test

  36. object NOT extends ICodes.ArithmeticOp with Product with Serializable

    Bitwise negation.

  37. object NoBasicBlock extends ICodes.BasicBlock

    Definition Classes
    BasicBlocks
  38. object NoCode extends ICodes.Code

    Definition Classes
    Members
  39. object NoFinalizer extends ICodes.Finalizer

    Definition Classes
    ExceptionHandlers
  40. object NoIMethod extends ICodes.IMethod

    Definition Classes
    Members
  41. object NoTypeStack extends ICodes.TypeStack

    Definition Classes
    TypeStacks
  42. lazy val NothingReference: TypeKind

  43. lazy val NullReference: TypeKind

  44. object OR extends ICodes.LogicalOp with Product with Serializable

    A bitwise OR operation

  45. lazy val ObjectReference: TypeKind

  46. object REM extends ICodes.ArithmeticOp with Product with Serializable

    An arithmetic remainder operation

  47. object SHORT extends ICodes.ValueTypeKind with Product with Serializable

    A 2-byte signed integer

  48. object SUB extends ICodes.ArithmeticOp with Product with Serializable

    An arithmetic subtraction operation

  49. object StartConcat extends ICodes.Primitive with Product with Serializable

    Signals the beginning of a series of concatenations.

  50. lazy val StringReference: TypeKind

  51. lazy val ThrowableReference: TypeKind

  52. object UNIT extends ICodes.ValueTypeKind with Product with Serializable

    The unit value

  53. object XOR extends ICodes.LogicalOp with Product with Serializable

    A bitwise XOR operation

  54. final val arilogCat: Int(4)

    Definition Classes
    Opcodes
  55. final val arraysCat: Int(9)

    Definition Classes
    Opcodes
  56. final def asInstanceOf[T0]: T0

    Definition Classes
    Any
  57. def available(sym: Global.Symbol): Boolean

    Is the given class available as icode?

    Is the given class available as icode?

    Definition Classes
    Repository
  58. final val castsCat: Int(5)

    Definition Classes
    Opcodes
  59. def checkValid(m: IMethod): Unit

  60. def checkerDebug(msg: String): Unit

  61. val classes: HashMap[Global.Symbol, IClass]

    The ICode representation of classes

  62. def clone(): AnyRef

    Attributes
    protected[java.lang]
    Definition Classes
    AnyRef
    Annotations
    @throws()
  63. final val constCat: Int(3)

    Definition Classes
    Opcodes
  64. def dumpClassesAndAbort(msg: String): Nothing

    Print all classes and basic blocks.

    Print all classes and basic blocks. Used for debugging.

  65. def dumpMethodAndAbort(m: IMethod, b: BasicBlock): Nothing

  66. def dumpMethodAndAbort(m: IMethod, msg: String): Nothing

  67. def ensuring(cond: (ICodes) ⇒ Boolean, msg: ⇒ Any): ICodes

    Implicit information
    This member is added by an implicit conversion from ICodes to Ensuring[ICodes] performed by method any2Ensuring in scala.Predef.
    Definition Classes
    Ensuring
  68. def ensuring(cond: (ICodes) ⇒ Boolean): ICodes

    Implicit information
    This member is added by an implicit conversion from ICodes to Ensuring[ICodes] performed by method any2Ensuring in scala.Predef.
    Definition Classes
    Ensuring
  69. def ensuring(cond: Boolean, msg: ⇒ Any): ICodes

    Implicit information
    This member is added by an implicit conversion from ICodes to Ensuring[ICodes] performed by method any2Ensuring in scala.Predef.
    Definition Classes
    Ensuring
  70. def ensuring(cond: Boolean): ICodes

    Implicit information
    This member is added by an implicit conversion from ICodes to Ensuring[ICodes] performed by method any2Ensuring in scala.Predef.
    Definition Classes
    Ensuring
  71. final def eq(arg0: AnyRef): Boolean

    Definition Classes
    AnyRef
  72. def equals(arg0: Any): Boolean

    Definition Classes
    AnyRef → Any
  73. def finalize(): Unit

    Attributes
    protected[java.lang]
    Definition Classes
    AnyRef
    Annotations
    @throws()
  74. final val fldsCat: Int(7)

    Definition Classes
    Opcodes
  75. def formatted(fmtstr: String): String

    Implicit information
    This member is added by an implicit conversion from ICodes to StringFormat performed by method any2stringfmt in scala.Predef.
    Definition Classes
    StringFormat
    Annotations
    @inline()
  76. final def getClass(): Class[_]

    Definition Classes
    AnyRef → Any
  77. def hashCode(): Int

    Definition Classes
    AnyRef → Any
  78. def icode(sym: Global.Symbol, force: Boolean): Global.icodes.IClass

    The icode of the given class.

    The icode of the given class. If not available, it loads its bytecode.

    Definition Classes
    Repository
  79. def icode(sym: Global.Symbol): Option[Global.icodes.IClass]

    The icode of the given class, if available

    The icode of the given class, if available

    Definition Classes
    Repository
  80. object icodeReader extends ICodeReader

  81. final def isInstanceOf[T0]: Boolean

    Definition Classes
    Any
  82. final val jumpsCat: Int(10)

    Definition Classes
    Opcodes
  83. val linearizer: Linearizer

    The ICode linearizer.

  84. object liveness extends Liveness

  85. def load(sym: Global.Symbol): Boolean

    Load bytecode for given symbol.

    Load bytecode for given symbol.

    Definition Classes
    Repository
  86. val loaded: Map[Global.Symbol, Global.icodes.IClass]

    Definition Classes
    Repository
  87. final val localsCat: Int(1)

    Definition Classes
    Opcodes
  88. def lub(a: TypeKind, b: TypeKind): TypeKind

    The least upper bound of two typekinds.

    The least upper bound of two typekinds. They have to be either REFERENCE or ARRAY kinds.

    The lub is based on the lub of scala types.

    Definition Classes
    TypeKinds
  89. var lubs0: Int

    Definition Classes
    TypeKinds
  90. def msil_mgdptr(tk: TypeKind): TypeKind

    Definition Classes
    TypeKinds
  91. final val mthdsCat: Int(8)

    Definition Classes
    Opcodes
  92. final def ne(arg0: AnyRef): Boolean

    Definition Classes
    AnyRef
  93. def newTextPrinter(): TextPrinter

  94. final def notify(): Unit

    Definition Classes
    AnyRef
  95. final def notifyAll(): Unit

    Definition Classes
    AnyRef
  96. final val objsCat: Int(6)

    Definition Classes
    Opcodes
  97. object opcodes

    Definition Classes
    Opcodes
  98. lazy val primitiveTypeMap: Map[Global.Symbol, TypeKind]

    A map from scala primitive Types to ICode TypeKinds

    A map from scala primitive Types to ICode TypeKinds

    Definition Classes
    TypeKinds
  99. object reachingDefinitions extends ReachingDefinitions

  100. final val retCat: Int(11)

    Definition Classes
    Opcodes
  101. def shouldCheckIcode: Boolean

    Debugging flag

  102. final val stackCat: Int(2)

    Definition Classes
    Opcodes
  103. final def synchronized[T0](arg0: ⇒ T0): T0

    Definition Classes
    AnyRef
  104. def toString(): String

    Definition Classes
    AnyRef → Any
  105. def toTypeKind(t: Global.Type): TypeKind

    Return the TypeKind of the given type

    Return the TypeKind of the given type

    Call to .normalize fixes #3003 (follow type aliases). Otherwise, arrayOrClassType below would return ObjectReference.

    Definition Classes
    TypeKinds
  106. final def wait(): Unit

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

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

    Definition Classes
    AnyRef
    Annotations
    @throws()
  109. def [B](y: B): (ICodes, B)

    Implicit information
    This member is added by an implicit conversion from ICodes to ArrowAssoc[ICodes] performed by method any2ArrowAssoc in scala.Predef.
    Definition Classes
    ArrowAssoc

Shadowed Implict Value Members

  1. val self: Any

    Implicit information
    This member is added by an implicit conversion from ICodes to StringAdd performed by method any2stringadd in scala.Predef.
    Shadowing
    This implicitly inherited member is ambiguous. One or more implicitly inherited members have similar signatures, so calling this member may produce an ambiguous implicit conversion compiler error.
    To access this member you can use a type ascription:
    (iCodes: StringAdd).self
    Definition Classes
    StringAdd
  2. val self: Any

    Implicit information
    This member is added by an implicit conversion from ICodes to StringFormat performed by method any2stringfmt in scala.Predef.
    Shadowing
    This implicitly inherited member is ambiguous. One or more implicitly inherited members have similar signatures, so calling this member may produce an ambiguous implicit conversion compiler error.
    To access this member you can use a type ascription:
    (iCodes: StringFormat).self
    Definition Classes
    StringFormat

Deprecated Value Members

  1. def x: ICodes

    Implicit information
    This member is added by an implicit conversion from ICodes to ArrowAssoc[ICodes] performed by method any2ArrowAssoc in scala.Predef.
    Shadowing
    This implicitly inherited member is ambiguous. One or more implicitly inherited members have similar signatures, so calling this member may produce an ambiguous implicit conversion compiler error.
    To access this member you can use a type ascription:
    (iCodes: ArrowAssoc[ICodes]).x
    Definition Classes
    ArrowAssoc
    Annotations
    @deprecated
    Deprecated

    (Since version 2.10.0) Use leftOfArrow instead

  2. def x: ICodes

    Implicit information
    This member is added by an implicit conversion from ICodes to Ensuring[ICodes] performed by method any2Ensuring in scala.Predef.
    Shadowing
    This implicitly inherited member is ambiguous. One or more implicitly inherited members have similar signatures, so calling this member may produce an ambiguous implicit conversion compiler error.
    To access this member you can use a type ascription:
    (iCodes: Ensuring[ICodes]).x
    Definition Classes
    Ensuring
    Annotations
    @deprecated
    Deprecated

    (Since version 2.10.0) Use resultOfEnsuring instead

Inherited from Repository

Inherited from Printers

Inherited from Linearizers

Inherited from Primitives

Inherited from ExceptionHandlers

Inherited from TypeKinds

Inherited from TypeStacks

Inherited from Opcodes

Inherited from BasicBlocks

Inherited from Members

Inherited from AnyRef

Inherited from Any

Inherited by implicit conversion any2stringadd from ICodes to StringAdd

Inherited by implicit conversion any2stringfmt from ICodes to StringFormat

Inherited by implicit conversion any2ArrowAssoc from ICodes to ArrowAssoc[ICodes]

Inherited by implicit conversion any2Ensuring from ICodes to Ensuring[ICodes]

Ungrouped