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.

Linear Supertypes
Repository, Printers, Linearizers, Primitives, ExceptionHandlers, TypeKinds, TypeStacks, Opcodes, BasicBlocks, Members, AnyRef, Any
Known Subclasses
icodes
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 StringFormat
3. by Ensuring
4. by ArrowAssoc

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. #### case class Negation(kind: ICodes.TypeKind) extends ICodes.Primitive with Product with Serializable

    Definition Classes
      Primitives

26. #### 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.

27. #### class Primitive extends AnyRef

    This class represents a primitive operation.

28. #### class PrimitivePrinter extends AnyRef

    Pretty printer for primitives

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

    A class type.

30. #### type Rep = collection.immutable.List[TypeKind]

    Definition Classes
      TypeStacks

31. #### class ReversePostOrderLinearizer extends ICodes.Linearizer

    Linearize code in reverse post order.

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

    Definition Classes
      Primitives

33. #### class ShiftOp extends AnyRef

    This class represents a shift operation.

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

    Definition Classes
      Primitives

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

    Definition Classes
      Primitives

36. #### sealed abstract class TestOp extends AnyRef

    This class represents a test operation.

37. #### class TextPrinter extends AnyRef

    Definition Classes
      Printers

38. #### sealed abstract class TypeKind extends AnyRef

    This class represents a type kind.

39. #### class TypeStack extends AnyRef

    Definition Classes
      TypeStacks

40. #### sealed abstract class ValueTypeKind extends ICodes.TypeKind

    Definition Classes
      TypeKinds

### Abstract Value Members

1. #### abstract val global: Global

   Definition Classes
     ICodes → Repository

### Concrete Value Members

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

   Definition Classes
     AnyRef → Any

2. #### final def ##(): Int

   Definition Classes
     AnyRef → Any

3. #### def +(other: String): String

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

4. #### def ->[B](y: B): (ICodes, B)

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

5. #### final def ==(arg0: Any): Boolean

   Definition Classes
     AnyRef → Any

6. #### object ADD extends ICodes.ArithmeticOp with Product with Serializable

   An arithmetic addition operation

7. #### object AND extends ICodes.LogicalOp with Product with Serializable

   A bitwise AND operation

8. #### object ASR extends ICodes.ShiftOp with Product with Serializable

   An arithmetic shift to the right

9. #### lazy val AnyRefReference: TypeKind

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

    Definition Classes
      TypeKinds

11. #### object BOOL extends ICodes.ValueTypeKind with Product with Serializable

    A boolean value

12. #### object BYTE extends ICodes.ValueTypeKind with Product with Serializable

    A 1-byte signed integer

13. #### lazy val BoxedUnitReference: TypeKind

14. #### object CHAR extends ICodes.ValueTypeKind with Product with Serializable

    A 2-byte UNSIGNED integer

15. #### object CMP extends ICodes.ComparisonOp with Product with Serializable

    A comparison operation with no default for NaNs

16. #### object CMPG extends ICodes.ComparisonOp with Product with Serializable

    A comparison operation with +1 default for NaNs

17. #### object CMPL extends ICodes.ComparisonOp with Product with Serializable

    A comparison operation with -1 default for NaNs

18. #### object ConcatClass extends ICodes.TypeKind with Product with Serializable

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

19. #### object DIV extends ICodes.ArithmeticOp with Product with Serializable

    An arithmetic division operation

20. #### object DOUBLE extends ICodes.ValueTypeKind with Product with Serializable

    An 8-byte floating point number

21. #### object EQ extends ICodes.TestOp with Product with Serializable

    An equality test

22. #### object EndConcat extends ICodes.Primitive with Product with Serializable

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

23. #### object FLOAT extends ICodes.ValueTypeKind with Product with Serializable

    A 4-byte floating point number

24. #### object GE extends ICodes.TestOp with Product with Serializable

    A greater-than-or-equal test

25. #### object GT extends ICodes.TestOp with Product with Serializable

    A greater-than test

26. #### object INT extends ICodes.ValueTypeKind with Product with Serializable

    A 4-byte signed integer

27. #### object LE extends ICodes.TestOp with Product with Serializable

    A less-than-or-equal test

28. #### object LONG extends ICodes.ValueTypeKind with Product with Serializable

    An 8-byte signed integer

29. #### object LSL extends ICodes.ShiftOp with Product with Serializable

    A logical shift to the left

30. #### object LSR extends ICodes.ShiftOp with Product with Serializable

    A logical shift to the right

31. #### object LT extends ICodes.TestOp with Product with Serializable

    A less-than test

32. #### object MUL extends ICodes.ArithmeticOp with Product with Serializable

    An arithmetic multiplication operation

33. #### object NE extends ICodes.TestOp with Product with Serializable

    A non-equality test

34. #### object NOT extends ICodes.ArithmeticOp with Product with Serializable

    Bitwise negation.

35. #### object NoBasicBlock extends ICodes.BasicBlock

    Definition Classes
      BasicBlocks

36. #### object NoCode extends ICodes.Code

    Definition Classes
      Members

37. #### object NoIMethod extends ICodes.IMethod

    Definition Classes
      Members

38. #### lazy val NothingReference: TypeKind

39. #### lazy val NullReference: TypeKind

40. #### object OR extends ICodes.LogicalOp with Product with Serializable

    A bitwise OR operation

41. #### lazy val ObjectReference: TypeKind

42. #### object REM extends ICodes.ArithmeticOp with Product with Serializable

    An arithmetic remainder operation

43. #### object SHORT extends ICodes.ValueTypeKind with Product with Serializable

    A 2-byte signed integer

44. #### object SUB extends ICodes.ArithmeticOp with Product with Serializable

    An arithmetic subtraction operation

45. #### object StartConcat extends ICodes.Primitive with Product with Serializable

    Signals the beginning of a series of concatenations.

46. #### lazy val StringReference: TypeKind

47. #### object UNIT extends ICodes.ValueTypeKind with Product with Serializable

    The unit value

48. #### object XOR extends ICodes.LogicalOp with Product with Serializable

    A bitwise XOR operation

49. #### final val arilogCat: Int(4)

    Definition Classes
      Opcodes

50. #### final val arraysCat: Int(9)

    Definition Classes
      Opcodes

51. #### final def asInstanceOf[T0]: T0

    Definition Classes
      Any

52. #### def available(sym: Global.Symbol): Boolean

    Is the given class available as icode?

    Is the given class available as icode?

    Definition Classes
      Repository

53. #### final val castsCat: Int(5)

    Definition Classes
      Opcodes

54. #### def checkValid(m: IMethod): Unit

55. #### def checkerDebug(msg: String): Unit

56. #### val classes: HashMap[Global.Symbol, IClass]

    The ICode representation of classes

57. #### def clone(): AnyRef

    Attributes
      protected[java.lang]
    Definition Classes
      AnyRef
    Annotations
      @throws( ... )

58. #### final val constCat: Int(3)

    Definition Classes
      Opcodes

59. #### def dumpClassesAndAbort(msg: String): Nothing

    Print all classes and basic blocks.

    Print all classes and basic blocks. Used for debugging.

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

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

62. #### 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 Ensuring in scala.Predef.
    Definition Classes
      Ensuring

63. #### def ensuring(cond: (ICodes) ⇒ Boolean): ICodes

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

64. #### 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 Ensuring in scala.Predef.
    Definition Classes
      Ensuring

65. #### def ensuring(cond: Boolean): ICodes

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

66. #### final def eq(arg0: AnyRef): Boolean

    Definition Classes
      AnyRef

67. #### def equals(arg0: Any): Boolean

    Definition Classes
      AnyRef → Any

68. #### def finalize(): Unit

    Attributes
      protected[java.lang]
    Definition Classes
      AnyRef
    Annotations
      @throws( classOf[java.lang.Throwable] )

69. #### final val fldsCat: Int(7)

    Definition Classes
      Opcodes

70. #### def formatted(fmtstr: String): String

    Implicit information
      This member is added by an implicit conversion from ICodes to StringFormat[ICodes] performed by method StringFormat 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: 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

74. #### object icodeReader extends ICodeReader

75. #### final def isInstanceOf[T0]: Boolean

    Definition Classes
      Any

76. #### final val jumpsCat: Int(10)

    Definition Classes
      Opcodes

77. #### val linearizer: Linearizer

    The ICode linearizer.

78. #### object liveness extends Liveness

79. #### def load(sym: Global.Symbol): Boolean

    Load bytecode for given symbol.

    Load bytecode for given symbol.

    Definition Classes
      Repository

80. #### val loaded: Map[Global.Symbol, Global.icodes.IClass]

    Definition Classes
      Repository

81. #### final val localsCat: Int(1)

    Definition Classes
      Opcodes

82. #### 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

83. #### final val mthdsCat: Int(8)

    Definition Classes
      Opcodes

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. #### final val objsCat: Int(6)

    Definition Classes
      Opcodes

89. #### object opcodes

    Definition Classes
      Opcodes

90. #### 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

91. #### object reachingDefinitions extends ReachingDefinitions

92. #### final val retCat: Int(11)

    Definition Classes
      Opcodes

93. #### def shouldCheckIcode: Boolean

    Debugging flag

94. #### final val stackCat: Int(2)

    Definition Classes
      Opcodes

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

    Definition Classes
      AnyRef

96. #### def toString(): String

    Definition Classes
      AnyRef → Any

97. #### def toTypeKind(t: Global.Type): TypeKind

    Return the TypeKind of the given type

    Return the TypeKind of the given type

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

    Definition Classes
      TypeKinds

98. #### final def wait(): Unit

    Definition Classes
      AnyRef
    Annotations
      @throws( ... )

99. #### final def wait(arg0: Long, arg1: Int): Unit

    Definition Classes
      AnyRef
    Annotations
      @throws( ... )

100. #### final def wait(arg0: Long): Unit

     Definition Classes
       AnyRef
     Annotations
       @throws( ... )

101. #### def →[B](y: B): (ICodes, B)

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

### 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 any2stringadd[ICodes]

### Inherited by implicit conversion StringFormat from ICodes to StringFormat[ICodes]

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

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

### Ungrouped