/* * Get the jit type for a primitive clr type. * Returns 0 if the type is no primitive clr type. */ ILJitType ILJitPrimitiveClrTypeToJitType(int primitiveClrType) { switch(primitiveClrType) { case IL_META_ELEMTYPE_BOOLEAN: { return _IL_JIT_TYPE_BYTE; } case IL_META_ELEMTYPE_I1: { return _IL_JIT_TYPE_SBYTE; } case IL_META_ELEMTYPE_U1: { return _IL_JIT_TYPE_BYTE; } case IL_META_ELEMTYPE_CHAR: { return _IL_JIT_TYPE_CHAR; } case IL_META_ELEMTYPE_I2: { return _IL_JIT_TYPE_INT16; } case IL_META_ELEMTYPE_U2: { return _IL_JIT_TYPE_UINT16; } case IL_META_ELEMTYPE_I4: { return _IL_JIT_TYPE_INT32; } case IL_META_ELEMTYPE_U4: { return _IL_JIT_TYPE_UINT32; } case IL_META_ELEMTYPE_I8: { return _IL_JIT_TYPE_INT64; } case IL_META_ELEMTYPE_U8: { return _IL_JIT_TYPE_UINT64; } #ifdef IL_NATIVE_INT32 case IL_META_ELEMTYPE_I: { return _IL_JIT_TYPE_INT32; } case IL_META_ELEMTYPE_U: { return _IL_JIT_TYPE_UINT32; } #endif #ifdef IL_NATIVE_INT64 case IL_META_ELEMTYPE_I: { return _IL_JIT_TYPE_INT64; } case IL_META_ELEMTYPE_U: { return _IL_JIT_TYPE_UINT64; } #endif case IL_META_ELEMTYPE_R4: { return _IL_JIT_TYPE_SINGLE; } case IL_META_ELEMTYPE_R8: { return _IL_JIT_TYPE_DOUBLE; } case IL_META_ELEMTYPE_R: { return _IL_JIT_TYPE_NFLOAT; } case IL_META_ELEMTYPE_TYPEDBYREF: { return _IL_JIT_TYPE_VPTR; } } return 0; } /* * Create the class/struct representation of a clr type for libjit. * and store the type in classPrivate. * Returns the jit type on success else 0 */ ILJitType ILJitTypeCreate(ILClassPrivate *classPrivate) { ILJitType type; if(!(type = jit_type_create_struct(0, 0, 0))) { return 0; } jit_type_set_size_and_alignment(type, classPrivate->size, classPrivate->alignment); return type; }