This class represents an arithmetic operation.
A boxed value.
This class represents a basic block.
This class represents the intermediate code of a method or other multi-block piece of code, like exception handlers.
This class represents a comparison operation.
Linearize code using a depth first traversal.
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).
Represent a class in ICode
A phase which works on icode.
Represent a field in ICode
Common interface for IClass/IField/IMethod.
Represents a method in ICode.
This class represents an instruction of the intermediate code.
Represent local variables and parameters
This class represents a logical operation.
The MSIL linearizer is used only for methods with at least one exception handler.
A simple linearizer which predicts all branches to take the 'success' branch and tries to schedule those blocks immediately after the test.
This class represents a primitive operation.
Pretty printer for primitives
A class type.
Linearize code in reverse post order.
This class represents a shift operation.
This class represents a test operation.
This class represents a type kind.
An arithmetic addition operation
A bitwise AND operation
An arithmetic shift to the right
A boolean value
A 1-byte signed integer
A 2-byte UNSIGNED integer
A comparison operation with no default for NaNs
A comparison operation with +1 default for NaNs
A comparison operation with -1 default for NaNs
Dummy TypeKind to represent the ConcatClass in a platform-independent way.
An arithmetic division operation
An 8-byte floating point number
An equality test
type: (buf) => STR jvm : It should turn the StringBuffer into a String.
A 4-byte floating point number
A greater-than-or-equal test
A greater-than test
A 4-byte signed integer
A less-than-or-equal test
An 8-byte signed integer
A logical shift to the left
A logical shift to the right
A less-than test
An arithmetic multiplication operation
A non-equality test
Bitwise negation.
A bitwise OR operation
An arithmetic remainder operation
A 2-byte signed integer
An arithmetic subtraction operation
Signals the beginning of a series of concatenations.
The unit value
A bitwise XOR operation
Is the given class available as icode?
Is the given class available as icode?
The ICode representation of classes
The ICode representation of classes
Print all classes and basic blocks.
Print all classes and basic blocks. Used for debugging.
The icode of the given class.
The icode of the given class. If not available, it loads its bytecode.
The icode of the given class, if available
The icode of the given class, if available
The ICode linearizer.
The ICode linearizer.
Load bytecode for given symbol.
Load bytecode for given symbol.
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.
A map from scala primitive Types to ICode TypeKinds
A map from scala primitive Types to ICode TypeKinds
Debugging flag
Debugging flag
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.
ICode generator