IKVM.Internal.CodeEmitter.UnsafeAllocTempLocal C# (CSharp) Method

UnsafeAllocTempLocal() private method

private UnsafeAllocTempLocal ( Type type ) : CodeEmitterLocal
type IKVM.Reflection.Type
return CodeEmitterLocal
        internal CodeEmitterLocal UnsafeAllocTempLocal(Type type)
        {
            int free = -1;
            for (int i = 0; i < tempLocals.Length; i++)
            {
                CodeEmitterLocal lb = tempLocals[i];
                if (lb == null)
                {
                    if (free == -1)
                    {
                        free = i;
                    }
                }
                else if (lb.LocalType == type)
                {
                    return lb;
                }
            }
            CodeEmitterLocal lb1 = DeclareLocal(type);
            if (free != -1)
            {
                tempLocals[free] = lb1;
            }
            return lb1;
        }

Usage Example

Beispiel #1
0
        private static void EmitConversion(CodeEmitter ilgen, Type converterType, string method)
        {
            CodeEmitterLocal converter = ilgen.UnsafeAllocTempLocal(converterType);

            ilgen.Emit(OpCodes.Ldloca, converter);
            ilgen.Emit(OpCodes.Call, converterType.GetMethod(method));
        }