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

AllocTempLocal() private method

private AllocTempLocal ( Type type ) : CodeEmitterLocal
type IKVM.Reflection.Type
return CodeEmitterLocal
        internal CodeEmitterLocal AllocTempLocal(Type type)
        {
            for (int i = 0; i < tempLocals.Length; i++)
            {
                CodeEmitterLocal lb = tempLocals[i];
                if (lb != null && lb.LocalType == type)
                {
                    tempLocals[i] = null;
                    return lb;
                }
            }
            return new CodeEmitterLocal(type);
        }

Usage Example

示例#1
0
            internal sealed override void Emit(CodeEmitter ilgen)
            {
                LocalBuilder value1 = ilgen.AllocTempLocal(FloatOrDouble());
                LocalBuilder value2 = ilgen.AllocTempLocal(FloatOrDouble());

                ilgen.Emit(OpCodes.Stloc, value2);
                ilgen.Emit(OpCodes.Stloc, value1);
                ilgen.Emit(OpCodes.Ldloc, value1);
                ilgen.Emit(OpCodes.Ldloc, value2);
                ilgen.Emit(OpCodes.Cgt_Un);
                ilgen.Emit(OpCodes.Ldloc, value1);
                ilgen.Emit(OpCodes.Ldloc, value2);
                ilgen.Emit(OpCodes.Clt);
                ilgen.Emit(OpCodes.Sub);
                ilgen.ReleaseTempLocal(value1);
                ilgen.ReleaseTempLocal(value2);
            }
All Usage Examples Of IKVM.Internal.CodeEmitter::AllocTempLocal