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.

  • No labels