2 writes to _ilg
System.Linq.Expressions (2)
System\Linq\Expressions\Compiler\LambdaCompiler.cs (2)
87_ilg = method.GetILGenerator(); 146_ilg = parent._ilg;
527 references to _ilg
System.Linq.Expressions (527)
System\Linq\Expressions\Compiler\LambdaCompiler.Address.cs (23)
75_ilg.Emit(OpCodes.Ldelema, node.Type); 154_ilg.EmitFieldAddress(field); 161_ilg.Emit(OpCodes.Stloc, temp); 162_ilg.Emit(OpCodes.Ldloca, temp); 198_ilg.Emit(OpCodes.Ldelema, node.Type); 214_ilg.Emit(OpCodes.Unbox, type); 223_ilg.Emit(OpCodes.Stloc, tmp); 224_ilg.Emit(OpCodes.Ldloca, tmp); 280_ilg.Emit(OpCodes.Dup); 281_ilg.Emit(OpCodes.Stloc, instanceLocal = GetInstanceLocal(instanceType)); 291_ilg.Emit(OpCodes.Stloc, valueLocal); 292_ilg.Emit(OpCodes.Ldloca, valueLocal); 300@this._ilg.Emit(OpCodes.Ldloc, instanceLocal); 303@this._ilg.Emit(OpCodes.Ldloc, valueLocal); 329_ilg.Emit(OpCodes.Dup); 330_ilg.Emit(OpCodes.Stloc, instanceLocal = GetInstanceLocal(instanceType)); 343_ilg.Emit(OpCodes.Dup); 344_ilg.Emit(OpCodes.Stloc, argLocal); 353_ilg.Emit(OpCodes.Stloc, valueLocal); 354_ilg.Emit(OpCodes.Ldloca, valueLocal); 362@this._ilg.Emit(OpCodes.Ldloc, instanceLocal); 367@this._ilg.Emit(OpCodes.Ldloc, arg); 370@this._ilg.Emit(OpCodes.Ldloc, valueLocal);
System\Linq\Expressions\Compiler\LambdaCompiler.Binary.cs (128)
78_ilg.EmitDefault(typeof(bool?), this); 83_ilg.EmitHasValue(e.Type); 86_ilg.Emit(OpCodes.Ldc_I4_0); 87_ilg.Emit(OpCodes.Ceq); 162_ilg.Emit(OpCodes.Ceq); 163_ilg.Emit(OpCodes.Ldc_I4_0); 166_ilg.Emit(OpCodes.Ceq); 169_ilg.Emit(OpCodes.Add); 172_ilg.Emit(leftType.IsFloatingPoint() ? OpCodes.Add : (leftType.IsUnsigned() ? OpCodes.Add_Ovf_Un : OpCodes.Add_Ovf)); 175_ilg.Emit(OpCodes.Sub); 180_ilg.Emit(OpCodes.Sub_Ovf_Un); 186_ilg.Emit(leftType.IsFloatingPoint() ? OpCodes.Sub : OpCodes.Sub_Ovf); 190_ilg.Emit(OpCodes.Mul); 193_ilg.Emit(leftType.IsFloatingPoint() ? OpCodes.Mul : (leftType.IsUnsigned() ? OpCodes.Mul_Ovf_Un : OpCodes.Mul_Ovf)); 196_ilg.Emit(leftType.IsUnsigned() ? OpCodes.Div_Un : OpCodes.Div); 199_ilg.Emit(leftType.IsUnsigned() ? OpCodes.Rem_Un : OpCodes.Rem); 204_ilg.Emit(OpCodes.And); 209_ilg.Emit(OpCodes.Or); 213_ilg.Emit(leftType.IsUnsigned() ? OpCodes.Clt_Un : OpCodes.Clt); 217_ilg.Emit(leftType.IsUnsigned() || leftType.IsFloatingPoint() ? OpCodes.Cgt_Un : OpCodes.Cgt); 218_ilg.Emit(OpCodes.Ldc_I4_0); 219_ilg.Emit(OpCodes.Ceq); 223_ilg.Emit(leftType.IsUnsigned() ? OpCodes.Cgt_Un : OpCodes.Cgt); 227_ilg.Emit(leftType.IsUnsigned() || leftType.IsFloatingPoint() ? OpCodes.Clt_Un : OpCodes.Clt); 228_ilg.Emit(OpCodes.Ldc_I4_0); 229_ilg.Emit(OpCodes.Ceq); 233_ilg.Emit(OpCodes.Xor); 239_ilg.Emit(OpCodes.Shl); 244_ilg.Emit(leftType.IsUnsigned() ? OpCodes.Shr_Un : OpCodes.Shr); 258_ilg.EmitPrimitive(mask); 259_ilg.Emit(OpCodes.And); 273_ilg.Emit(IsChecked(op) ? OpCodes.Conv_Ovf_U1 : OpCodes.Conv_U1); 276_ilg.Emit(IsChecked(op) ? OpCodes.Conv_Ovf_I1 : OpCodes.Conv_I1); 279_ilg.Emit(IsChecked(op) ? OpCodes.Conv_Ovf_U2 : OpCodes.Conv_U2); 282_ilg.Emit(IsChecked(op) ? OpCodes.Conv_Ovf_I2 : OpCodes.Conv_I2); 361_ilg.Emit(OpCodes.Stloc, locRight); 362_ilg.Emit(OpCodes.Stloc, locLeft); 363_ilg.Emit(OpCodes.Ldloca, locLeft); 364_ilg.EmitGetValueOrDefault(type); 365_ilg.Emit(OpCodes.Ldloca, locRight); 366_ilg.EmitGetValueOrDefault(type); 369_ilg.Emit(OpCodes.Ldloca, locLeft); 370_ilg.EmitHasValue(type); 371_ilg.Emit(OpCodes.Ldloca, locRight); 372_ilg.EmitHasValue(type); 375_ilg.Emit(op == ExpressionType.Equal ? OpCodes.Ceq : OpCodes.And); 376_ilg.Emit(OpCodes.And); 379_ilg.Emit(OpCodes.Ldc_I4_0); 380_ilg.Emit(OpCodes.Ceq); 387Label notNull = _ilg.DefineLabel(); 388Label end = _ilg.DefineLabel(); 393_ilg.Emit(OpCodes.Stloc, locRight); 394_ilg.Emit(OpCodes.Stloc, locLeft); 395_ilg.Emit(OpCodes.Ldloca, locLeft); 396_ilg.EmitHasValue(type); 397_ilg.Emit(OpCodes.Ldloca, locRight); 398_ilg.EmitHasValue(type); 399_ilg.Emit(OpCodes.And); 400_ilg.Emit(OpCodes.Brtrue_S, notNull); 401_ilg.EmitDefault(typeof(bool?), this); 402_ilg.Emit(OpCodes.Br_S, end); 403_ilg.MarkLabel(notNull); 404_ilg.Emit(OpCodes.Ldloca, locLeft); 405_ilg.EmitGetValueOrDefault(type); 406_ilg.Emit(OpCodes.Ldloca, locRight); 407_ilg.EmitGetValueOrDefault(type); 412_ilg.Emit(OpCodes.Newobj, Nullable_Boolean_Ctor); 413_ilg.MarkLabel(end); 424Label labIfNull = _ilg.DefineLabel(); 425Label labEnd = _ilg.DefineLabel(); 431_ilg.Emit(OpCodes.Stloc, locRight); 432_ilg.Emit(OpCodes.Stloc, locLeft); 438_ilg.Emit(OpCodes.Ldloca, locLeft); 439_ilg.EmitHasValue(leftType); 444_ilg.Emit(OpCodes.Ldloca, locRight); 445_ilg.EmitHasValue(rightType); 448_ilg.Emit(OpCodes.And); 452_ilg.Emit(OpCodes.Brfalse_S, labIfNull); 457_ilg.Emit(OpCodes.Ldloca, locLeft); 458_ilg.EmitGetValueOrDefault(leftType); 462_ilg.Emit(OpCodes.Ldloc, locLeft); 467_ilg.Emit(OpCodes.Ldloca, locRight); 468_ilg.EmitGetValueOrDefault(rightType); 472_ilg.Emit(OpCodes.Ldloc, locRight); 485_ilg.Emit(OpCodes.Newobj, ci); 486_ilg.Emit(OpCodes.Stloc, locResult); 487_ilg.Emit(OpCodes.Br_S, labEnd); 490_ilg.MarkLabel(labIfNull); 491_ilg.Emit(OpCodes.Ldloca, locResult); 492_ilg.Emit(OpCodes.Initobj, resultType); 494_ilg.MarkLabel(labEnd); 496_ilg.Emit(OpCodes.Ldloc, locResult); 506Label returnRight = _ilg.DefineLabel(); 507Label exit = _ilg.DefineLabel(); 511_ilg.Emit(OpCodes.Stloc, locRight); 512_ilg.Emit(OpCodes.Stloc, locLeft); 513_ilg.Emit(OpCodes.Ldloca, locLeft); 514_ilg.EmitGetValueOrDefault(type); 516_ilg.Emit(OpCodes.Brtrue_S, returnRight); 517_ilg.Emit(OpCodes.Ldloca, locLeft); 518_ilg.EmitHasValue(type); 519_ilg.Emit(OpCodes.Ldloca, locRight); 520_ilg.EmitGetValueOrDefault(type); 521_ilg.Emit(OpCodes.Or); 523_ilg.Emit(OpCodes.Brfalse_S, returnRight); 524_ilg.Emit(OpCodes.Ldloc, locLeft); 526_ilg.Emit(OpCodes.Br_S, exit); 527_ilg.MarkLabel(returnRight); 528_ilg.Emit(OpCodes.Ldloc, locRight); 530_ilg.MarkLabel(exit); 537Label returnLeft = _ilg.DefineLabel(); 538Label exit = _ilg.DefineLabel(); 542_ilg.Emit(OpCodes.Stloc, locRight); 543_ilg.Emit(OpCodes.Stloc, locLeft); 544_ilg.Emit(OpCodes.Ldloca, locLeft); 545_ilg.EmitGetValueOrDefault(type); 547_ilg.Emit(OpCodes.Brtrue_S, returnLeft); 548_ilg.Emit(OpCodes.Ldloca, locRight); 549_ilg.EmitGetValueOrDefault(type); 550_ilg.Emit(OpCodes.Ldloca, locLeft); 551_ilg.EmitHasValue(type); 552_ilg.Emit(OpCodes.Or); 554_ilg.Emit(OpCodes.Brfalse_S, returnLeft); 555_ilg.Emit(OpCodes.Ldloc, locRight); 557_ilg.Emit(OpCodes.Br_S, exit); 558_ilg.MarkLabel(returnLeft); 559_ilg.Emit(OpCodes.Ldloc, locLeft); 561_ilg.MarkLabel(exit);
System\Linq\Expressions\Compiler\LambdaCompiler.ControlFlow.cs (4)
17_labelInfo.Add(node, result = new LabelInfo(_ilg, node, false)); 33return new LabelInfo(_ilg, null, false); 135_ilg.EmitDefault(node.Type, this); 258_labelInfo.Add(label, new LabelInfo(_ilg, label, TypeUtils.AreReferenceAssignable(lambda.ReturnType, label.Type)));
System\Linq\Expressions\Compiler\LambdaCompiler.cs (5)
146_ilg = parent._ilg; 163internal ILGenerator IL => _ilg; 227public LocalBuilder GetLocal(Type type) => _freeLocals.TryPop(type) ?? _ilg.DeclareLocal(type); 251_ilg.EmitLoadArg(GetLambdaArgument(index)); 258_ilg.EmitLoadArg(0);
System\Linq\Expressions\Compiler\LambdaCompiler.Expressions.cs (129)
116_ilg.Emit(OpCodes.Pop); 137_ilg.Emit(OpCodes.Castclass, type); 279_ilg.Emit(OpCodes.Dup); 280_ilg.Emit(OpCodes.Stloc, temp = GetLocal(node.Type)); 288_ilg.Emit(OpCodes.Ldloc, temp!); 312_ilg.EmitLoadElement(arrayType.GetElementType()!); 317_ilg.Emit(OpCodes.Call, TypeUtils.GetArrayGetMethod(arrayType)); 340_ilg.EmitStoreElement(arrayType.GetElementType()!); 345_ilg.Emit(OpCodes.Call, TypeUtils.GetArraySetMethod(arrayType)); 408_ilg.Emit(OpCodes.Constrained, objectType); 417_ilg.Emit(OpCodes.Tailcall); 428_ilg.EmitCall(callOp, mi, types); 432_ilg.Emit(callOp, mi); 461_ilg.Emit(OpCodes.Constrained, objectType); 463_ilg.Emit(callOp, method); 574if (!_ilg.TryEmitConstant(value, type, this)) 602_ilg.Emit(OpCodes.Dup); 604_ilg.Emit(OpCodes.Stloc, siteTemp); 605_ilg.Emit(OpCodes.Ldfld, GetCallSiteTargetField(siteType)); 606_ilg.Emit(OpCodes.Ldloc, siteTemp); 610_ilg.Emit(OpCodes.Callvirt, invoke); 630_ilg.Emit(OpCodes.Newobj, node.Constructor); 638_ilg.Emit(OpCodes.Ldloca, temp); 639_ilg.Emit(OpCodes.Initobj, node.Type); 640_ilg.Emit(OpCodes.Ldloc, temp); 666_ilg.EmitPrimitive(result == AnalyzeTypeIsResult.KnownTrue); 677_ilg.EmitHasValue(type); 683_ilg.Emit(OpCodes.Ldnull); 684_ilg.Emit(OpCodes.Cgt_Un); 694_ilg.Emit(OpCodes.Box, type); 696_ilg.Emit(OpCodes.Isinst, node.TypeOperand); 697_ilg.Emit(OpCodes.Ldnull); 698_ilg.Emit(OpCodes.Cgt_Un); 717_ilg.Emit(OpCodes.Dup); 728_ilg.Emit(OpCodes.Stloc, value); 730_ilg.Emit(OpCodes.Ldloc, value); 732_ilg.EmitStoreValueIndirect(variable.Type); 769_ilg.EmitLoadValueIndirect(node.Type); 807_ilg.Emit(OpCodes.Dup); 808_ilg.Emit(OpCodes.Stloc, temp = GetLocal(node.Type)); 814_ilg.EmitFieldSet((FieldInfo)member); 826_ilg.Emit(OpCodes.Ldloc, temp!); 857_ilg.EmitFieldGet(fi); 907_ilg.EmitArray(elementType, n); 911_ilg.Emit(OpCodes.Dup); 912_ilg.EmitPrimitive(i); 914_ilg.EmitStoreElement(elementType); 923_ilg.EmitConvertToType(x.Type, typeof(int), isChecked: true, locals: this); 925_ilg.EmitArray(node.Type); 962_ilg.Emit(OpCodes.Stfld, fi); 1014_ilg.Emit(OpCodes.Stloc, loc); 1015_ilg.Emit(OpCodes.Ldloca, loc); 1020_ilg.Emit(OpCodes.Ldloc, loc); 1035_ilg.Emit(OpCodes.Pop); 1044_ilg.Emit(OpCodes.Dup); 1058_ilg.Emit(OpCodes.Stloc, loc); 1059_ilg.Emit(OpCodes.Ldloca, loc); 1064_ilg.Emit(OpCodes.Ldloc, loc); 1080_ilg.Emit(OpCodes.Pop); 1089_ilg.Emit(OpCodes.Dup); 1096_ilg.Emit(OpCodes.Pop); 1124Label exit = _ilg.DefineLabel(); 1125Label exitNull = _ilg.DefineLabel(); 1127_ilg.Emit(OpCodes.Ldc_I4_0); 1128_ilg.Emit(OpCodes.Stloc, anyNull); 1137_ilg.Emit(OpCodes.Dup); 1138_ilg.EmitHasValue(arg.Type); 1139_ilg.Emit(OpCodes.Ldc_I4_0); 1140_ilg.Emit(OpCodes.Ceq); 1141_ilg.Emit(OpCodes.Stloc, anyNull); 1142_ilg.EmitGetValueOrDefault(arg.Type); 1151_ilg.Emit(OpCodes.Dup); 1152_ilg.Emit(OpCodes.Ldnull); 1153_ilg.Emit(OpCodes.Ceq); 1154_ilg.Emit(OpCodes.Stloc, anyNull); 1158_ilg.Emit(OpCodes.Ldloc, anyNull); 1159_ilg.Emit(OpCodes.Brtrue, exitNull); 1165_ilg.Emit(OpCodes.Newobj, ci); 1167_ilg.Emit(OpCodes.Br_S, exit); 1168_ilg.MarkLabel(exitNull); 1174_ilg.Emit(OpCodes.Ldloca, result); 1175_ilg.Emit(OpCodes.Initobj, resultType); 1176_ilg.Emit(OpCodes.Ldloc, result); 1181_ilg.Emit(OpCodes.Ldnull); 1191_ilg.Emit(OpCodes.Ldc_I4_0); 1193_ilg.MarkLabel(exit); 1204Label exit = _ilg.DefineLabel(); 1205Label exitAllNull = _ilg.DefineLabel(); 1206Label exitAnyNull = _ilg.DefineLabel(); 1210_ilg.Emit(OpCodes.Ldc_I4_0); 1211_ilg.Emit(OpCodes.Stloc, anyNull); 1212_ilg.Emit(OpCodes.Ldc_I4_1); 1213_ilg.Emit(OpCodes.Stloc, allNull); 1223_ilg.Emit(OpCodes.Dup); 1224_ilg.EmitHasValue(arg.Type); 1225_ilg.Emit(OpCodes.Ldc_I4_0); 1226_ilg.Emit(OpCodes.Ceq); 1227_ilg.Emit(OpCodes.Dup); 1228_ilg.Emit(OpCodes.Ldloc, anyNull); 1229_ilg.Emit(OpCodes.Or); 1230_ilg.Emit(OpCodes.Stloc, anyNull); 1231_ilg.Emit(OpCodes.Ldloc, allNull); 1232_ilg.Emit(OpCodes.And); 1233_ilg.Emit(OpCodes.Stloc, allNull); 1234_ilg.EmitGetValueOrDefault(arg.Type); 1241_ilg.Emit(OpCodes.Dup); 1242_ilg.Emit(OpCodes.Ldnull); 1243_ilg.Emit(OpCodes.Ceq); 1244_ilg.Emit(OpCodes.Dup); 1245_ilg.Emit(OpCodes.Ldloc, anyNull); 1246_ilg.Emit(OpCodes.Or); 1247_ilg.Emit(OpCodes.Stloc, anyNull); 1248_ilg.Emit(OpCodes.Ldloc, allNull); 1249_ilg.Emit(OpCodes.And); 1250_ilg.Emit(OpCodes.Stloc, allNull); 1254_ilg.Emit(OpCodes.Ldc_I4_0); 1255_ilg.Emit(OpCodes.Stloc, allNull); 1260_ilg.Emit(OpCodes.Ldloc, allNull); 1261_ilg.Emit(OpCodes.Brtrue, exitAllNull); 1262_ilg.Emit(OpCodes.Ldloc, anyNull); 1263_ilg.Emit(OpCodes.Brtrue, exitAnyNull); 1269_ilg.Emit(OpCodes.Newobj, ci); 1271_ilg.Emit(OpCodes.Br_S, exit); 1273_ilg.MarkLabel(exitAllNull); 1274_ilg.EmitPrimitive(nodeType == ExpressionType.Equal); 1275_ilg.Emit(OpCodes.Br_S, exit); 1277_ilg.MarkLabel(exitAnyNull); 1278_ilg.EmitPrimitive(nodeType == ExpressionType.NotEqual); 1280_ilg.MarkLabel(exit);
System\Linq\Expressions\Compiler\LambdaCompiler.Lambda.cs (8)
62_ilg.EmitNull(); 73_ilg.EmitNull(); 81_ilg.EmitNull(); 83_ilg.EmitNew(Closure_ObjectArray_ObjectArray); 104_ilg.EmitType(delegateType); 106_ilg.Emit(OpCodes.Callvirt, MethodInfo_CreateDelegate_Type_Object); 107_ilg.Emit(OpCodes.Castclass, delegateType); 240_ilg.Emit(OpCodes.Ret);
System\Linq\Expressions\Compiler\LambdaCompiler.Logical.cs (120)
19Label labFalse = _ilg.DefineLabel(); 25Label labEnd = _ilg.DefineLabel(); 30_ilg.Emit(OpCodes.Ret); 34_ilg.Emit(OpCodes.Br, labEnd); 36_ilg.MarkLabel(labFalse); 38_ilg.MarkLabel(labEnd); 42_ilg.MarkLabel(labFalse); 115Label labIfNull = _ilg.DefineLabel(); 116Label labEnd = _ilg.DefineLabel(); 118_ilg.Emit(OpCodes.Stloc, loc); 119_ilg.Emit(OpCodes.Ldloca, loc); 120_ilg.EmitHasValue(b.Left.Type); 121_ilg.Emit(OpCodes.Brfalse, labIfNull); 137_ilg.Emit(OpCodes.Ldloca, loc); 138_ilg.EmitGetValueOrDefault(b.Left.Type); 142_ilg.Emit(OpCodes.Ldloc, loc); 146_ilg.Emit(OpCodes.Callvirt, b.Conversion.Type.GetInvokeMethod()); 150_ilg.Emit(OpCodes.Ldloc, loc); 154_ilg.Emit(OpCodes.Ldloca, loc); 155_ilg.EmitGetValueOrDefault(b.Left.Type); 158_ilg.EmitConvertToType(nnLeftType, b.Type, isChecked: true, locals: this); 164_ilg.Emit(OpCodes.Br, labEnd); 165_ilg.MarkLabel(labIfNull); 169_ilg.EmitConvertToType(b.Right.Type, b.Type, isChecked: true, locals: this); 171_ilg.MarkLabel(labEnd); 178Label labEnd = _ilg.DefineLabel(); 179Label labNotNull = _ilg.DefineLabel(); 181_ilg.Emit(OpCodes.Dup); 182_ilg.Emit(OpCodes.Stloc, loc); 183_ilg.Emit(OpCodes.Brtrue, labNotNull); 185_ilg.Emit(OpCodes.Br, labEnd); 188_ilg.MarkLabel(labNotNull); 195_ilg.Emit(OpCodes.Ldloc, loc); 199_ilg.Emit(OpCodes.Callvirt, b.Conversion.Type.GetInvokeMethod()); 201_ilg.MarkLabel(labEnd); 207Label labEnd = _ilg.DefineLabel(); 208Label labCast = _ilg.DefineLabel(); 210_ilg.Emit(OpCodes.Dup); 211_ilg.Emit(OpCodes.Brtrue, labCast); 212_ilg.Emit(OpCodes.Pop); 218_ilg.Emit(OpCodes.Box, b.Right.Type); 220_ilg.Emit(OpCodes.Castclass, b.Type); 222_ilg.Emit(OpCodes.Br_S, labEnd); 223_ilg.MarkLabel(labCast); 227_ilg.Emit(OpCodes.Castclass, b.Type); 229_ilg.MarkLabel(labEnd); 239Label returnLeft = _ilg.DefineLabel(); 240Label returnRight = _ilg.DefineLabel(); 241Label exit = _ilg.DefineLabel(); 245_ilg.Emit(OpCodes.Stloc, locLeft); 246_ilg.Emit(OpCodes.Ldloca, locLeft); 247_ilg.EmitHasValue(type); 248_ilg.Emit(OpCodes.Ldloca, locLeft); 249_ilg.EmitGetValueOrDefault(type); 250_ilg.Emit(OpCodes.Not); 251_ilg.Emit(OpCodes.And); 253_ilg.Emit(OpCodes.Brtrue, returnLeft); 257_ilg.Emit(OpCodes.Stloc, locRight); 258_ilg.Emit(OpCodes.Ldloca, locLeft); 259_ilg.EmitGetValueOrDefault(type); 261_ilg.Emit(OpCodes.Brtrue_S, returnRight); 262_ilg.Emit(OpCodes.Ldloca, locRight); 263_ilg.EmitGetValueOrDefault(type); 265_ilg.Emit(OpCodes.Brtrue_S, returnLeft); 266_ilg.MarkLabel(returnRight); 267_ilg.Emit(OpCodes.Ldloc, locRight); 269_ilg.Emit(OpCodes.Br_S, exit); 270_ilg.MarkLabel(returnLeft); 271_ilg.Emit(OpCodes.Ldloc, locLeft); 273_ilg.MarkLabel(exit); 280Label labEnd = _ilg.DefineLabel(); 282_ilg.Emit(OpCodes.Dup); 285_ilg.Emit(OpCodes.Call, opFalse); 286_ilg.Emit(OpCodes.Brtrue, labEnd); 291_ilg.Emit(OpCodes.Tailcall); 294_ilg.Emit(OpCodes.Call, b.Method); 295_ilg.MarkLabel(labEnd); 300Label @else = _ilg.DefineLabel(); 301Label end = _ilg.DefineLabel(); 304_ilg.Emit(OpCodes.Br, end); 305_ilg.MarkLabel(@else); 306_ilg.Emit(OpCodes.Ldc_I4_0); 307_ilg.MarkLabel(end); 342Label returnLeft = _ilg.DefineLabel(); 343Label exit = _ilg.DefineLabel(); 346_ilg.Emit(OpCodes.Stloc, locLeft); 347_ilg.Emit(OpCodes.Ldloca, locLeft); 348_ilg.EmitGetValueOrDefault(type); 350_ilg.Emit(OpCodes.Brtrue, returnLeft); 353_ilg.Emit(OpCodes.Stloc, locRight); 354_ilg.Emit(OpCodes.Ldloca, locRight); 355_ilg.EmitGetValueOrDefault(type); 356_ilg.Emit(OpCodes.Ldloca, locLeft); 357_ilg.EmitHasValue(type); 358_ilg.Emit(OpCodes.Or); 360_ilg.Emit(OpCodes.Brfalse_S, returnLeft); 361_ilg.Emit(OpCodes.Ldloc, locRight); 363_ilg.Emit(OpCodes.Br_S, exit); 364_ilg.MarkLabel(returnLeft); 365_ilg.Emit(OpCodes.Ldloc, locLeft); 367_ilg.MarkLabel(exit); 372Label @else = _ilg.DefineLabel(); 373Label end = _ilg.DefineLabel(); 375_ilg.Emit(OpCodes.Ldc_I4_1); 376_ilg.Emit(OpCodes.Br, end); 377_ilg.MarkLabel(@else); 379_ilg.MarkLabel(end); 386Label labEnd = _ilg.DefineLabel(); 388_ilg.Emit(OpCodes.Dup); 392_ilg.Emit(OpCodes.Call, opTrue); 393_ilg.Emit(OpCodes.Brtrue, labEnd); 397_ilg.Emit(OpCodes.Tailcall); 400_ilg.Emit(OpCodes.Call, b.Method); 401_ilg.MarkLabel(labEnd); 491_ilg.Emit(branch ? OpCodes.Brtrue : OpCodes.Brfalse, label); 526_ilg.EmitHasValue(node.Right.Type); 540_ilg.EmitHasValue(node.Left.Type); 560_ilg.Emit(branchWhenEqual ? OpCodes.Beq : OpCodes.Bne_Un, label); 627Label endif = _ilg.DefineLabel(); 630_ilg.MarkLabel(endif);
System\Linq\Expressions\Compiler\LambdaCompiler.Statements.cs (53)
135_ilg.EmitDefault(node.Type, this); 151_ilg.Emit(OpCodes.Br, continueTarget.Label); 228Label end = _ilg.DefineLabel(); 229Label @default = (node.DefaultBody == null) ? end : _ilg.DefineLabel(); 429_ilg.Emit(OpCodes.Stloc, value); 432Label end = _ilg.DefineLabel(); 433Label @default = (node.DefaultBody == null) ? end : _ilg.DefineLabel(); 481label = _ilg.DefineLabel(); 488_ilg.Emit(OpCodes.Br, @default); 500_ilg.MarkLabel(labels[i]); 510_ilg.Emit(OpCodes.Ret); 514_ilg.Emit(OpCodes.Br, end); 522_ilg.MarkLabel(@default); 526_ilg.MarkLabel(end); 552Label secondHalf = _ilg.DefineLabel(); 553_ilg.Emit(OpCodes.Ldloc, info.Value); 555_ilg.Emit(info.IsUnsigned ? OpCodes.Bgt_Un : OpCodes.Bgt, secondHalf); 557_ilg.MarkLabel(secondHalf); 569_ilg.Emit(OpCodes.Ldloc, info.Value); 571_ilg.Emit(OpCodes.Beq, bucket[0].Label); 583after = _ilg.DefineLabel(); 584_ilg.Emit(OpCodes.Ldloc, info.Value); 586_ilg.Emit(info.IsUnsigned ? OpCodes.Bgt_Un : OpCodes.Bgt, after.Value); 587_ilg.Emit(OpCodes.Ldloc, info.Value); 589_ilg.Emit(info.IsUnsigned ? OpCodes.Blt_Un : OpCodes.Blt, after.Value); 592_ilg.Emit(OpCodes.Ldloc, info.Value); 599_ilg.Emit(OpCodes.Sub); 604_ilg.Emit(OpCodes.Conv_I4); 627_ilg.Emit(OpCodes.Switch, jmpLabels); 631_ilg.MarkLabel(after!.Value); 805_ilg.Emit(OpCodes.Pop); 820_ilg.BeginExceptionBlock(); 834_ilg.Emit(OpCodes.Stloc, value); 847_ilg.BeginCatchBlock(cb.Test); 851_ilg.BeginExceptFilterBlock(); 865_ilg.Emit(OpCodes.Stloc, value!); 883_ilg.BeginFinallyBlock(); 887_ilg.BeginFaultBlock(); 893_ilg.EndExceptionBlock(); 898_ilg.EndExceptionBlock(); 903_ilg.Emit(OpCodes.Ldloc, value!); 924Label endFilter = _ilg.DefineLabel(); 925Label rightType = _ilg.DefineLabel(); 930_ilg.Emit(OpCodes.Isinst, cb.Test); 931_ilg.Emit(OpCodes.Dup); 932_ilg.Emit(OpCodes.Brtrue, rightType); 933_ilg.Emit(OpCodes.Pop); 934_ilg.Emit(OpCodes.Ldc_I4_0); 935_ilg.Emit(OpCodes.Br, endFilter); 938_ilg.MarkLabel(rightType); 946_ilg.MarkLabel(endFilter); 947_ilg.BeginCatchBlock(exceptionType: null); 948_ilg.Emit(OpCodes.Pop);
System\Linq\Expressions\Compiler\LambdaCompiler.Unary.cs (57)
32_ilg.Emit(OpCodes.Call, RuntimeOps_Quote); 35_ilg.Emit(OpCodes.Castclass, quote.Type); 50_ilg.Emit(OpCodes.Rethrow); 55_ilg.Emit(OpCodes.Throw); 78Label nullOrZero = _ilg.DefineLabel(); 79Label end = _ilg.DefineLabel(); 84_ilg.Emit(OpCodes.Stloc, loc); 85_ilg.Emit(OpCodes.Ldloca, loc); 86_ilg.EmitGetValueOrDefault(type); 87_ilg.Emit(OpCodes.Brfalse_S, nullOrZero); 91_ilg.EmitDefault(nnType, locals: null); // locals won't be used. 92_ilg.Emit(OpCodes.Ldloca, loc); 93_ilg.EmitGetValueOrDefault(type); 97_ilg.Emit(OpCodes.Newobj, TypeUtils.GetNullableConstructor(type)); 98_ilg.Emit(OpCodes.Br_S, end); 101_ilg.MarkLabel(nullOrZero); 102_ilg.Emit(OpCodes.Ldloc, loc); 104_ilg.MarkLabel(end); 108_ilg.EmitDefault(type, locals: null); // locals won't be used. 126_ilg.Emit(OpCodes.Ldlen); 139_ilg.Emit(OpCodes.Box, operandType); 140_ilg.Emit(OpCodes.Isinst, resultType); 143_ilg.Emit(OpCodes.Unbox_Any, resultType); 150Label labIfNull = _ilg.DefineLabel(); 151Label labEnd = _ilg.DefineLabel(); 155_ilg.Emit(OpCodes.Stloc, loc); 156_ilg.Emit(OpCodes.Ldloca, loc); 157_ilg.EmitHasValue(operandType); 158_ilg.Emit(OpCodes.Brfalse_S, labIfNull); 161_ilg.Emit(OpCodes.Ldloca, loc); 162_ilg.EmitGetValueOrDefault(operandType); 168_ilg.Emit(OpCodes.Newobj, ci); 169_ilg.Emit(OpCodes.Br_S, labEnd); 172_ilg.MarkLabel(labIfNull); 173_ilg.Emit(OpCodes.Ldloc, loc); 175_ilg.MarkLabel(labEnd); 186_ilg.Emit(OpCodes.Ldc_I4_0); 187_ilg.Emit(OpCodes.Ceq); 193_ilg.Emit(OpCodes.Not); 201_ilg.Emit(OpCodes.Ldc_I4_0); 202_ilg.Emit(OpCodes.Ceq); 206_ilg.Emit(OpCodes.Ldc_I4_1); 207_ilg.Emit(OpCodes.Ceq); 215_ilg.Emit(OpCodes.Neg); 224_ilg.Emit(OpCodes.Box, operandType); 227_ilg.Emit(OpCodes.Isinst, resultType); 230_ilg.Emit(OpCodes.Unbox_Any, resultType); 238_ilg.Emit(OpCodes.Add); 242_ilg.Emit(OpCodes.Sub); 256_ilg.Emit(OpCodes.Ldc_I4_1); 257_ilg.Emit(OpCodes.Conv_I8); 260_ilg.Emit(OpCodes.Ldc_R4, 1.0f); 263_ilg.Emit(OpCodes.Ldc_R8, 1.0d); 266_ilg.Emit(OpCodes.Ldc_I4_1); 278_ilg.Emit(OpCodes.Unbox_Any, node.Type); 344_ilg.EmitConvertToType(node.Operand.Type, node.Type, node.NodeType == ExpressionType.ConvertChecked, this); 359_ilg.EmitConvertToType(resultType, node.Type, isChecked: false, locals: this);