All pastes #33269 Raw Edit

Miscellany

public text v1 · immutable
#33269 ·published 2005-12-11 11:14 UTC
rendered paste body


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