3 writes to _ilg
System.Core (3)
Microsoft\Scripting\Compiler\LambdaCompiler.cs (3)
107_ilg = method.GetILGenerator(); 146_ilg = method.GetILGenerator(); 163_ilg = parent._ilg;
709 references to _ilg
System.Core (709)
Microsoft\Scripting\Compiler\LambdaCompiler.Address.cs (27)
87_ilg.Emit(OpCodes.Stloc, loc); 88_ilg.Emit(OpCodes.Ldloca, loc); 89_ilg.EmitGetValue(rightType); 94_ilg.EmitConvertToType(indexType, typeof(int), true); 96_ilg.Emit(OpCodes.Ldelema, node.Type); 151_ilg.EmitFieldAddress(field); 158_ilg.Emit(OpCodes.Stloc, temp); 159_ilg.Emit(OpCodes.Ldloca, temp); 190_ilg.Emit(OpCodes.Ldelema, node.Type); 203_ilg.Emit(OpCodes.Unbox, type); 211_ilg.Emit(OpCodes.Stloc, tmp); 212_ilg.Emit(OpCodes.Ldloca, tmp); 254_ilg.Emit(OpCodes.Dup); 255_ilg.Emit(OpCodes.Stloc, instanceLocal = GetLocal(instanceType)); 265_ilg.Emit(OpCodes.Stloc, valueLocal); 266_ilg.Emit(OpCodes.Ldloca, valueLocal); 272_ilg.Emit(OpCodes.Ldloc, instanceLocal); 275_ilg.Emit(OpCodes.Ldloc, valueLocal); 292_ilg.Emit(OpCodes.Dup); 293_ilg.Emit(OpCodes.Stloc, instanceLocal = GetLocal(instanceType)); 303_ilg.Emit(OpCodes.Dup); 304_ilg.Emit(OpCodes.Stloc, argLocal); 313_ilg.Emit(OpCodes.Stloc, valueLocal); 314_ilg.Emit(OpCodes.Ldloca, valueLocal); 320_ilg.Emit(OpCodes.Ldloc, instanceLocal); 324_ilg.Emit(OpCodes.Ldloc, arg); 327_ilg.Emit(OpCodes.Ldloc, valueLocal);
Microsoft\Scripting\Compiler\LambdaCompiler.Binary.cs (226)
88_ilg.EmitDefault(typeof(bool?)); 91_ilg.EmitHasValue(e.Type); 93_ilg.Emit(OpCodes.Ldc_I4_0); 94_ilg.Emit(OpCodes.Ceq); 145_ilg.EmitLoadElement(leftType.GetElementType()); 174_ilg.Emit(OpCodes.Add); 178_ilg.Emit(OpCodes.Add); 180_ilg.Emit(OpCodes.Add_Ovf_Un); 182_ilg.Emit(OpCodes.Add_Ovf); 186_ilg.Emit(OpCodes.Sub); 190_ilg.Emit(OpCodes.Sub); 192_ilg.Emit(OpCodes.Sub_Ovf_Un); 194_ilg.Emit(OpCodes.Sub_Ovf); 198_ilg.Emit(OpCodes.Mul); 202_ilg.Emit(OpCodes.Mul); 204_ilg.Emit(OpCodes.Mul_Ovf_Un); 206_ilg.Emit(OpCodes.Mul_Ovf); 211_ilg.Emit(OpCodes.Div_Un); 213_ilg.Emit(OpCodes.Div); 218_ilg.Emit(OpCodes.Rem_Un); 220_ilg.Emit(OpCodes.Rem); 225_ilg.Emit(OpCodes.And); 229_ilg.Emit(OpCodes.Or); 233_ilg.Emit(OpCodes.Clt_Un); 235_ilg.Emit(OpCodes.Clt); 239Label labFalse = _ilg.DefineLabel(); 240Label labEnd = _ilg.DefineLabel(); 242_ilg.Emit(OpCodes.Ble_Un_S, labFalse); 244_ilg.Emit(OpCodes.Ble_S, labFalse); 246_ilg.Emit(OpCodes.Ldc_I4_0); 247_ilg.Emit(OpCodes.Br_S, labEnd); 248_ilg.MarkLabel(labFalse); 249_ilg.Emit(OpCodes.Ldc_I4_1); 250_ilg.MarkLabel(labEnd); 255_ilg.Emit(OpCodes.Cgt_Un); 257_ilg.Emit(OpCodes.Cgt); 261Label labFalse = _ilg.DefineLabel(); 262Label labEnd = _ilg.DefineLabel(); 264_ilg.Emit(OpCodes.Bge_Un_S, labFalse); 266_ilg.Emit(OpCodes.Bge_S, labFalse); 268_ilg.Emit(OpCodes.Ldc_I4_0); 269_ilg.Emit(OpCodes.Br_S, labEnd); 270_ilg.MarkLabel(labFalse); 271_ilg.Emit(OpCodes.Ldc_I4_1); 272_ilg.MarkLabel(labEnd); 276_ilg.Emit(OpCodes.Xor); 282_ilg.Emit(OpCodes.Shl); 289_ilg.Emit(OpCodes.Shr_Un); 291_ilg.Emit(OpCodes.Shr); 308_ilg.Emit(IsChecked(op) ? OpCodes.Conv_Ovf_U1 : OpCodes.Conv_U1); 311_ilg.Emit(IsChecked(op) ? OpCodes.Conv_Ovf_I1 : OpCodes.Conv_I1); 314_ilg.Emit(IsChecked(op) ? OpCodes.Conv_Ovf_U2 : OpCodes.Conv_U2); 317_ilg.Emit(IsChecked(op) ? OpCodes.Conv_Ovf_I2 : OpCodes.Conv_I2); 327_ilg.Emit(OpCodes.Ceq); 329_ilg.Emit(OpCodes.Ldc_I4_0); 330_ilg.Emit(OpCodes.Ceq); 385Label shortCircuit = _ilg.DefineLabel(); 390_ilg.Emit(OpCodes.Stloc, locRight); 391_ilg.Emit(OpCodes.Stloc, locLeft); 395_ilg.Emit(OpCodes.Ldloca, locLeft); 396_ilg.EmitHasValue(leftType); 397_ilg.Emit(OpCodes.Ldc_I4_0); 398_ilg.Emit(OpCodes.Ceq); 399_ilg.Emit(OpCodes.Ldloca, locRight); 400_ilg.EmitHasValue(rightType); 401_ilg.Emit(OpCodes.Ldc_I4_0); 402_ilg.Emit(OpCodes.Ceq); 403_ilg.Emit(OpCodes.And); 404_ilg.Emit(OpCodes.Dup); 405_ilg.Emit(OpCodes.Brtrue_S, shortCircuit); 406_ilg.Emit(OpCodes.Pop); 409_ilg.Emit(OpCodes.Ldloca, locLeft); 410_ilg.EmitHasValue(leftType); 411_ilg.Emit(OpCodes.Ldloca, locRight); 412_ilg.EmitHasValue(rightType); 413_ilg.Emit(OpCodes.And); 415_ilg.Emit(OpCodes.Dup); 416_ilg.Emit(OpCodes.Brfalse_S, shortCircuit); 417_ilg.Emit(OpCodes.Pop); 420_ilg.Emit(OpCodes.Ldloca, locLeft); 421_ilg.EmitHasValue(leftType); 422_ilg.Emit(OpCodes.Ldloca, locRight); 423_ilg.EmitHasValue(rightType); 424_ilg.Emit(OpCodes.Or); 425_ilg.Emit(OpCodes.Dup); 426_ilg.Emit(OpCodes.Brfalse_S, shortCircuit); 427_ilg.Emit(OpCodes.Pop); 430_ilg.Emit(OpCodes.Ldloca, locLeft); 431_ilg.EmitHasValue(leftType); 432_ilg.Emit(OpCodes.Ldc_I4_0); 433_ilg.Emit(OpCodes.Ceq); 434_ilg.Emit(OpCodes.Ldloca, locRight); 435_ilg.EmitHasValue(rightType); 436_ilg.Emit(OpCodes.Ldc_I4_0); 437_ilg.Emit(OpCodes.Ceq); 438_ilg.Emit(OpCodes.Or); 439_ilg.Emit(OpCodes.Dup); 440_ilg.Emit(OpCodes.Brtrue_S, shortCircuit); 441_ilg.Emit(OpCodes.Pop); 444_ilg.Emit(OpCodes.Ldloca, locLeft); 445_ilg.EmitHasValue(leftType); 446_ilg.Emit(OpCodes.Ldloca, locRight); 447_ilg.EmitHasValue(rightType); 448_ilg.Emit(OpCodes.And); 449_ilg.Emit(OpCodes.Dup); 450_ilg.Emit(OpCodes.Brfalse_S, shortCircuit); 451_ilg.Emit(OpCodes.Pop); 455_ilg.Emit(OpCodes.Ldloca, locLeft); 456_ilg.EmitGetValueOrDefault(leftType); 457_ilg.Emit(OpCodes.Ldloca, locRight); 458_ilg.EmitGetValueOrDefault(rightType); 473_ilg.MarkLabel(shortCircuit); 477_ilg.EmitConvertToType(TypeUtils.GetNonNullableType(resultType), resultType, true); 481Label labEnd = _ilg.DefineLabel(); 482_ilg.Emit(OpCodes.Br, labEnd); 483_ilg.MarkLabel(shortCircuit); 484_ilg.Emit(OpCodes.Pop); 485_ilg.Emit(OpCodes.Ldnull); 486_ilg.Emit(OpCodes.Unbox_Any, resultType); 487_ilg.MarkLabel(labEnd); 498Label labIfNull = _ilg.DefineLabel(); 499Label labEnd = _ilg.DefineLabel(); 505_ilg.Emit(OpCodes.Stloc, locRight); 506_ilg.Emit(OpCodes.Stloc, locLeft); 511_ilg.Emit(OpCodes.Ldloca, locLeft); 512_ilg.EmitHasValue(leftType); 513_ilg.Emit(OpCodes.Brfalse_S, labIfNull); 516_ilg.Emit(OpCodes.Ldloca, locRight); 517_ilg.EmitHasValue(rightType); 518_ilg.Emit(OpCodes.Brfalse_S, labIfNull); 523_ilg.Emit(OpCodes.Ldloca, locLeft); 524_ilg.EmitGetValueOrDefault(leftType); 526_ilg.Emit(OpCodes.Ldloc, locLeft); 530_ilg.Emit(OpCodes.Ldloca, locRight); 531_ilg.EmitGetValueOrDefault(rightType); 533_ilg.Emit(OpCodes.Ldloc, locRight); 544_ilg.Emit(OpCodes.Newobj, ci); 545_ilg.Emit(OpCodes.Stloc, locResult); 546_ilg.Emit(OpCodes.Br_S, labEnd); 549_ilg.MarkLabel(labIfNull); 550_ilg.Emit(OpCodes.Ldloca, locResult); 551_ilg.Emit(OpCodes.Initobj, resultType); 553_ilg.MarkLabel(labEnd); 555_ilg.Emit(OpCodes.Ldloc, locResult); 564Label labComputeRight = _ilg.DefineLabel(); 565Label labReturnFalse = _ilg.DefineLabel(); 566Label labReturnNull = _ilg.DefineLabel(); 567Label labReturnValue = _ilg.DefineLabel(); 568Label labExit = _ilg.DefineLabel(); 573_ilg.Emit(OpCodes.Stloc, locRight); 574_ilg.Emit(OpCodes.Stloc, locLeft); 577_ilg.Emit(OpCodes.Ldloca, locLeft); 578_ilg.EmitHasValue(type); 579_ilg.Emit(OpCodes.Brfalse, labComputeRight); 580_ilg.Emit(OpCodes.Ldloca, locLeft); 581_ilg.EmitGetValueOrDefault(type); 582_ilg.Emit(OpCodes.Ldc_I4_0); 583_ilg.Emit(OpCodes.Ceq); 584_ilg.Emit(OpCodes.Brtrue, labReturnFalse); 587_ilg.MarkLabel(labComputeRight); 588_ilg.Emit(OpCodes.Ldloca, locRight); 589_ilg.EmitHasValue(type); 590_ilg.Emit(OpCodes.Brfalse_S, labReturnNull); 591_ilg.Emit(OpCodes.Ldloca, locRight); 596_ilg.EmitGetValueOrDefault(type); 597_ilg.Emit(OpCodes.Ldc_I4_0); 598_ilg.Emit(OpCodes.Ceq); 599_ilg.Emit(OpCodes.Brtrue_S, labReturnFalse); 602_ilg.Emit(OpCodes.Ldloca, locLeft); 603_ilg.EmitHasValue(type); 604_ilg.Emit(OpCodes.Brfalse, labReturnNull); 607_ilg.Emit(OpCodes.Ldc_I4_1); 608_ilg.Emit(OpCodes.Br_S, labReturnValue); 611_ilg.MarkLabel(labReturnFalse); 612_ilg.Emit(OpCodes.Ldc_I4_0); 613_ilg.Emit(OpCodes.Br_S, labReturnValue); 615_ilg.MarkLabel(labReturnValue); 617_ilg.Emit(OpCodes.Newobj, ci); 618_ilg.Emit(OpCodes.Stloc, locLeft); 619_ilg.Emit(OpCodes.Br, labExit); 622_ilg.MarkLabel(labReturnNull); 623_ilg.Emit(OpCodes.Ldloca, locLeft); 624_ilg.Emit(OpCodes.Initobj, type); 626_ilg.MarkLabel(labExit); 627_ilg.Emit(OpCodes.Ldloc, locLeft); 636Label labComputeRight = _ilg.DefineLabel(); 637Label labReturnTrue = _ilg.DefineLabel(); 638Label labReturnNull = _ilg.DefineLabel(); 639Label labReturnValue = _ilg.DefineLabel(); 640Label labExit = _ilg.DefineLabel(); 645_ilg.Emit(OpCodes.Stloc, locRight); 646_ilg.Emit(OpCodes.Stloc, locLeft); 649_ilg.Emit(OpCodes.Ldloca, locLeft); 650_ilg.EmitHasValue(type); 651_ilg.Emit(OpCodes.Brfalse, labComputeRight); 652_ilg.Emit(OpCodes.Ldloca, locLeft); 653_ilg.EmitGetValueOrDefault(type); 654_ilg.Emit(OpCodes.Ldc_I4_0); 655_ilg.Emit(OpCodes.Ceq); 656_ilg.Emit(OpCodes.Brfalse, labReturnTrue); 659_ilg.MarkLabel(labComputeRight); 660_ilg.Emit(OpCodes.Ldloca, locRight); 661_ilg.EmitHasValue(type); 662_ilg.Emit(OpCodes.Brfalse_S, labReturnNull); 663_ilg.Emit(OpCodes.Ldloca, locRight); 668_ilg.EmitGetValueOrDefault(type); 669_ilg.Emit(OpCodes.Ldc_I4_0); 670_ilg.Emit(OpCodes.Ceq); 671_ilg.Emit(OpCodes.Brfalse_S, labReturnTrue); 674_ilg.Emit(OpCodes.Ldloca, locLeft); 675_ilg.EmitHasValue(type); 676_ilg.Emit(OpCodes.Brfalse, labReturnNull); 679_ilg.Emit(OpCodes.Ldc_I4_0); 680_ilg.Emit(OpCodes.Br_S, labReturnValue); 683_ilg.MarkLabel(labReturnTrue); 684_ilg.Emit(OpCodes.Ldc_I4_1); 685_ilg.Emit(OpCodes.Br_S, labReturnValue); 687_ilg.MarkLabel(labReturnValue); 689_ilg.Emit(OpCodes.Newobj, ci); 690_ilg.Emit(OpCodes.Stloc, locLeft); 691_ilg.Emit(OpCodes.Br, labExit); 694_ilg.MarkLabel(labReturnNull); 695_ilg.Emit(OpCodes.Ldloca, locLeft); 696_ilg.Emit(OpCodes.Initobj, type); 698_ilg.MarkLabel(labExit); 699_ilg.Emit(OpCodes.Ldloc, locLeft);
Microsoft\Scripting\Compiler\LambdaCompiler.ControlFlow.cs (4)
32_labelInfo.Add(node, result = new LabelInfo(_ilg, node, false)); 45return new LabelInfo(_ilg, null, false); 133_ilg.EmitDefault(node.Type); 239_labelInfo.Add(label, new LabelInfo(_ilg, label, TypeUtils.AreReferenceAssignable(lambda.ReturnType, label.Type)));
Microsoft\Scripting\Compiler\LambdaCompiler.cs (6)
163_ilg = parent._ilg; 181get { return _ilg; } 255return _ilg.DeclareLocal(type); 267LocalBuilder lb = _ilg.DeclareLocal(type); 288_ilg.EmitLoadArg(GetLambdaArgument(index)); 294_ilg.EmitLoadArg(0);
Microsoft\Scripting\Compiler\LambdaCompiler.Expressions.cs (133)
122_ilg.Emit(OpCodes.Pop); 139_ilg.Emit(OpCodes.Castclass, type); 259_ilg.Emit(OpCodes.Dup); 260_ilg.Emit(OpCodes.Stloc, temp = GetLocal(node.Type)); 267_ilg.Emit(OpCodes.Ldloc, temp); 279_ilg.Emit(OpCodes.Call, node.Object.Type.GetMethod("Get", BindingFlags.Public | BindingFlags.Instance)); 282_ilg.EmitLoadElement(node.Type); 293_ilg.Emit(OpCodes.Call, node.Object.Type.GetMethod("Set", BindingFlags.Public | BindingFlags.Instance)); 296_ilg.EmitStoreElement(node.Type); 348_ilg.Emit(OpCodes.Constrained, objectType); 356_ilg.Emit(OpCodes.Tailcall); 359_ilg.EmitCall(callOp, mi, args.Map(a => a.Type)); 361_ilg.Emit(callOp, mi); 384_ilg.Emit(OpCodes.Constrained, objectType); 386_ilg.Emit(callOp, method); 473_ilg.EmitConstant(value, type); 496_ilg.Emit(OpCodes.Dup); 504_ilg.Emit(OpCodes.Stloc, siteTemp); 505_ilg.Emit(OpCodes.Ldfld, siteType.GetField("Target")); 506_ilg.Emit(OpCodes.Ldloc, siteTemp); 510_ilg.Emit(OpCodes.Callvirt, invoke); 519_ilg.Emit(OpCodes.Newobj, node.Constructor); 525_ilg.Emit(OpCodes.Ldloca, temp); 526_ilg.Emit(OpCodes.Initobj, node.Type); 527_ilg.Emit(OpCodes.Ldloc, temp); 550_ilg.EmitBoolean(result == AnalyzeTypeIsResult.KnownTrue); 559_ilg.EmitHasValue(type); 565_ilg.Emit(OpCodes.Ldnull); 566_ilg.Emit(OpCodes.Ceq); 567_ilg.Emit(OpCodes.Ldc_I4_0); 568_ilg.Emit(OpCodes.Ceq); 577_ilg.Emit(OpCodes.Box, type); 579_ilg.Emit(OpCodes.Isinst, node.TypeOperand); 580_ilg.Emit(OpCodes.Ldnull); 581_ilg.Emit(OpCodes.Cgt_Un); 590_ilg.Emit(OpCodes.Dup); 600_ilg.Emit(OpCodes.Stloc, value); 602_ilg.Emit(OpCodes.Ldloc, value); 604_ilg.EmitStoreValueIndirect(variable.Type); 634_ilg.EmitLoadValueIndirect(node.Type); 665_ilg.Emit(OpCodes.Dup); 666_ilg.Emit(OpCodes.Stloc, temp = GetLocal(node.Type)); 671_ilg.EmitFieldSet((FieldInfo)member); 681_ilg.Emit(OpCodes.Ldloc, temp); 706_ilg.EmitFieldGet(fi); 731_ilg.EmitArray( 743_ilg.EmitConvertToType(x.Type, typeof(int), true); 745_ilg.EmitArray(node.Type); 761_tree.DebugInfoGenerator.MarkSequencePoint(_lambda, _method, _ilg, node); 762_ilg.Emit(OpCodes.Nop); 801_ilg.Emit(OpCodes.Stfld, fi); 842loc = _ilg.DeclareLocal(init.NewExpression.Type); 843_ilg.Emit(OpCodes.Stloc, loc); 844_ilg.Emit(OpCodes.Ldloca, loc); 848_ilg.Emit(OpCodes.Ldloc, loc); 859_ilg.Emit(OpCodes.Pop); 864_ilg.Emit(OpCodes.Dup); 875loc = _ilg.DeclareLocal(init.NewExpression.Type); 876_ilg.Emit(OpCodes.Stloc, loc); 877_ilg.Emit(OpCodes.Ldloca, loc); 881_ilg.Emit(OpCodes.Ldloc, loc); 893_ilg.Emit(OpCodes.Pop); 898_ilg.Emit(OpCodes.Dup); 904_ilg.Emit(OpCodes.Pop); 946Label exit = _ilg.DefineLabel(); 947Label exitNull = _ilg.DefineLabel(); 948LocalBuilder anyNull = _ilg.DeclareLocal(typeof(bool)); 955_ilg.Emit(OpCodes.Dup); 956_ilg.EmitHasValue(arg.Type); 957_ilg.Emit(OpCodes.Ldc_I4_0); 958_ilg.Emit(OpCodes.Ceq); 959_ilg.Emit(OpCodes.Stloc, anyNull); 960_ilg.EmitGetValueOrDefault(arg.Type); 966_ilg.Emit(OpCodes.Dup); 967_ilg.Emit(OpCodes.Ldnull); 968_ilg.Emit(OpCodes.Ceq); 969_ilg.Emit(OpCodes.Stloc, anyNull); 973_ilg.Emit(OpCodes.Ldloc, anyNull); 974_ilg.Emit(OpCodes.Brtrue, exitNull); 979_ilg.Emit(OpCodes.Newobj, ci); 981_ilg.Emit(OpCodes.Br_S, exit); 982_ilg.MarkLabel(exitNull); 986_ilg.Emit(OpCodes.Ldloca, result); 987_ilg.Emit(OpCodes.Initobj, resultType); 988_ilg.Emit(OpCodes.Ldloc, result); 991_ilg.Emit(OpCodes.Ldnull); 999_ilg.Emit(OpCodes.Ldc_I4_0); 1005_ilg.MarkLabel(exit); 1013Label exit = _ilg.DefineLabel(); 1014Label exitAllNull = _ilg.DefineLabel(); 1015Label exitAnyNull = _ilg.DefineLabel(); 1017LocalBuilder anyNull = _ilg.DeclareLocal(typeof(bool)); 1018LocalBuilder allNull = _ilg.DeclareLocal(typeof(bool)); 1019_ilg.Emit(OpCodes.Ldc_I4_0); 1020_ilg.Emit(OpCodes.Stloc, anyNull); 1021_ilg.Emit(OpCodes.Ldc_I4_1); 1022_ilg.Emit(OpCodes.Stloc, allNull); 1030_ilg.Emit(OpCodes.Dup); 1031_ilg.EmitHasValue(arg.Type); 1032_ilg.Emit(OpCodes.Ldc_I4_0); 1033_ilg.Emit(OpCodes.Ceq); 1034_ilg.Emit(OpCodes.Dup); 1035_ilg.Emit(OpCodes.Ldloc, anyNull); 1036_ilg.Emit(OpCodes.Or); 1037_ilg.Emit(OpCodes.Stloc, anyNull); 1038_ilg.Emit(OpCodes.Ldloc, allNull); 1039_ilg.Emit(OpCodes.And); 1040_ilg.Emit(OpCodes.Stloc, allNull); 1041_ilg.EmitGetValueOrDefault(arg.Type); 1045_ilg.Emit(OpCodes.Dup); 1046_ilg.Emit(OpCodes.Ldnull); 1047_ilg.Emit(OpCodes.Ceq); 1048_ilg.Emit(OpCodes.Dup); 1049_ilg.Emit(OpCodes.Ldloc, anyNull); 1050_ilg.Emit(OpCodes.Or); 1051_ilg.Emit(OpCodes.Stloc, anyNull); 1052_ilg.Emit(OpCodes.Ldloc, allNull); 1053_ilg.Emit(OpCodes.And); 1054_ilg.Emit(OpCodes.Stloc, allNull); 1056_ilg.Emit(OpCodes.Ldc_I4_0); 1057_ilg.Emit(OpCodes.Stloc, allNull); 1062_ilg.Emit(OpCodes.Ldloc, allNull); 1063_ilg.Emit(OpCodes.Brtrue, exitAllNull); 1064_ilg.Emit(OpCodes.Ldloc, anyNull); 1065_ilg.Emit(OpCodes.Brtrue, exitAnyNull); 1070_ilg.Emit(OpCodes.Newobj, ci); 1072_ilg.Emit(OpCodes.Br_S, exit); 1074_ilg.MarkLabel(exitAllNull); 1075_ilg.EmitBoolean(nodeType == ExpressionType.Equal); 1076_ilg.Emit(OpCodes.Br_S, exit); 1078_ilg.MarkLabel(exitAnyNull); 1079_ilg.EmitBoolean(nodeType == ExpressionType.NotEqual); 1081_ilg.MarkLabel(exit);
Microsoft\Scripting\Compiler\LambdaCompiler.Lambda.cs (19)
46Label l = _ilg.DefineLabel(); 47_ilg.Emit(OpCodes.Ldsfld, fb); 48_ilg.Emit(OpCodes.Ldnull); 49_ilg.Emit(OpCodes.Bne_Un, l); 50_ilg.EmitArray(array); 51_ilg.Emit(OpCodes.Stsfld, fb); 52_ilg.MarkLabel(l); 53_ilg.Emit(OpCodes.Ldsfld, fb); 55_ilg.EmitArray(array); 64_ilg.EmitNull(); 72_ilg.EmitNull(); 77_ilg.EmitNull(); 79_ilg.EmitNew(typeof(Closure).GetConstructor(new Type[] { typeof(object[]), typeof(object[]) })); 99_ilg.EmitType(delegateType); 104_ilg.Emit(OpCodes.Callvirt, typeof(MethodInfo).GetMethod("CreateDelegate", new Type[] { typeof(Type), typeof(object) })); 106_ilg.Emit(OpCodes.Castclass, delegateType); 110_ilg.Emit(OpCodes.Ldftn, (MethodInfo)inner._method); 111_ilg.Emit(OpCodes.Newobj, (ConstructorInfo)(delegateType.GetMember(".ctor")[0])); 190_ilg.Emit(OpCodes.Ret);
Microsoft\Scripting\Compiler\LambdaCompiler.Logical.cs (175)
39Label labFalse = _ilg.DefineLabel(); 44Label labEnd = _ilg.DefineLabel(); 48_ilg.Emit(OpCodes.Ret); 50_ilg.Emit(OpCodes.Br, labEnd); 52_ilg.MarkLabel(labFalse); 54_ilg.MarkLabel(labEnd); 56_ilg.MarkLabel(labFalse); 114Label labIfNull = _ilg.DefineLabel(); 115Label labEnd = _ilg.DefineLabel(); 117_ilg.Emit(OpCodes.Stloc, loc); 118_ilg.Emit(OpCodes.Ldloca, loc); 119_ilg.EmitHasValue(b.Left.Type); 120_ilg.Emit(OpCodes.Brfalse, labIfNull); 134_ilg.Emit(OpCodes.Ldloca, loc); 135_ilg.EmitGetValueOrDefault(b.Left.Type); 137_ilg.Emit(OpCodes.Ldloc, loc); 141_ilg.Emit(OpCodes.Callvirt, b.Conversion.Type.GetMethod("Invoke")); 143_ilg.Emit(OpCodes.Ldloca, loc); 144_ilg.EmitGetValueOrDefault(b.Left.Type); 145_ilg.EmitConvertToType(nnLeftType, b.Type, true); 147_ilg.Emit(OpCodes.Ldloca, loc); 148_ilg.EmitGetValueOrDefault(b.Left.Type); 152_ilg.Emit(OpCodes.Br, labEnd); 153_ilg.MarkLabel(labIfNull); 156_ilg.EmitConvertToType(b.Right.Type, b.Type, true); 158_ilg.MarkLabel(labEnd); 164Label labEnd = _ilg.DefineLabel(); 165Label labNotNull = _ilg.DefineLabel(); 167_ilg.Emit(OpCodes.Dup); 168_ilg.Emit(OpCodes.Stloc, loc); 169_ilg.Emit(OpCodes.Ldnull); 170_ilg.Emit(OpCodes.Ceq); 171_ilg.Emit(OpCodes.Brfalse, labNotNull); 173_ilg.Emit(OpCodes.Br, labEnd); 176_ilg.MarkLabel(labNotNull); 183_ilg.Emit(OpCodes.Ldloc, loc); 187_ilg.Emit(OpCodes.Callvirt, b.Conversion.Type.GetMethod("Invoke")); 189_ilg.MarkLabel(labEnd); 194Label labEnd = _ilg.DefineLabel(); 195Label labCast = _ilg.DefineLabel(); 197_ilg.Emit(OpCodes.Dup); 198_ilg.Emit(OpCodes.Ldnull); 199_ilg.Emit(OpCodes.Ceq); 200_ilg.Emit(OpCodes.Brfalse, labCast); 201_ilg.Emit(OpCodes.Pop); 205_ilg.Emit(OpCodes.Box, b.Right.Type); 207_ilg.Emit(OpCodes.Castclass, b.Type); 209_ilg.Emit(OpCodes.Br_S, labEnd); 210_ilg.MarkLabel(labCast); 213_ilg.Emit(OpCodes.Castclass, b.Type); 215_ilg.MarkLabel(labEnd); 224Label labComputeRight = _ilg.DefineLabel(); 225Label labReturnFalse = _ilg.DefineLabel(); 226Label labReturnNull = _ilg.DefineLabel(); 227Label labReturnValue = _ilg.DefineLabel(); 228Label labExit = _ilg.DefineLabel(); 232_ilg.Emit(OpCodes.Stloc, locLeft); 233_ilg.Emit(OpCodes.Ldloca, locLeft); 234_ilg.EmitHasValue(type); 235_ilg.Emit(OpCodes.Brfalse, labComputeRight); 236_ilg.Emit(OpCodes.Ldloca, locLeft); 237_ilg.EmitGetValueOrDefault(type); 238_ilg.Emit(OpCodes.Ldc_I4_0); 239_ilg.Emit(OpCodes.Ceq); 240_ilg.Emit(OpCodes.Brtrue, labReturnFalse); 242_ilg.MarkLabel(labComputeRight); 244_ilg.Emit(OpCodes.Stloc, locRight); 245_ilg.Emit(OpCodes.Ldloca, locRight); 246_ilg.EmitHasValue(type); 247_ilg.Emit(OpCodes.Brfalse_S, labReturnNull); 248_ilg.Emit(OpCodes.Ldloca, locRight); 249_ilg.EmitGetValueOrDefault(type); 250_ilg.Emit(OpCodes.Ldc_I4_0); 251_ilg.Emit(OpCodes.Ceq); 252_ilg.Emit(OpCodes.Brtrue_S, labReturnFalse); 254_ilg.Emit(OpCodes.Ldloca, locLeft); 255_ilg.EmitHasValue(type); 256_ilg.Emit(OpCodes.Brfalse, labReturnNull); 258_ilg.Emit(OpCodes.Ldc_I4_1); 259_ilg.Emit(OpCodes.Br_S, labReturnValue); 261_ilg.MarkLabel(labReturnFalse); 262_ilg.Emit(OpCodes.Ldc_I4_0); 263_ilg.Emit(OpCodes.Br_S, labReturnValue); 264_ilg.MarkLabel(labReturnValue); 266_ilg.Emit(OpCodes.Newobj, ci); 267_ilg.Emit(OpCodes.Stloc, locLeft); 268_ilg.Emit(OpCodes.Br, labExit); 270_ilg.MarkLabel(labReturnNull); 271_ilg.Emit(OpCodes.Ldloca, locLeft); 272_ilg.Emit(OpCodes.Initobj, type); 273_ilg.MarkLabel(labExit); 274_ilg.Emit(OpCodes.Ldloc, locLeft); 280Label labEnd = _ilg.DefineLabel(); 282_ilg.Emit(OpCodes.Dup); 285_ilg.Emit(OpCodes.Call, opFalse); 286_ilg.Emit(OpCodes.Brtrue, labEnd); 290_ilg.Emit(OpCodes.Stloc, locLeft); 295_ilg.Emit(OpCodes.Stloc, locRight); 298_ilg.Emit(OpCodes.Ldloc, locLeft); 299_ilg.Emit(OpCodes.Ldloc, locRight); 301_ilg.Emit(OpCodes.Tailcall); 303_ilg.Emit(OpCodes.Call, b.Method); 306_ilg.MarkLabel(labEnd); 310Label @else = _ilg.DefineLabel(); 311Label end = _ilg.DefineLabel(); 314_ilg.Emit(OpCodes.Br, end); 315_ilg.MarkLabel(@else); 316_ilg.Emit(OpCodes.Ldc_I4_0); 317_ilg.MarkLabel(end); 340Label labComputeRight = _ilg.DefineLabel(); 341Label labReturnTrue = _ilg.DefineLabel(); 342Label labReturnNull = _ilg.DefineLabel(); 343Label labReturnValue = _ilg.DefineLabel(); 344Label labExit = _ilg.DefineLabel(); 348_ilg.Emit(OpCodes.Stloc, locLeft); 349_ilg.Emit(OpCodes.Ldloca, locLeft); 350_ilg.EmitHasValue(type); 351_ilg.Emit(OpCodes.Brfalse, labComputeRight); 352_ilg.Emit(OpCodes.Ldloca, locLeft); 353_ilg.EmitGetValueOrDefault(type); 354_ilg.Emit(OpCodes.Ldc_I4_0); 355_ilg.Emit(OpCodes.Ceq); 356_ilg.Emit(OpCodes.Brfalse, labReturnTrue); 358_ilg.MarkLabel(labComputeRight); 360_ilg.Emit(OpCodes.Stloc, locRight); 361_ilg.Emit(OpCodes.Ldloca, locRight); 362_ilg.EmitHasValue(type); 363_ilg.Emit(OpCodes.Brfalse_S, labReturnNull); 364_ilg.Emit(OpCodes.Ldloca, locRight); 365_ilg.EmitGetValueOrDefault(type); 366_ilg.Emit(OpCodes.Ldc_I4_0); 367_ilg.Emit(OpCodes.Ceq); 368_ilg.Emit(OpCodes.Brfalse_S, labReturnTrue); 370_ilg.Emit(OpCodes.Ldloca, locLeft); 371_ilg.EmitHasValue(type); 372_ilg.Emit(OpCodes.Brfalse, labReturnNull); 374_ilg.Emit(OpCodes.Ldc_I4_0); 375_ilg.Emit(OpCodes.Br_S, labReturnValue); 377_ilg.MarkLabel(labReturnTrue); 378_ilg.Emit(OpCodes.Ldc_I4_1); 379_ilg.Emit(OpCodes.Br_S, labReturnValue); 380_ilg.MarkLabel(labReturnValue); 382_ilg.Emit(OpCodes.Newobj, ci); 383_ilg.Emit(OpCodes.Stloc, locLeft); 384_ilg.Emit(OpCodes.Br, labExit); 386_ilg.MarkLabel(labReturnNull); 387_ilg.Emit(OpCodes.Ldloca, locLeft); 388_ilg.Emit(OpCodes.Initobj, type); 389_ilg.MarkLabel(labExit); 390_ilg.Emit(OpCodes.Ldloc, locLeft); 396Label @else = _ilg.DefineLabel(); 397Label end = _ilg.DefineLabel(); 399_ilg.Emit(OpCodes.Ldc_I4_1); 400_ilg.Emit(OpCodes.Br, end); 401_ilg.MarkLabel(@else); 403_ilg.MarkLabel(end); 407Label labEnd = _ilg.DefineLabel(); 409_ilg.Emit(OpCodes.Dup); 412_ilg.Emit(OpCodes.Call, opTrue); 413_ilg.Emit(OpCodes.Brtrue, labEnd); 417_ilg.Emit(OpCodes.Stloc, locLeft); 422_ilg.Emit(OpCodes.Stloc, locRight); 425_ilg.Emit(OpCodes.Ldloc, locLeft); 426_ilg.Emit(OpCodes.Ldloc, locRight); 428_ilg.Emit(OpCodes.Tailcall); 430_ilg.Emit(OpCodes.Call, b.Method); 433_ilg.MarkLabel(labEnd); 507_ilg.Emit(branch ? OpCodes.Brtrue : OpCodes.Brfalse, label); 534_ilg.EmitHasValue(node.Right.Type); 543_ilg.EmitHasValue(node.Left.Type); 558_ilg.Emit(OpCodes.Beq, label); 560_ilg.Emit(OpCodes.Ceq); 561_ilg.Emit(OpCodes.Brfalse, label); 620Label endif = _ilg.DefineLabel(); 623_ilg.MarkLabel(endif);
Microsoft\Scripting\Compiler\LambdaCompiler.Statements.cs (58)
135_ilg.EmitDefault(node.Type); 150_ilg.Emit(OpCodes.Br, continueTarget.Label); 201Label end = _ilg.DefineLabel(); 202Label @default = (node.DefaultBody == null) ? end : _ilg.DefineLabel(); 379_ilg.Emit(OpCodes.Stloc, value); 382Label end = _ilg.DefineLabel(); 383Label @default = (node.DefaultBody == null) ? end : _ilg.DefineLabel(); 426label = _ilg.DefineLabel(); 432_ilg.Emit(OpCodes.Br, @default); 442_ilg.MarkLabel(labels[i]); 450_ilg.Emit(OpCodes.Ret); 452_ilg.Emit(OpCodes.Br, end); 459_ilg.MarkLabel(@default); 463_ilg.MarkLabel(end); 482Label secondHalf = _ilg.DefineLabel(); 483_ilg.Emit(OpCodes.Ldloc, info.Value); 484_ilg.EmitConstant(buckets[mid - 1].Last().Constant); 485_ilg.Emit(info.IsUnsigned ? OpCodes.Bgt_Un : OpCodes.Bgt, secondHalf); 487_ilg.MarkLabel(secondHalf); 496_ilg.Emit(OpCodes.Ldloc, info.Value); 497_ilg.EmitConstant(bucket[0].Constant); 498_ilg.Emit(OpCodes.Beq, bucket[0].Label); 509after = _ilg.DefineLabel(); 510_ilg.Emit(OpCodes.Ldloc, info.Value); 511_ilg.EmitConstant(bucket.Last().Constant); 512_ilg.Emit(info.IsUnsigned ? OpCodes.Bgt_Un : OpCodes.Bgt, after.Value); 513_ilg.Emit(OpCodes.Ldloc, info.Value); 514_ilg.EmitConstant(bucket[0].Constant); 515_ilg.Emit(info.IsUnsigned ? OpCodes.Blt_Un : OpCodes.Blt, after.Value); 518_ilg.Emit(OpCodes.Ldloc, info.Value); 523_ilg.EmitConstant(bucket[0].Constant); 524_ilg.Emit(OpCodes.Sub); 528_ilg.Emit(OpCodes.Conv_I4); 549_ilg.Emit(OpCodes.Switch, jmpLabels); 552_ilg.MarkLabel(after.Value); 693_ilg.Emit(OpCodes.Pop); 707_ilg.BeginExceptionBlock(); 720_ilg.Emit(OpCodes.Stloc, value); 731_ilg.BeginCatchBlock(cb.Test); 733_ilg.BeginExceptFilterBlock(); 746_ilg.Emit(OpCodes.Stloc, value); 762_ilg.BeginFinallyBlock(); 764_ilg.BeginFaultBlock(); 770_ilg.EndExceptionBlock(); 773_ilg.EndExceptionBlock(); 777_ilg.Emit(OpCodes.Ldloc, value); 796Label endFilter = _ilg.DefineLabel(); 797Label rightType = _ilg.DefineLabel(); 802_ilg.Emit(OpCodes.Isinst, cb.Test); 803_ilg.Emit(OpCodes.Dup); 804_ilg.Emit(OpCodes.Brtrue, rightType); 805_ilg.Emit(OpCodes.Pop); 806_ilg.Emit(OpCodes.Ldc_I4_0); 807_ilg.Emit(OpCodes.Br, endFilter); 810_ilg.MarkLabel(rightType); 818_ilg.MarkLabel(endFilter); 819_ilg.BeginCatchBlock(null); 820_ilg.Emit(OpCodes.Pop);
Microsoft\Scripting\Compiler\LambdaCompiler.Unary.cs (61)
49_ilg.Emit(OpCodes.Call, typeof(RuntimeOps).GetMethod("Quote")); 52_ilg.Emit(OpCodes.Castclass, quote.Type); 65_ilg.Emit(OpCodes.Rethrow); 68_ilg.Emit(OpCodes.Throw); 84_ilg.Emit(OpCodes.Stloc, loc); 85_ilg.EmitInt(0); 86_ilg.EmitConvertToType(typeof(int), node.Operand.Type, false); 87_ilg.Emit(OpCodes.Ldloc, loc); 101_ilg.Emit(OpCodes.Ldlen); 111Label labEnd = _ilg.DefineLabel(); 115_ilg.Emit(OpCodes.Stloc, loc); 118_ilg.Emit(OpCodes.Ldloca, loc); 119_ilg.EmitHasValue(operandType); 120_ilg.Emit(OpCodes.Brfalse_S, labEnd); 123_ilg.Emit(OpCodes.Ldloca, loc); 124_ilg.EmitGetValueOrDefault(operandType); 130_ilg.Emit(OpCodes.Newobj, ci); 131_ilg.Emit(OpCodes.Stloc, loc); 133_ilg.MarkLabel(labEnd); 134_ilg.Emit(OpCodes.Ldloc, loc); 147Label labIfNull = _ilg.DefineLabel(); 148Label labEnd = _ilg.DefineLabel(); 152_ilg.Emit(OpCodes.Stloc, loc); 153_ilg.Emit(OpCodes.Ldloca, loc); 154_ilg.EmitHasValue(operandType); 155_ilg.Emit(OpCodes.Brfalse_S, labIfNull); 158_ilg.Emit(OpCodes.Ldloca, loc); 159_ilg.EmitGetValueOrDefault(operandType); 165_ilg.Emit(OpCodes.Newobj, ci); 166_ilg.Emit(OpCodes.Stloc, loc); 167_ilg.Emit(OpCodes.Br_S, labEnd); 170_ilg.MarkLabel(labIfNull); 171_ilg.Emit(OpCodes.Ldloca, loc); 172_ilg.Emit(OpCodes.Initobj, resultType); 174_ilg.MarkLabel(labEnd); 175_ilg.Emit(OpCodes.Ldloc, loc); 180_ilg.Emit(OpCodes.Box, operandType); 181_ilg.Emit(OpCodes.Isinst, resultType); 183_ilg.Emit(OpCodes.Unbox_Any, resultType); 193_ilg.Emit(OpCodes.Ldc_I4_0); 194_ilg.Emit(OpCodes.Ceq); 196_ilg.Emit(OpCodes.Not); 200_ilg.Emit(OpCodes.Not); 203_ilg.Emit(OpCodes.Ldc_I4_0); 204_ilg.Emit(OpCodes.Ceq); 208_ilg.Emit(OpCodes.Ldc_I4_1); 209_ilg.Emit(OpCodes.Ceq); 213_ilg.Emit(OpCodes.Nop); 217_ilg.Emit(OpCodes.Neg); 221_ilg.Emit(OpCodes.Box, operandType); 223_ilg.Emit(OpCodes.Isinst, resultType); 225_ilg.Emit(OpCodes.Unbox_Any, resultType); 231_ilg.Emit(OpCodes.Add); 235_ilg.Emit(OpCodes.Sub); 251_ilg.Emit(OpCodes.Ldc_I4_1); 255_ilg.Emit(OpCodes.Ldc_I8, (long)1); 258_ilg.Emit(OpCodes.Ldc_R4, 1.0f); 261_ilg.Emit(OpCodes.Ldc_R8, 1.0d); 276_ilg.Emit(OpCodes.Unbox_Any, node.Type); 329_ilg.EmitConvertToType(node.Operand.Type, node.Type, node.NodeType == ExpressionType.ConvertChecked); 342_ilg.EmitConvertToType(resultType, node.Type, false);