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
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 any2stringfmt
  2. by any2stringadd
  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: TypeKind) extends TypeKind with Product with Serializable

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

  3. class ArithmeticOp extends AnyRef

    This class represents an arithmetic operation.

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

  5. case class BOXED(kind: TypeKind) extends TypeKind with Product with Serializable

    A boxed value.

  6. class BasicBlock extends ProgramPoint[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: ComparisonOp, kind: TypeKind) extends Primitive with Product with Serializable

  9. class ComparisonOp extends AnyRef

    This class represents a comparison operation.

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

  11. class DepthFirstLinerizer extends Linearizer

    Linearize code using a depth first traversal.

  12. class DumpLinearizer extends 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

  14. class Finalizer extends ExceptionHandler

  15. class IClass extends IMember

    Represent a class in ICode

  16. abstract class ICodePhase extends GlobalPhase

    A phase which works on icode.

  17. class IField extends IMember

    Represent a field in ICode

  18. trait IMember extends Ordered[IMember]

    Common interface for IClass/IField/IMethod.

  19. class IMethod extends 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

  22. class Local extends AnyRef

    Represent local variables and parameters

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

  24. class LogicalOp extends AnyRef

    This class represents a logical operation.

  25. class MSILLinearizer extends Linearizer

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

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

  27. class NormalLinearizer extends 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: Symbol) extends TypeKind with Product with Serializable

    A class type.

  31. type Rep = List[TypeKind]

    Definition Classes
    TypeStacks
  32. class ReversePostOrderLinearizer extends Linearizer

    Linearize code in reverse post order.

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

  34. class ShiftOp extends AnyRef

    This class represents a shift operation.

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

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

  37. sealed abstract class TestOp extends AnyRef

    This class represents a test operation.

  38. class TextPrinter extends AnyRef

  39. sealed abstract class TypeKind extends AnyRef

    This class represents a type kind.

  40. class TypeStack extends AnyRef

  41. sealed abstract class ValueTypeKind extends TypeKind

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 ArithmeticOp with Product with Serializable

    An arithmetic addition operation

  9. object AND extends LogicalOp with Product with Serializable

    A bitwise AND operation

  10. object ASR extends 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 ValueTypeKind with Product with Serializable

    A boolean value

  14. object BYTE extends ValueTypeKind with Product with Serializable

    A 1-byte signed integer

  15. lazy val BoxedUnitReference: TypeKind

  16. object CHAR extends ValueTypeKind with Product with Serializable

    A 2-byte UNSIGNED integer

  17. object CMP extends ComparisonOp with Product with Serializable

    A comparison operation with no default for NaNs

  18. object CMPG extends ComparisonOp with Product with Serializable

    A comparison operation with +1 default for NaNs

  19. object CMPL extends ComparisonOp with Product with Serializable

    A comparison operation with -1 default for NaNs

  20. object ConcatClass extends TypeKind with Product with Serializable

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

  21. object DIV extends ArithmeticOp with Product with Serializable

    An arithmetic division operation

  22. object DOUBLE extends ValueTypeKind with Product with Serializable

    An 8-byte floating point number

  23. object EQ extends TestOp with Product with Serializable

    An equality test

  24. object EndConcat extends Primitive with Product with Serializable

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

  25. object FLOAT extends ValueTypeKind with Product with Serializable

    A 4-byte floating point number

  26. object GE extends TestOp with Product with Serializable

    A greater-than-or-equal test

  27. object GT extends TestOp with Product with Serializable

    A greater-than test

  28. object INT extends ValueTypeKind with Product with Serializable

    A 4-byte signed integer

  29. object LE extends TestOp with Product with Serializable

    A less-than-or-equal test

  30. object LONG extends ValueTypeKind with Product with Serializable

    An 8-byte signed integer

  31. object LSL extends ShiftOp with Product with Serializable

    A logical shift to the left

  32. object LSR extends ShiftOp with Product with Serializable

    A logical shift to the right

  33. object LT extends TestOp with Product with Serializable

    A less-than test

  34. object MUL extends ArithmeticOp with Product with Serializable

    An arithmetic multiplication operation

  35. object NE extends TestOp with Product with Serializable

    A non-equality test

  36. object NOT extends ArithmeticOp with Product with Serializable

    Bitwise negation.

  37. object NoBasicBlock extends BasicBlock

  38. object NoCode extends Code

  39. object NoFinalizer extends Finalizer

  40. object NoIMethod extends IMethod

  41. object NoTypeStack extends TypeStack

  42. lazy val NothingReference: TypeKind

  43. lazy val NullReference: TypeKind

  44. object OR extends LogicalOp with Product with Serializable

    A bitwise OR operation

  45. lazy val ObjectReference: TypeKind

  46. object REM extends ArithmeticOp with Product with Serializable

    An arithmetic remainder operation

  47. object SHORT extends ValueTypeKind with Product with Serializable

    A 2-byte signed integer

  48. object SUB extends ArithmeticOp with Product with Serializable

    An arithmetic subtraction operation

  49. object StartConcat extends 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 ValueTypeKind with Product with Serializable

    The unit value

  53. object XOR extends LogicalOp with Product with Serializable

    A bitwise XOR operation

  54. final def asInstanceOf[T0]: T0

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

    Is the given class available as icode?

    Is the given class available as icode?

    Definition Classes
    Repository
  56. def checkValid(m: IMethod): Unit

  57. def checkerDebug(msg: String): Unit

  58. val classes: HashMap[Symbol, IClass]

    The ICode representation of classes

  59. def clone(): AnyRef

    Attributes
    protected[lang]
    Definition Classes
    AnyRef
    Annotations
    @throws()
  60. def dumpClassesAndAbort(msg: String): Nothing

    Print all classes and basic blocks.

    Print all classes and basic blocks. Used for debugging.

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

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

  63. 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
  64. 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
  65. 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
  66. 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
  67. final def eq(arg0: AnyRef): Boolean

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

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

    Attributes
    protected[lang]
    Definition Classes
    AnyRef
    Annotations
    @throws()
  70. 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()
  71. final def getClass(): Class[_]

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

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

    The icode of the given class.

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

    Definition Classes
    Repository
  74. def icode(sym: Symbol): Option[IClass]

    The icode of the given class, if available

    The icode of the given class, if available

    Definition Classes
    Repository
  75. object icodeReader extends ICodeReader

  76. final def isInstanceOf[T0]: Boolean

    Definition Classes
    Any
  77. val linearizer: Linearizer

    The ICode linearizer.

  78. object liveness extends Liveness

  79. def load(sym: Symbol): Unit

    Load bytecode for given symbol.

    Load bytecode for given symbol.

    Definition Classes
    Repository
  80. val loaded: Map[Symbol, IClass]

    Definition Classes
    Repository
  81. 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
  82. var lubs0: Int

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

    Definition Classes
    TypeKinds
  84. final def ne(arg0: AnyRef): Boolean

    Definition Classes
    AnyRef
  85. def newTextPrinter(): TextPrinter

  86. final def notify(): Unit

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

    Definition Classes
    AnyRef
  88. object opcodes extends AnyRef

  89. lazy val primitiveTypeMap: Map[Symbol, TypeKind]

    A map from scala primitive Types to ICode TypeKinds

    A map from scala primitive Types to ICode TypeKinds

    Definition Classes
    TypeKinds
  90. object reachingDefinitions extends ReachingDefinitions

  91. val self: Any

    Implicit information
    This member is added by an implicit conversion from ICodes to StringFormat performed by method any2stringfmt in scala.Predef.
    Definition Classes
    StringFormat
  92. val self: Any

    Implicit information
    This member is added by an implicit conversion from ICodes to StringAdd performed by method any2stringadd in scala.Predef.
    Definition Classes
    StringAdd
  93. def shouldCheckIcode: Boolean

    Debugging flag

  94. final def synchronized[T0](arg0: ⇒ T0): T0

    Definition Classes
    AnyRef
  95. def toString(): String

    Definition Classes
    AnyRef → Any
  96. def toTypeKind(t: 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
  97. final def wait(): Unit

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

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

    Definition Classes
    AnyRef
    Annotations
    @throws()
  100. 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

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.
    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.
    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 any2stringfmt from ICodes to StringFormat

Inherited by implicit conversion any2stringadd from ICodes to StringAdd

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

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