Differences between revisions 1 and 2
Revision 1 as of 2008-06-05 12:08:01
Size: 4292
Comment:
Revision 2 as of 2009-09-20 21:54:45
Size: 4292
Editor: localhost
Comment: converted to 1.6 markup
Deletions are marked like this. Additions are marked like this.
Line 4: Line 4:
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.[[BR]]
[[BR]]
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.<<BR>>
<<BR>>
Line 7: Line 7:
Files with a complete types list: jitrino/src/shared/Type.h file[[BR]]
[[BR]]
Files with a complete types list: jitrino/src/shared/Type.h file<<BR>>
<<BR>>
Line 10: Line 10:
        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...[[BR]]
        Void - A void type. The save as Java 'void' type[[BR]]
        Boolean - A boolean type. The same as Java 'boolean' type[[BR]]
        Char - A character type. The same as Java 'char' type[[BR]]
        IntPtr - A platform pointer size signed integer[[BR]]
        Int8 - A 8-bit signed type. The same as Java 'byte' type[[BR]]
        Int16 - A 16-bit signed integer type. The same as Java 'short' type[[BR]]
        Int32 - A 32-bit signed integer type. The same as Java 'int' type[[BR]]
        Int64 - A 64-bit signed integer type. The same as Java 'long' type[[BR]]
        UIntPtr - A platform pointer size unsigned integer[[BR]]
        UInt8 - A 8-bit unsigned type[[BR]]
        UInt16 - A 16-bit unsigned type[[BR]]
        UInt32 - A 32-bit unsigned type[[BR]]
        UInt64 - A 64-bit unsigned type[[BR]]
        Single - 32-bit single precision floating type. The same as Java 'float' type[[BR]]
        Double - 64-bit double precision floating type. The same as Java 'double' type[[BR]]
        Float - A machine specific 32-bit float type[[BR]]
        TypedReference - A typed reference. Not used[[BR]]
        Value - A user-defined value type. Not used[[BR]]
        Offset - Offset into an object[[BR]]
        OffsetPlusHeapbase - A heap base plus offset[[BR]]
        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...<<BR>>
        Void - A void type. The save as Java 'void' type<<BR>>
        Boolean - A boolean type. The same as Java 'boolean' type<<BR>>
        Char - A character type. The same as Java 'char' type<<BR>>
        IntPtr - A platform pointer size signed integer<<BR>>
        Int8 - A 8-bit signed type. The same as Java 'byte' type<<BR>>
        Int16 - A 16-bit signed integer type. The same as Java 'short' type<<BR>>
        Int32 - A 32-bit signed integer type. The same as Java 'int' type<<BR>>
        Int64 - A 64-bit signed integer type. The same as Java 'long' type<<BR>>
        UIntPtr - A platform pointer size unsigned integer<<BR>>
        UInt8 - A 8-bit unsigned type<<BR>>
        UInt16 - A 16-bit unsigned type<<BR>>
        UInt32 - A 32-bit unsigned type<<BR>>
        UInt64 - A 64-bit unsigned type<<BR>>
        Single - 32-bit single precision floating type. The same as Java 'float' type<<BR>>
        Double - 64-bit double precision floating type. The same as Java 'double' type<<BR>>
        Float - A machine specific 32-bit float type<<BR>>
        TypedReference - A typed reference. Not used<<BR>>
        Value - A user-defined value type. Not used<<BR>>
        Offset - Offset into an object<<BR>>
        OffsetPlusHeapbase - A heap base plus offset<<BR>>
Line 32: Line 32:
[[BR]] <<BR>>
Line 36: Line 36:
        SystemObject - The 'java/lang/Object' type[[BR]]
        SystemClass - The 'java/lang/Class' type[[BR]]
        SystemString - The 'java/lang/String' type[[BR]]
        SystemObject - The 'java/lang/Object' type<<BR>>
        SystemClass - The 'java/lang/Class' type<<BR>>
        SystemString - The 'java/lang/String' type<<BR>>
Line 40: Line 40:
        NullObject - A special null object reference.[[BR]]
        UnresolvedObject - An object type with a class that is not loaded yet[[BR]]
        NullObject - A special null object reference.<<BR>>
        UnresolvedObject - An object type with a class that is not loaded yet<<BR>>
Line 44: Line 44:
        Array - An array object[[BR]]         Array - An array object<<BR>>
Line 47: Line 47:
        Object - Any Java object[[BR]]
        BoxedValue - User-defined boxed value object. Not used[[BR]]
        Object - Any Java object<<BR>>
        BoxedValue - User-defined boxed value object. Not used<<BR>>
Line 51: Line 51:
        UnmanagedPtr - A pointer to arbitrary memory location. The operands with UnmanagedPtr type are not included into GC enumeration[[BR]]
        ManagedPtr - A pointer an object field or array element. The operands with ManagedPtr type are included into GC enumeration[[BR]]
        MethodPtr - A typed pointer to a VM method structure[[BR]]
        VTablePtr - A typed pointer to object's VTable[[BR]]
        UnmanagedPtr - A pointer to arbitrary memory location. The operands with UnmanagedPtr type are not included into GC enumeration<<BR>>
        ManagedPtr - A pointer an object field or array element. The operands with ManagedPtr type are included into GC enumeration<<BR>>
        MethodPtr - A typed pointer to a VM method structure<<BR>>
        VTablePtr - A typed pointer to object's VTable<<BR>>
Line 57: Line 57:
        CompressedSystemObject - A compressed variant of SystemObject type[[BR]]
        CompressedSystemClass - A compressed variant of SystemClass type[[BR]]
        CompressedSystemString - A compressed variant of SystemString type[[BR]]
        CompressedNullObject - A compressed variant of NullObject reference. If it a real 0 or heap base address depends on implementation[[BR]]
        CompressedUnresolvedObject - A compressed version of UnresolvedObject type[[BR]]
        CompressedArray - A compressed version of Array type[[BR]]
        CompressedObject - A compressed version of Object type[[BR]]
        CompressedMethodPtr - A compressed version of MethodPtr type[[BR]]
        CompressedVTablePtr - A compressed version of VTablePtr type[[BR]]
        CompressedSystemObject - A compressed variant of SystemObject type<<BR>>
        CompressedSystemClass - A compressed variant of SystemClass type<<BR>>
        CompressedSystemString - A compressed variant of SystemString type<<BR>>
        CompressedNullObject - A compressed variant of NullObject reference. If it a real 0 or heap base address depends on implementation<<BR>>
        CompressedUnresolvedObject - A compressed version of UnresolvedObject type<<BR>>
        CompressedArray - A compressed version of Array type<<BR>>
        CompressedObject - A compressed version of Object type<<BR>>
        CompressedMethodPtr - A compressed version of MethodPtr type<<BR>>
        CompressedVTablePtr - A compressed version of VTablePtr type<<BR>>
Line 68: Line 68:
        OrNull - The type is not used today and can be removed.[[BR]]
        VTablePtrObj - The type is not used today and can be removed.[[BR]]
        ITablePtrObj - The type is not used today and can be removed.[[BR]]
        ArrayLength - The type is not used today and can be removed.[[BR]]
        ArrayElementType - The type is not used today and can be removed.[[BR]]
        Singleton - The type is not used today and can be removed.[[BR]]
        OrNull - The type is not used today and can be removed.<<BR>>
        VTablePtrObj - The type is not used today and can be removed.<<BR>>
        ITablePtrObj - The type is not used today and can be removed.<<BR>>
        ArrayLength - The type is not used today and can be removed.<<BR>>
        ArrayElementType - The type is not used today and can be removed.<<BR>>
        Singleton - The type is not used today and can be removed.<<BR>>

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

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

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.

Jitrino_OPT/types (last edited 2009-09-20 21:54:45 by localhost)