Every type used in Jitrino.OPT compiler is represented by 'Type' class. Note that only one instance of every type exists during the compilation session.
Support of singleton state for all types requires additional efforts from developer when new type is created but reduces memory overhead of type system and allows pointer based comparison for types.
Files with a complete types list: jitrino/src/shared/Type.h file
Built-in value types
Tau - A tau type. Taus usually used to serve as a proof that some kind of check was already done. For example: null pointer check, cast check...
Void - A void type. The save as Java 'void' type
Boolean - A boolean type. The same as Java 'boolean' type
Char - A character type. The same as Java 'char' type
IntPtr - A platform pointer size signed integer
Int8 - A 8-bit signed type. The same as Java 'byte' type
Int16 - A 16-bit signed integer type. The same as Java 'short' type
Int32 - A 32-bit signed integer type. The same as Java 'int' type
Int64 - A 64-bit signed integer type. The same as Java 'long' type
UIntPtr - A platform pointer size unsigned integer
UInt8 - A 8-bit unsigned type
UInt16 - A 16-bit unsigned type
UInt32 - A 32-bit unsigned type
UInt64 - A 64-bit unsigned type
Single - 32-bit single precision floating type. The same as Java 'float' type
Double - 64-bit double precision floating type. The same as Java 'double' type
Float - A machine specific 32-bit float type
TypedReference - A typed reference. Not used
Value - A user-defined value type. Not used
Offset - Offset into an object
OffsetPlusHeapbase - A heap base plus offset
Reference types
Built-in object types
SystemObject - The 'java/lang/Object' type
SystemClass - The 'java/lang/Class' type
SystemString - The 'java/lang/String' type
NullObject - A special null object reference.
UnresolvedObject - An object type with a class that is not loaded yet
Array type
Array - An array object
User-defined object
Object - Any Java object
BoxedValue - User-defined boxed value object. Not used
Pointer types
UnmanagedPtr - A pointer to arbitrary memory location. The operands with UnmanagedPtr type are not included into GC enumeration
ManagedPtr - A pointer an object field or array element. The operands with ManagedPtr type are included into GC enumeration
MethodPtr - A typed pointer to a VM method structure
VTablePtr - A typed pointer to object's VTable
Compressed Reference types
CompressedSystemObject - A compressed variant of SystemObject type
CompressedSystemClass - A compressed variant of SystemClass type
CompressedSystemString - A compressed variant of SystemString type
CompressedNullObject - A compressed variant of NullObject reference. If it a real 0 or heap base address depends on implementation
CompressedUnresolvedObject - A compressed version of UnresolvedObject type
CompressedArray - A compressed version of Array type
CompressedObject - A compressed version of Object type
CompressedMethodPtr - A compressed version of MethodPtr type
CompressedVTablePtr - A compressed version of VTablePtr type
Additional types
OrNull - The type is not used today and can be removed.
VTablePtrObj - The type is not used today and can be removed.
ITablePtrObj - The type is not used today and can be removed.
ArrayLength - The type is not used today and can be removed.
ArrayElementType - The type is not used today and can be removed.
Singleton - The type is not used today and can be removed.