/*
* 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;
}