Compiler\CompilerTypeSystemContext.InterfaceThunks.cs (7)
238codeStream.Emit(ILOpcode.call, emit.NewToken(getCurrentContext));
243codeStream.Emit(ILOpcode.ldfld, emit.NewToken(eeTypeField));
249codeStream.Emit(ILOpcode.call, emit.NewToken(getOrdinalInterfaceMethod));
252codeStream.Emit(ILOpcode.call, emit.NewToken(Context.GetCoreLibEntryPoint("System.Runtime.CompilerServices"u8, "RuntimeHelpers"u8, "SetNextCallGenericContext"u8, null)));
262codeStream.Emit(ILOpcode.call, emit.NewToken(Context.GetCoreLibEntryPoint("System.Runtime.CompilerServices"u8, "AsyncHelpers"u8, "TailAwait"u8, null)));
265codeStream.Emit(ILOpcode.call, emit.NewToken(_targetMethod));
266codeStream.Emit(ILOpcode.ret);
Compiler\Dataflow\MethodBodyScanner.cs (251)
190ILOpcode opcode = reader.ReadILOpcode();
379ILOpcode opcode = reader.ReadILOpcode();
383case ILOpcode.add:
384case ILOpcode.add_ovf:
385case ILOpcode.add_ovf_un:
386case ILOpcode.and:
387case ILOpcode.div:
388case ILOpcode.div_un:
389case ILOpcode.mul:
390case ILOpcode.mul_ovf:
391case ILOpcode.mul_ovf_un:
392case ILOpcode.or:
393case ILOpcode.rem:
394case ILOpcode.rem_un:
395case ILOpcode.sub:
396case ILOpcode.sub_ovf:
397case ILOpcode.sub_ovf_un:
398case ILOpcode.xor:
399case ILOpcode.cgt:
400case ILOpcode.cgt_un:
401case ILOpcode.clt:
402case ILOpcode.clt_un:
403case ILOpcode.shl:
404case ILOpcode.shr:
405case ILOpcode.shr_un:
406case ILOpcode.ceq:
412case ILOpcode.dup:
416case ILOpcode.ldnull:
421case ILOpcode.ldc_i4_0:
422case ILOpcode.ldc_i4_1:
423case ILOpcode.ldc_i4_2:
424case ILOpcode.ldc_i4_3:
425case ILOpcode.ldc_i4_4:
426case ILOpcode.ldc_i4_5:
427case ILOpcode.ldc_i4_6:
428case ILOpcode.ldc_i4_7:
429case ILOpcode.ldc_i4_8:
431int value = opcode - ILOpcode.ldc_i4_0;
438case ILOpcode.ldc_i4_m1:
446case ILOpcode.ldc_i4:
455case ILOpcode.ldc_i4_s:
464case ILOpcode.arglist:
465case ILOpcode.sizeof_:
466case ILOpcode.ldc_i8:
467case ILOpcode.ldc_r4:
468case ILOpcode.ldc_r8:
473case ILOpcode.ldftn:
485case ILOpcode.ldarg:
486case ILOpcode.ldarg_0:
487case ILOpcode.ldarg_1:
488case ILOpcode.ldarg_2:
489case ILOpcode.ldarg_3:
490case ILOpcode.ldarg_s:
491case ILOpcode.ldarga:
492case ILOpcode.ldarga_s:
495ILOpcode.ldarg => reader.ReadILUInt16(),
496ILOpcode.ldarga => reader.ReadILUInt16(),
497ILOpcode.ldarg_s => reader.ReadILByte(),
498ILOpcode.ldarga_s => reader.ReadILByte(),
499_ => opcode - ILOpcode.ldarg_0
503case ILOpcode.ldloc:
504case ILOpcode.ldloc_0:
505case ILOpcode.ldloc_1:
506case ILOpcode.ldloc_2:
507case ILOpcode.ldloc_3:
508case ILOpcode.ldloc_s:
509case ILOpcode.ldloca:
510case ILOpcode.ldloca_s:
513ILOpcode.ldloc => reader.ReadILUInt16(),
514ILOpcode.ldloca => reader.ReadILUInt16(),
515ILOpcode.ldloc_s => reader.ReadILByte(),
516ILOpcode.ldloca_s => reader.ReadILByte(),
517_ => opcode - ILOpcode.ldloc_0
522case ILOpcode.ldstr:
529case ILOpcode.ldtoken:
534case ILOpcode.ldvirtftn:
546case ILOpcode.ldind_i:
547case ILOpcode.ldind_i1:
548case ILOpcode.ldind_i2:
549case ILOpcode.ldind_i4:
550case ILOpcode.ldind_i8:
551case ILOpcode.ldind_r4:
552case ILOpcode.ldind_r8:
553case ILOpcode.ldind_u1:
554case ILOpcode.ldind_u2:
555case ILOpcode.ldind_u4:
556case ILOpcode.ldlen:
557case ILOpcode.localloc:
558case ILOpcode.refanytype:
559case ILOpcode.refanyval:
560case ILOpcode.conv_i1:
561case ILOpcode.conv_i2:
562case ILOpcode.conv_i4:
563case ILOpcode.conv_ovf_i1:
564case ILOpcode.conv_ovf_i1_un:
565case ILOpcode.conv_ovf_i2:
566case ILOpcode.conv_ovf_i2_un:
567case ILOpcode.conv_ovf_i4:
568case ILOpcode.conv_ovf_i4_un:
569case ILOpcode.conv_ovf_u:
570case ILOpcode.conv_ovf_u_un:
571case ILOpcode.conv_ovf_u1:
572case ILOpcode.conv_ovf_u1_un:
573case ILOpcode.conv_ovf_u2:
574case ILOpcode.conv_ovf_u2_un:
575case ILOpcode.conv_ovf_u4:
576case ILOpcode.conv_ovf_u4_un:
577case ILOpcode.conv_u1:
578case ILOpcode.conv_u2:
579case ILOpcode.conv_u4:
580case ILOpcode.conv_i8:
581case ILOpcode.conv_ovf_i8:
582case ILOpcode.conv_ovf_i8_un:
583case ILOpcode.conv_ovf_u8:
584case ILOpcode.conv_ovf_u8_un:
585case ILOpcode.conv_u8:
586case ILOpcode.conv_i:
587case ILOpcode.conv_ovf_i:
588case ILOpcode.conv_ovf_i_un:
589case ILOpcode.conv_u:
590case ILOpcode.conv_r_un:
591case ILOpcode.conv_r4:
592case ILOpcode.conv_r8:
593case ILOpcode.ldind_ref:
594case ILOpcode.ldobj:
595case ILOpcode.unbox:
596case ILOpcode.unbox_any:
597case ILOpcode.neg:
598case ILOpcode.not:
604case ILOpcode.box:
605case ILOpcode.mkrefany:
611case ILOpcode.isinst:
612case ILOpcode.castclass:
619case ILOpcode.ldfld:
620case ILOpcode.ldsfld:
621case ILOpcode.ldflda:
622case ILOpcode.ldsflda:
626case ILOpcode.newarr:
635case ILOpcode.stelem_i:
636case ILOpcode.stelem_i1:
637case ILOpcode.stelem_i2:
638case ILOpcode.stelem_i4:
639case ILOpcode.stelem_i8:
640case ILOpcode.stelem_r4:
641case ILOpcode.stelem_r8:
642case ILOpcode.stelem:
643case ILOpcode.stelem_ref:
648case ILOpcode.ldelem_i:
649case ILOpcode.ldelem_i1:
650case ILOpcode.ldelem_i2:
651case ILOpcode.ldelem_i4:
652case ILOpcode.ldelem_i8:
653case ILOpcode.ldelem_r4:
654case ILOpcode.ldelem_r8:
655case ILOpcode.ldelem_u1:
656case ILOpcode.ldelem_u2:
657case ILOpcode.ldelem_u4:
658case ILOpcode.ldelem:
659case ILOpcode.ldelem_ref:
660case ILOpcode.ldelema:
665case ILOpcode.cpblk:
666case ILOpcode.initblk:
671case ILOpcode.stfld:
672case ILOpcode.stsfld:
676case ILOpcode.cpobj:
681case ILOpcode.stind_i:
682case ILOpcode.stind_i1:
683case ILOpcode.stind_i2:
684case ILOpcode.stind_i4:
685case ILOpcode.stind_i8:
686case ILOpcode.stind_r4:
687case ILOpcode.stind_r8:
688case ILOpcode.stind_ref:
689case ILOpcode.stobj:
695case ILOpcode.initobj:
696case ILOpcode.pop:
701case ILOpcode.starg:
702case ILOpcode.starg_s:
703ScanStarg(methodIL, offset, opcode == ILOpcode.starg ? reader.ReadILUInt16() : reader.ReadILByte(), currentStack);
706case ILOpcode.stloc:
707case ILOpcode.stloc_s:
708case ILOpcode.stloc_0:
709case ILOpcode.stloc_1:
710case ILOpcode.stloc_2:
711case ILOpcode.stloc_3:
714ILOpcode.stloc => reader.ReadILUInt16(),
715ILOpcode.stloc_s => reader.ReadILByte(),
716_ => opcode - ILOpcode.stloc_0,
721case ILOpcode.constrained:
722case ILOpcode.no:
723case ILOpcode.readonly_:
724case ILOpcode.tail:
725case ILOpcode.unaligned:
726case ILOpcode.volatile_:
730case ILOpcode.brfalse:
731case ILOpcode.brfalse_s:
732case ILOpcode.brtrue:
733case ILOpcode.brtrue_s:
738case ILOpcode.calli:
759case ILOpcode.call:
760case ILOpcode.callvirt:
761case ILOpcode.newobj:
770case ILOpcode.jmp:
775case ILOpcode.br:
776case ILOpcode.br_s:
781case ILOpcode.leave:
782case ILOpcode.leave_s:
787case ILOpcode.endfilter:
788case ILOpcode.endfinally:
789case ILOpcode.rethrow:
790case ILOpcode.throw_:
794case ILOpcode.ret:
818case ILOpcode.switch_:
831case ILOpcode.beq:
832case ILOpcode.beq_s:
833case ILOpcode.bne_un:
834case ILOpcode.bne_un_s:
835case ILOpcode.bge:
836case ILOpcode.bge_s:
837case ILOpcode.bge_un:
838case ILOpcode.bge_un_s:
839case ILOpcode.bgt:
840case ILOpcode.bgt_s:
841case ILOpcode.bgt_un:
842case ILOpcode.bgt_un_s:
843case ILOpcode.ble:
844case ILOpcode.ble_s:
845case ILOpcode.ble_un:
846case ILOpcode.ble_un_s:
847case ILOpcode.blt:
848case ILOpcode.blt_s:
849case ILOpcode.blt_un:
850case ILOpcode.blt_un_s:
884private void ScanLdarg(ILOpcode opcode, int parameterIndex, Stack<StackSlot> currentStack, MethodDesc thisMethod)
890bool isByRef = opcode == ILOpcode.ldarga || opcode == ILOpcode.ldarga_s;
920ILOpcode operation,
925bool isByRef = operation == ILOpcode.ldloca || operation == ILOpcode.ldloca_s;
1094ILOpcode opcode,
1099if (opcode == ILOpcode.ldfld || opcode == ILOpcode.ldflda)
1102bool isByRef = opcode == ILOpcode.ldflda || opcode == ILOpcode.ldsflda;
1135ILOpcode opcode,
1142if (opcode == ILOpcode.stfld)
1274ILOpcode opcode,
1282bool isNewObj = opcode == ILOpcode.newobj;
1328ILOpcode operation,
1378ILOpcode opcode,
1387bool isByRef = opcode == ILOpcode.ldelema;
Compiler\TypePreinit.cs (367)
234ILOpcode opcode = reader.ReadILOpcode();
237case ILOpcode.ldc_i4_m1:
238case ILOpcode.ldc_i4_s:
239case ILOpcode.ldc_i4:
240case ILOpcode.ldc_i4_0:
241case ILOpcode.ldc_i4_1:
242case ILOpcode.ldc_i4_2:
243case ILOpcode.ldc_i4_3:
244case ILOpcode.ldc_i4_4:
245case ILOpcode.ldc_i4_5:
246case ILOpcode.ldc_i4_6:
247case ILOpcode.ldc_i4_7:
248case ILOpcode.ldc_i4_8:
252ILOpcode.ldc_i4_m1 => -1,
253ILOpcode.ldc_i4_s => (sbyte)reader.ReadILByte(),
254ILOpcode.ldc_i4 => (int)reader.ReadILUInt32(),
255_ => opcode - ILOpcode.ldc_i4_0,
261case ILOpcode.ldc_i8:
265case ILOpcode.ldc_r4:
266case ILOpcode.ldc_r8:
268opcode == ILOpcode.ldc_r4 ? reader.ReadILFloat() : reader.ReadILDouble()));
271case ILOpcode.sizeof_:
278case ILOpcode.ldnull:
282case ILOpcode.newarr:
315case ILOpcode.dup:
323case ILOpcode.pop:
329case ILOpcode.ldstr:
341case ILOpcode.ret:
357case ILOpcode.nop:
358case ILOpcode.volatile_:
361case ILOpcode.stsfld:
401case ILOpcode.ldsfld:
402case ILOpcode.ldsflda:
415if (opcode != ILOpcode.ldsfld
450&& opcode != ILOpcode.ldsflda // We need to intern these for correctness in ldsfda scenarios
461if (opcode == ILOpcode.ldsfld)
467Debug.Assert(opcode == ILOpcode.ldsflda);
478case ILOpcode.call:
479case ILOpcode.callvirt:
525if (opcode == ILOpcode.callvirt)
551case ILOpcode.newobj:
583if (finalizerMethodILBytes.Length != 1 || finalizerMethodILBytes[0] != (byte)ILOpcode.ret)
707case ILOpcode.localloc:
720return Status.Fail(methodIL.OwningMethod, ILOpcode.localloc);
726case ILOpcode.stfld:
756case ILOpcode.ldfld:
780case ILOpcode.ldflda:
806case ILOpcode.conv_i:
807case ILOpcode.conv_u:
808case ILOpcode.conv_i1:
809case ILOpcode.conv_i2:
810case ILOpcode.conv_i4:
811case ILOpcode.conv_i8:
812case ILOpcode.conv_u1:
813case ILOpcode.conv_u2:
814case ILOpcode.conv_u4:
815case ILOpcode.conv_u8:
816case ILOpcode.conv_r4:
817case ILOpcode.conv_r8:
821if (opcode is ILOpcode.conv_i or ILOpcode.conv_u
832case ILOpcode.conv_i:
836case ILOpcode.conv_u:
840case ILOpcode.conv_i1:
843case ILOpcode.conv_i2:
846case ILOpcode.conv_i4:
849case ILOpcode.conv_i8:
852case ILOpcode.conv_u1:
855case ILOpcode.conv_u2:
858case ILOpcode.conv_u4:
861case ILOpcode.conv_u8:
864case ILOpcode.conv_r4:
867case ILOpcode.conv_r8:
879case ILOpcode.conv_u:
880case ILOpcode.conv_i:
884case ILOpcode.conv_i1:
887case ILOpcode.conv_i2:
890case ILOpcode.conv_i4:
893case ILOpcode.conv_i8:
896case ILOpcode.conv_u1:
899case ILOpcode.conv_u2:
902case ILOpcode.conv_u4:
905case ILOpcode.conv_u8:
908case ILOpcode.conv_r4:
911case ILOpcode.conv_r8:
923case ILOpcode.conv_i:
927case ILOpcode.conv_u:
931case ILOpcode.conv_i1:
934case ILOpcode.conv_i2:
937case ILOpcode.conv_i4:
940case ILOpcode.conv_i8:
943case ILOpcode.conv_u1:
946case ILOpcode.conv_u2:
949case ILOpcode.conv_u4:
952case ILOpcode.conv_u8:
955case ILOpcode.conv_r4:
958case ILOpcode.conv_r8:
972case ILOpcode.ldarg_0:
973case ILOpcode.ldarg_1:
974case ILOpcode.ldarg_2:
975case ILOpcode.ldarg_3:
976case ILOpcode.ldarg_s:
977case ILOpcode.ldarg:
981ILOpcode.ldarg_s => reader.ReadILByte(),
982ILOpcode.ldarg => reader.ReadILUInt16(),
983_ => opcode - ILOpcode.ldarg_0,
989case ILOpcode.starg_s:
990case ILOpcode.starg:
992int index = opcode == ILOpcode.starg ? reader.ReadILUInt16() : reader.ReadILByte();
1006case ILOpcode.ldtoken:
1024case ILOpcode.ldftn:
1027return Status.Fail(methodIL.OwningMethod, ILOpcode.constrained);
1037case ILOpcode.ldloc_0:
1038case ILOpcode.ldloc_1:
1039case ILOpcode.ldloc_2:
1040case ILOpcode.ldloc_3:
1041case ILOpcode.ldloc_s:
1042case ILOpcode.ldloc:
1046ILOpcode.ldloc_s => reader.ReadILByte(),
1047ILOpcode.ldloc => reader.ReadILUInt16(),
1048_ => opcode - ILOpcode.ldloc_0,
1060case ILOpcode.stloc_0:
1061case ILOpcode.stloc_1:
1062case ILOpcode.stloc_2:
1063case ILOpcode.stloc_3:
1064case ILOpcode.stloc_s:
1065case ILOpcode.stloc:
1069ILOpcode.stloc_s => reader.ReadILByte(),
1070ILOpcode.stloc => reader.ReadILUInt16(),
1071_ => opcode - ILOpcode.stloc_0,
1093case ILOpcode.ldarga_s:
1094case ILOpcode.ldarga:
1095case ILOpcode.ldloca_s:
1096case ILOpcode.ldloca:
1100ILOpcode.ldloca_s or ILOpcode.ldarga_s => reader.ReadILByte(),
1101ILOpcode.ldloca or ILOpcode.ldarga => reader.ReadILUInt16(),
1105Value[] storage = opcode is ILOpcode.ldloca or ILOpcode.ldloca_s ? locals : parameters;
1123case ILOpcode.initobj:
1141case ILOpcode.br:
1142case ILOpcode.brfalse:
1143case ILOpcode.brtrue:
1144case ILOpcode.blt:
1145case ILOpcode.blt_un:
1146case ILOpcode.bgt:
1147case ILOpcode.bgt_un:
1148case ILOpcode.beq:
1149case ILOpcode.bne_un:
1150case ILOpcode.bge:
1151case ILOpcode.bge_un:
1152case ILOpcode.ble:
1153case ILOpcode.ble_un:
1154case ILOpcode.br_s:
1155case ILOpcode.brfalse_s:
1156case ILOpcode.brtrue_s:
1157case ILOpcode.blt_s:
1158case ILOpcode.blt_un_s:
1159case ILOpcode.bgt_s:
1160case ILOpcode.bgt_un_s:
1161case ILOpcode.beq_s:
1162case ILOpcode.bne_un_s:
1163case ILOpcode.bge_s:
1164case ILOpcode.bge_un_s:
1165case ILOpcode.ble_s:
1166case ILOpcode.ble_un_s:
1168int delta = opcode >= ILOpcode.br ?
1178ILOpcode normalizedOpcode = opcode >= ILOpcode.br ?
1179opcode - ILOpcode.br + ILOpcode.br_s :
1183if (normalizedOpcode == ILOpcode.brtrue_s || normalizedOpcode == ILOpcode.brfalse_s)
1187branchTaken = normalizedOpcode == ILOpcode.brfalse_s
1190branchTaken = normalizedOpcode == ILOpcode.brfalse_s
1193branchTaken = normalizedOpcode == ILOpcode.brfalse_s
1198else if (normalizedOpcode == ILOpcode.blt_s || normalizedOpcode == ILOpcode.bgt_s
1199|| normalizedOpcode == ILOpcode.bge_s || normalizedOpcode == ILOpcode.beq_s
1200|| normalizedOpcode == ILOpcode.ble_s || normalizedOpcode == ILOpcode.blt_un_s
1201|| normalizedOpcode == ILOpcode.ble_un_s || normalizedOpcode == ILOpcode.bge_un_s
1202|| normalizedOpcode == ILOpcode.bgt_un_s || normalizedOpcode == ILOpcode.bne_un_s)
1211ILOpcode.blt_s => value1.Value.AsInt32() < value2.Value.AsInt32(),
1212ILOpcode.blt_un_s => (uint)value1.Value.AsInt32() < (uint)value2.Value.AsInt32(),
1213ILOpcode.bgt_s => value1.Value.AsInt32() > value2.Value.AsInt32(),
1214ILOpcode.bgt_un_s => (uint)value1.Value.AsInt32() > (uint)value2.Value.AsInt32(),
1215ILOpcode.bge_s => value1.Value.AsInt32() >= value2.Value.AsInt32(),
1216ILOpcode.bge_un_s => (uint)value1.Value.AsInt32() >= (uint)value2.Value.AsInt32(),
1217ILOpcode.beq_s => value1.Value.AsInt32() == value2.Value.AsInt32(),
1218ILOpcode.bne_un_s => value1.Value.AsInt32() != value2.Value.AsInt32(),
1219ILOpcode.ble_s => value1.Value.AsInt32() <= value2.Value.AsInt32(),
1220ILOpcode.ble_un_s => (uint)value1.Value.AsInt32() <= (uint)value2.Value.AsInt32(),
1228ILOpcode.blt_s => value1.Value.AsInt64() < value2.Value.AsInt64(),
1229ILOpcode.blt_un_s => (ulong)value1.Value.AsInt64() < (ulong)value2.Value.AsInt64(),
1230ILOpcode.bgt_s => value1.Value.AsInt64() > value2.Value.AsInt64(),
1231ILOpcode.bgt_un_s => (ulong)value1.Value.AsInt64() > (ulong)value2.Value.AsInt64(),
1232ILOpcode.bge_s => value1.Value.AsInt64() >= value2.Value.AsInt64(),
1233ILOpcode.bge_un_s => (ulong)value1.Value.AsInt64() >= (ulong)value2.Value.AsInt64(),
1234ILOpcode.beq_s => value1.Value.AsInt64() == value2.Value.AsInt64(),
1235ILOpcode.bne_un_s => value1.Value.AsInt64() != value2.Value.AsInt64(),
1236ILOpcode.ble_s => value1.Value.AsInt64() <= value2.Value.AsInt64(),
1237ILOpcode.ble_un_s => (ulong)value1.Value.AsInt64() <= (ulong)value2.Value.AsInt64(),
1245ILOpcode.blt_s => value1.Value.AsDouble() < value2.Value.AsDouble(),
1246ILOpcode.blt_un_s => !(value1.Value.AsDouble() >= value2.Value.AsDouble()),
1247ILOpcode.bgt_s => value1.Value.AsDouble() > value2.Value.AsDouble(),
1248ILOpcode.bgt_un_s => !(value1.Value.AsDouble() <= value2.Value.AsDouble()),
1249ILOpcode.bge_s => value1.Value.AsDouble() >= value2.Value.AsDouble(),
1250ILOpcode.bge_un_s => !(value1.Value.AsDouble() < value2.Value.AsDouble()),
1251ILOpcode.beq_s => value1.Value.AsDouble() == value2.Value.AsDouble(),
1252ILOpcode.bne_un_s => value1.Value.AsDouble() != value2.Value.AsDouble(),
1253ILOpcode.ble_s => value1.Value.AsDouble() <= value2.Value.AsDouble(),
1254ILOpcode.ble_un_s => !(value1.Value.AsDouble() > value2.Value.AsDouble()),
1265Debug.Assert(normalizedOpcode == ILOpcode.br_s);
1276case ILOpcode.switch_:
1298case ILOpcode.leave:
1299case ILOpcode.leave_s:
1310int delta = opcode == ILOpcode.leave ?
1324case ILOpcode.clt:
1325case ILOpcode.clt_un:
1326case ILOpcode.cgt:
1327case ILOpcode.cgt_un:
1335if (opcode == ILOpcode.cgt)
1337else if (opcode == ILOpcode.cgt_un)
1339else if (opcode == ILOpcode.clt)
1341else if (opcode == ILOpcode.clt_un)
1348if (opcode == ILOpcode.cgt)
1350else if (opcode == ILOpcode.cgt_un)
1352else if (opcode == ILOpcode.clt)
1354else if (opcode == ILOpcode.clt_un)
1361if (opcode == ILOpcode.cgt)
1363else if (opcode == ILOpcode.cgt_un)
1365else if (opcode == ILOpcode.clt)
1367else if (opcode == ILOpcode.clt_un)
1374if (opcode == ILOpcode.cgt_un)
1390case ILOpcode.ceq:
1413case ILOpcode.neg:
1427case ILOpcode.or:
1428case ILOpcode.shl:
1429case ILOpcode.add:
1430case ILOpcode.sub:
1431case ILOpcode.mul:
1432case ILOpcode.and:
1433case ILOpcode.div:
1434case ILOpcode.div_un:
1435case ILOpcode.rem:
1436case ILOpcode.rem_un:
1438bool isDivRem = opcode == ILOpcode.div || opcode == ILOpcode.div_un
1439|| opcode == ILOpcode.rem || opcode == ILOpcode.rem_un;
1451if ((opcode == ILOpcode.div || opcode == ILOpcode.rem)
1457ILOpcode.or => value1.Value.AsInt32() | value2.Value.AsInt32(),
1458ILOpcode.shl => value1.Value.AsInt32() << value2.Value.AsInt32(),
1459ILOpcode.add => value1.Value.AsInt32() + value2.Value.AsInt32(),
1460ILOpcode.sub => value1.Value.AsInt32() - value2.Value.AsInt32(),
1461ILOpcode.and => value1.Value.AsInt32() & value2.Value.AsInt32(),
1462ILOpcode.mul => value1.Value.AsInt32() * value2.Value.AsInt32(),
1463ILOpcode.div => value1.Value.AsInt32() / value2.Value.AsInt32(),
1464ILOpcode.div_un => (int)((uint)value1.Value.AsInt32() / (uint)value2.Value.AsInt32()),
1465ILOpcode.rem => value1.Value.AsInt32() % value2.Value.AsInt32(),
1466ILOpcode.rem_un => (int)((uint)value1.Value.AsInt32() % (uint)value2.Value.AsInt32()),
1477if ((opcode == ILOpcode.div || opcode == ILOpcode.rem)
1483ILOpcode.or => value1.Value.AsInt64() | value2.Value.AsInt64(),
1484ILOpcode.shl => value1.Value.AsInt64() << (int)value2.Value.AsInt64(),
1485ILOpcode.add => value1.Value.AsInt64() + value2.Value.AsInt64(),
1486ILOpcode.sub => value1.Value.AsInt64() - value2.Value.AsInt64(),
1487ILOpcode.and => value1.Value.AsInt64() & value2.Value.AsInt64(),
1488ILOpcode.mul => value1.Value.AsInt64() * value2.Value.AsInt64(),
1489ILOpcode.div => value1.Value.AsInt64() / value2.Value.AsInt64(),
1490ILOpcode.div_un => (long)((ulong)value1.Value.AsInt64() / (ulong)value2.Value.AsInt64()),
1491ILOpcode.rem => value1.Value.AsInt64() % value2.Value.AsInt64(),
1492ILOpcode.rem_un => (long)((ulong)value1.Value.AsInt64() % (ulong)value2.Value.AsInt64()),
1503if (opcode == ILOpcode.or || opcode == ILOpcode.shl || opcode == ILOpcode.and || opcode == ILOpcode.div_un || opcode == ILOpcode.rem_un)
1508ILOpcode.add => value1.Value.AsDouble() + value2.Value.AsDouble(),
1509ILOpcode.sub => value1.Value.AsDouble() - value2.Value.AsDouble(),
1510ILOpcode.mul => value1.Value.AsDouble() * value2.Value.AsDouble(),
1511ILOpcode.div => value1.Value.AsDouble() / value2.Value.AsDouble(),
1512ILOpcode.rem => value1.Value.AsDouble() % value2.Value.AsDouble(),
1519&& opcode == ILOpcode.shl)
1527if (opcode != ILOpcode.add)
1558case ILOpcode.ldlen:
1576case ILOpcode.stelem:
1577case ILOpcode.stelem_i:
1578case ILOpcode.stelem_i1:
1579case ILOpcode.stelem_i2:
1580case ILOpcode.stelem_i4:
1581case ILOpcode.stelem_i8:
1582case ILOpcode.stelem_r4:
1583case ILOpcode.stelem_r8:
1587ILOpcode.stelem_i => context.GetWellKnownType(WellKnownType.IntPtr),
1588ILOpcode.stelem_i1 => context.GetWellKnownType(WellKnownType.SByte),
1589ILOpcode.stelem_i2 => context.GetWellKnownType(WellKnownType.Int16),
1590ILOpcode.stelem_i4 => context.GetWellKnownType(WellKnownType.Int32),
1591ILOpcode.stelem_i8 => context.GetWellKnownType(WellKnownType.Int64),
1592ILOpcode.stelem_r4 => context.GetWellKnownType(WellKnownType.Single),
1593ILOpcode.stelem_r8 => context.GetWellKnownType(WellKnownType.Double),
1624case ILOpcode.ldelem:
1625case ILOpcode.ldelem_i:
1626case ILOpcode.ldelem_i1:
1627case ILOpcode.ldelem_u1:
1628case ILOpcode.ldelem_i2:
1629case ILOpcode.ldelem_u2:
1630case ILOpcode.ldelem_i4:
1631case ILOpcode.ldelem_u4:
1632case ILOpcode.ldelem_i8:
1633case ILOpcode.ldelem_r4:
1634case ILOpcode.ldelem_r8:
1638ILOpcode.ldelem_i => context.GetWellKnownType(WellKnownType.IntPtr),
1639ILOpcode.ldelem_i1 => context.GetWellKnownType(WellKnownType.SByte),
1640ILOpcode.ldelem_u1 => context.GetWellKnownType(WellKnownType.Byte),
1641ILOpcode.ldelem_i2 => context.GetWellKnownType(WellKnownType.Int16),
1642ILOpcode.ldelem_u2 => context.GetWellKnownType(WellKnownType.UInt16),
1643ILOpcode.ldelem_i4 => context.GetWellKnownType(WellKnownType.Int32),
1644ILOpcode.ldelem_u4 => context.GetWellKnownType(WellKnownType.UInt32),
1645ILOpcode.ldelem_i8 => context.GetWellKnownType(WellKnownType.Int64),
1646ILOpcode.ldelem_r4 => context.GetWellKnownType(WellKnownType.Single),
1647ILOpcode.ldelem_r8 => context.GetWellKnownType(WellKnownType.Double),
1685case ILOpcode.box:
1709case ILOpcode.unbox_any:
1725case ILOpcode.ldobj:
1726case ILOpcode.ldind_i1:
1727case ILOpcode.ldind_u1:
1728case ILOpcode.ldind_i2:
1729case ILOpcode.ldind_u2:
1730case ILOpcode.ldind_i4:
1731case ILOpcode.ldind_u4:
1732case ILOpcode.ldind_i8:
1736ILOpcode.ldind_i1 => context.GetWellKnownType(WellKnownType.SByte),
1737ILOpcode.ldind_u1 => context.GetWellKnownType(WellKnownType.Byte),
1738ILOpcode.ldind_i2 => context.GetWellKnownType(WellKnownType.Int16),
1739ILOpcode.ldind_u2 => context.GetWellKnownType(WellKnownType.UInt16),
1740ILOpcode.ldind_i4 => context.GetWellKnownType(WellKnownType.Int32),
1741ILOpcode.ldind_u4 => context.GetWellKnownType(WellKnownType.UInt32),
1742ILOpcode.ldind_i8 => context.GetWellKnownType(WellKnownType.Int64),
1762case ILOpcode.stobj:
1763case ILOpcode.stind_i:
1764case ILOpcode.stind_i1:
1765case ILOpcode.stind_i2:
1766case ILOpcode.stind_i4:
1767case ILOpcode.stind_i8:
1769if (opcode == ILOpcode.stobj)
1774TypeFlags.SByte or TypeFlags.Boolean or TypeFlags.Byte => ILOpcode.stind_i1,
1775TypeFlags.Int16 or TypeFlags.Char or TypeFlags.UInt16 => ILOpcode.stind_i2,
1776TypeFlags.Int32 or TypeFlags.UInt32 => ILOpcode.stind_i4,
1777TypeFlags.Int64 or TypeFlags.UInt64 => ILOpcode.stind_i8,
1778TypeFlags.IntPtr or TypeFlags.UIntPtr => ILOpcode.stind_i,
1779_ => ILOpcode.stobj,
1785ILOpcode.stind_i1 => stack.PopIntoLocation(context.GetWellKnownType(WellKnownType.Byte)),
1786ILOpcode.stind_i2 => stack.PopIntoLocation(context.GetWellKnownType(WellKnownType.UInt16)),
1787ILOpcode.stind_i4 => stack.PopIntoLocation(context.GetWellKnownType(WellKnownType.UInt32)),
1788ILOpcode.stind_i8 => stack.PopIntoLocation(context.GetWellKnownType(WellKnownType.UInt64)),
1789ILOpcode.stind_i => stack.PopIntoLocation(context.GetWellKnownType(WellKnownType.UIntPtr)),
1805case ILOpcode.constrained:
1809case ILOpcode.unaligned:
1813case ILOpcode.initblk:
3725public static Status Fail(MethodDesc method, ILOpcode opcode, string detail = null)
IL\ILImporter.Scanner.cs (87)
301partial void StartImportingInstruction(ILOpcode opcode)
318private void ImportCasting(ILOpcode opcode, int token)
368ILOpcode opcode;
378if (opcode is (not ILOpcode.ldc_i4_0) and (not ILOpcode.ldc_i4_1))
390if (opcode is (not ILOpcode.call) and (not ILOpcode.callvirt)
402return opcode == ILOpcode.call
414ILOpcode opcode = tempReader.ReadILOpcode();
419>= ILOpcode.stloc_0 and <= ILOpcode.stloc_3 => opcode - ILOpcode.stloc_0,
420ILOpcode.stloc => tempReader.ReadILUInt16(),
421ILOpcode.stloc_s => tempReader.ReadILByte(),
436ILOpcode.ldloca_s => tempReader.ReadILByte(),
437ILOpcode.ldloca => tempReader.ReadILUInt16(),
468if (reader.ReadILOpcode() == ILOpcode.ret)
478if (!reader.HasNext || reader.ReadILOpcode() != ILOpcode.call)
486if (!reader.HasNext || reader.ReadILOpcode() != ILOpcode.ret)
502if (reader.ReadILOpcode() == ILOpcode.newobj)
506if (!reader.HasNext || reader.ReadILOpcode() != ILOpcode.ret)
535private void ImportCall(ILOpcode opcode, int token)
539Debug.Assert(opcode == ILOpcode.call);
561if (opcode is ILOpcode.call or ILOpcode.callvirt && _canonMethod.IsAsyncCall())
586private void ImportCall(ILOpcode opcode, MethodDesc method, MethodDesc runtimeDeterminedMethod)
597case ILOpcode.newobj:
599case ILOpcode.call:
601case ILOpcode.callvirt:
603case ILOpcode.ldftn:
605case ILOpcode.ldvirtftn:
611if (opcode == ILOpcode.newobj)
647opcode != ILOpcode.ldftn && opcode != ILOpcode.ldvirtftn)
702if (opcode != ILOpcode.ldftn)
816else if ((opcode != ILOpcode.callvirt && opcode != ILOpcode.ldvirtftn) || resolvedConstraint)
837bool allowInstParam = opcode != ILOpcode.ldvirtftn && opcode != ILOpcode.ldftn;
1045if ((opcode == ILOpcode.ldftn || opcode == ILOpcode.ldvirtftn)
1048&& _ilBytes[_currentOffset] == (byte)ILOpcode.newobj)
1062DelegateCreationInfo info = _compilation.GetDelegateCtor(canonDelegateType, targetForDelegate, constraintForDelegate, opcode == ILOpcode.ldvirtftn);
1152private void ImportLdFtn(int token, ILOpcode opCode)
1160ImportCall(ILOpcode.call, token);
1182private void ImportBranch(ILOpcode opcode, BasicBlock target, BasicBlock fallthrough)
1186if (opcode == ILOpcode.brfalse
1209if (opcode == ILOpcode.brfalse && _isInstCheckPatternAnalyzer.IsIsInstBranch)
1222if (opcode == ILOpcode.brfalse && _previousInstructionOffset >= 0)
1225if (reader.ReadILOpcode() == ILOpcode.call
1251private void ImportUnbox(int token, ILOpcode opCode)
1257if (opCode == ILOpcode.unbox_any)
1260ImportCasting(ILOpcode.castclass, token);
1275if (opCode == ILOpcode.unbox)
1282Debug.Assert(opCode == ILOpcode.unbox_any);
1328ILOpcode opcode = reader.ReadILOpcode();
1386ILOpcode opcode = reader.ReadILOpcode();
1542ILOpcode nextOpcode = reader.ReadILOpcode();
1545if (nextOpcode is ILOpcode.brtrue or ILOpcode.brtrue_s or ILOpcode.brfalse or ILOpcode.brfalse_s)
1548if (nextOpcode is ILOpcode.unbox_any or ILOpcode.isinst)
1554if (nextOpcode == ILOpcode.unbox_any)
1560if (nextOpcode is ILOpcode.brtrue or ILOpcode.brtrue_s or ILOpcode.brfalse or ILOpcode.brfalse_s)
1564if (nextOpcode == ILOpcode.unbox_any)
1673private void ImportBinaryOperation(ILOpcode opcode)
1677case ILOpcode.add_ovf:
1678case ILOpcode.add_ovf_un:
1679case ILOpcode.sub_ovf:
1680case ILOpcode.sub_ovf_un:
1683case ILOpcode.mul_ovf:
1684case ILOpcode.mul_ovf_un:
1693case ILOpcode.div:
1694case ILOpcode.div_un:
1709if (opcode == ILOpcode.div)
1715case ILOpcode.rem:
1716case ILOpcode.rem_un:
1730if (opcode == ILOpcode.rem)
1830private static void ReportInvalidInstruction(ILOpcode opcode)
2112private static void ImportShiftOperation(ILOpcode opcode) { }
2113private static void ImportCompareOperation(ILOpcode opcode) { }
2114private static void ImportUnaryOperation(ILOpcode opCode) { }
IL\RvaIntrinsicPatternAnalyzer.cs (18)
45public void Advance(ILOpcode opcode, in ILReader reader, MethodIL methodIL)
61else if (opcode == ILOpcode.ldtoken)
74if (opcode == ILOpcode.dup)
82if (opcode == ILOpcode.ldtoken)
145private bool TryGetInitializeArraySize(ILOpcode opcode, in ILReader reader, MethodIL methodIL, out int initializationSize)
151if (opcode == ILOpcode.newarr)
159else if (opcode == ILOpcode.newobj)
208private bool TryMatchInitializeArray(ILOpcode opcode, in ILReader reader, MethodIL methodIL)
222private bool TryMatchCreateSpan(ILOpcode opcode, in ILReader reader, MethodIL methodIL)
243private static bool TryGetCallTarget(ILOpcode opcode, in ILReader reader, MethodIL methodIL, out MethodDesc method)
245if (opcode == ILOpcode.call
256private static bool TryReadInt32Constant(ILOpcode opcode, in ILReader reader, out int value)
261case ILOpcode.ldc_i4_m1:
264case >= ILOpcode.ldc_i4_0 and <= ILOpcode.ldc_i4_8:
265value = opcode - ILOpcode.ldc_i4_0;
267case ILOpcode.ldc_i4_s:
270case ILOpcode.ldc_i4:
IL\Stubs\StartupCode\StartupCodeMainMethod.cs (17)
78codeStream.Emit(ILOpcode.call, emitter.NewToken(method));
91codeStream.Emit(ILOpcode.ldarg_0); // argc
92codeStream.Emit(ILOpcode.ldarg_1); // argv
93codeStream.Emit(ILOpcode.call, emitter.NewToken(initArgs));
101codeStream.Emit(ILOpcode.ldtoken, emitter.NewToken(entrypointModule.GetGlobalModuleType()));
102codeStream.Emit(ILOpcode.call, emitter.NewToken(initEntryAssembly));
112codeStream.Emit(ILOpcode.call, emitter.NewToken(initApartmentState));
118codeStream.Emit(ILOpcode.call, emitter.NewToken(initApartmentState));
126codeStream.Emit(ILOpcode.call, emitter.NewToken(runModuleInitializers));
136codeStream.Emit(ILOpcode.call, emitter.NewToken(startup.GetKnownMethod("GetMainMethodArguments"u8, null)));
141codeStream.Emit(ILOpcode.call, emitter.NewToken(_mainMethod));
154codeStream.Emit(ILOpcode.call, emitter.NewToken(setLatchedExitCode));
158codeStream.Emit(ILOpcode.call, emitter.NewToken(shutdown));
170codeStream.Emit(ILOpcode.ret);
293codeStream.Emit(ILOpcode.tail);
294codeStream.Emit(ILOpcode.call, emit.NewToken(WrappedMethod));
296codeStream.Emit(ILOpcode.ret);
IL\TypeEqualityPatternAnalyzer.cs (45)
72public void Advance(ILOpcode opcode, in ILReader reader, MethodIL methodIL)
77if (opcode == ILOpcode.ldtoken)
87if (opcode == ILOpcode.ldtoken)
128if (opcode is ILOpcode.brfalse or ILOpcode.brfalse_s or ILOpcode.brtrue or ILOpcode.brtrue_s)
136_state = opcode is ILOpcode.ldloc or ILOpcode.ldloc_s or (>= ILOpcode.ldloc_0 and <= ILOpcode.ldloc_3) ? State.TypeEqualityCheck
146static bool IsTypeGetTypeFromHandle(ILOpcode opcode, in ILReader reader, MethodIL methodIL)
147=> opcode == ILOpcode.call && methodIL.GetObject(reader.PeekILToken()) is MethodDesc method
151static bool IsTypeEquals(ILOpcode opcode, in ILReader reader, MethodIL methodIL)
152=> opcode == ILOpcode.call && methodIL.GetObject(reader.PeekILToken()) is MethodDesc method
156static bool IsTypeInequals(ILOpcode opcode, in ILReader reader, MethodIL methodIL)
157=> opcode == ILOpcode.call && methodIL.GetObject(reader.PeekILToken()) is MethodDesc method
161static bool IsObjectGetType(ILOpcode opcode, in ILReader reader, MethodIL methodIL)
162=> opcode is ILOpcode.call or ILOpcode.callvirt && methodIL.GetObject(reader.PeekILToken()) is MethodDesc method
165static bool IsArgumentOrLocalLoad(ILOpcode opcode)
166=> opcode is (>= ILOpcode.ldloc_0 and <= ILOpcode.ldloc_3) or (>= ILOpcode.ldarg_0 and <= ILOpcode.ldarg_3)
167or ILOpcode.ldloc or ILOpcode.ldloc_s or ILOpcode.ldarg or ILOpcode.ldarg_s;
169static bool IsStlocLdlocSequence(ILOpcode opcode, in ILReader reader)
171if (opcode is ILOpcode.stloc or ILOpcode.stloc_s or (>= ILOpcode.stloc_0 and <= ILOpcode.stloc_3))
176ILOpcode.stloc => nestedReader.ReadILUInt16(),
177ILOpcode.stloc_s => nestedReader.ReadILByte(),
178_ => opcode - ILOpcode.stloc_0,
180ILOpcode otherOpcode = nestedReader.ReadILOpcode();
182return (otherOpcode is ILOpcode.ldloc or ILOpcode.ldloc_s or (>= ILOpcode.ldloc_0 and <= ILOpcode.ldloc_3))
185ILOpcode.ldloc => nestedReader.ReadILUInt16(),
186ILOpcode.ldloc_s => nestedReader.ReadILByte(),
187_ => otherOpcode - ILOpcode.ldloc_0,
parent\parent\Common\Compiler\CompilerTypeSystemContext.BoxedTypes.cs (13)
423new byte[] { (byte)ILOpcode.ldnull, (byte)ILOpcode.throw_ },
440codeStream.Emit(ILOpcode.ldflda, emit.NewToken(rawDataField));
452codeStream.Emit(ILOpcode.ldfld, emit.NewToken(eeTypeField));
455codeStream.Emit(ILOpcode.call, emit.NewToken(Context.GetCoreLibEntryPoint("System.Runtime.CompilerServices"u8, "RuntimeHelpers"u8, "SetNextCallGenericContext"u8, null)));
465codeStream.Emit(ILOpcode.call, emit.NewToken(Context.GetCoreLibEntryPoint("System.Runtime.CompilerServices"u8, "AsyncHelpers"u8, "TailAwait"u8, null)));
468codeStream.Emit(ILOpcode.call, emit.NewToken(_targetMethod.InstantiateAsOpen()));
469codeStream.Emit(ILOpcode.ret);
536new byte[] { (byte)ILOpcode.ldnull, (byte)ILOpcode.throw_ },
562codeStream.Emit(ILOpcode.ldflda, emit.NewToken(Context.SystemModule.GetKnownType("System.Runtime.CompilerServices"u8, "RawData"u8).GetField("Data"u8)));
590codeStream.Emit(ILOpcode.call, emit.NewToken(methodToInstantiate));
591codeStream.Emit(ILOpcode.ret);
parent\parent\Common\TypeSystem\IL\NativeAotILProvider.cs (24)
62return new ILStubMethodIL(method, new byte[] { (byte)ILOpcode.break_, (byte)ILOpcode.ret }, Array.Empty<LocalVariableDefinition>(), null);
73ILOpcode value = method.Context.Target.SupportsRelativePointers ?
74ILOpcode.ldc_i4_1 : ILOpcode.ldc_i4_0;
75return new ILStubMethodIL(method, new byte[] { (byte)value, (byte)ILOpcode.ret }, Array.Empty<LocalVariableDefinition>(), null);
119codeStream.Emit(ILOpcode.initobj, emit.NewToken(context.GetSignatureVariable(0, method: true)));
121codeStream.Emit(ILOpcode.ret);
168codeStream.Emit(ILOpcode.call, emitter.NewToken(underlyingCompareToMethod));
169codeStream.Emit(ILOpcode.ret);
193ILOpcode convInstruction;
196convInstruction = ILOpcode.conv_i4;
201convInstruction = ILOpcode.conv_i8;
205(byte)ILOpcode.ldarg_0,
207(byte)ILOpcode.ldarg_1,
209(byte)ILOpcode.prefix1, unchecked((byte)ILOpcode.ceq),
210(byte)ILOpcode.ret,
222(byte)ILOpcode.ldnull,
223(byte)ILOpcode.ret
243(byte)ILOpcode.ldarg_0,
244(byte)ILOpcode.ldarg_1,
245(byte)ILOpcode.call, 1, 0, 0, 0,
246(byte)ILOpcode.ret
parent\parent\Common\TypeSystem\IL\Stubs\ArrayMethodILEmitter.cs (28)
40codeStream.Emit(ILOpcode.ldflda, _helperFieldToken);
42codeStream.Emit(ILOpcode.add);
102codeStream.Emit(ILOpcode.call, _emitter.NewToken(checkArrayStore));
118codeStream.Emit(ILOpcode.brfalse, typeCheckPassedLabel);
122codeStream.Emit(ILOpcode.ldfld, _emitter.NewToken(objectType.GetKnownField("m_pEEType"u8)));
123codeStream.Emit(ILOpcode.call,
128codeStream.Emit(ILOpcode.call,
133codeStream.Emit(ILOpcode.bne_un, typeMismatchExceptionLabel);
149codeStream.Emit(ILOpcode.ldfld, _emitter.NewToken(objectType.GetKnownField("m_pEEType"u8)));
150codeStream.Emit(ILOpcode.call,
154codeStream.Emit(ILOpcode.brfalse, notSzArrayLabel);
158codeStream.Emit(ILOpcode.dup);
159codeStream.Emit(ILOpcode.ldind_i4);
163codeStream.Emit(ILOpcode.ble_un, rangeExceptionLabel);
166codeStream.Emit(ILOpcode.add);
169codeStream.Emit(ILOpcode.br, rangeCheckDoneLabel);
180codeStream.Emit(ILOpcode.ldind_i4);
186codeStream.Emit(ILOpcode.dup);
188codeStream.Emit(ILOpcode.bge_un, rangeExceptionLabel);
195codeStream.Emit(ILOpcode.mul);
196codeStream.Emit(ILOpcode.add);
210codeStream.Emit(ILOpcode.conv_u);
216codeStream.Emit(ILOpcode.mul);
218codeStream.Emit(ILOpcode.add);
223codeStream.Emit(ILOpcode.ldobj, _emitter.NewToken(_elementType));
228codeStream.Emit(ILOpcode.stobj, _emitter.NewToken(_elementType));
235codeStream.Emit(ILOpcode.ret);
239codeStream.Emit(ILOpcode.pop);
parent\parent\Common\TypeSystem\IL\Stubs\AsyncResumptionStub.cs (12)
64ilStream.Emit(ILOpcode.conv_u);
68ilStream.Emit(ILOpcode.ldnull);
75ilStream.Emit(ILOpcode.conv_i);
76ilStream.Emit(ILOpcode.call, ilEmitter.NewToken(Context.GetCoreLibEntryPoint("System.Runtime.CompilerServices"u8, "RuntimeHelpers"u8, "SetNextCallGenericContext"u8, null)));
80ilStream.Emit(ILOpcode.call, ilEmitter.NewToken(Context.GetCoreLibEntryPoint("System.Runtime.CompilerServices"u8, "RuntimeHelpers"u8, "SetNextCallAsyncContinuation"u8, null)));
87ilStream.Emit(ILOpcode.conv_u);
93ilStream.Emit(ILOpcode.initobj, ilEmitter.NewToken(param));
98ilStream.Emit(ILOpcode.call, ilEmitter.NewToken(_targetMethod));
112ilStream.Emit(ILOpcode.call, ilEmitter.NewToken(asyncCallContinuation));
119ilStream.Emit(ILOpcode.brtrue, doneResult);
122ilStream.Emit(ILOpcode.stobj, ilEmitter.NewToken(_targetMethod.Signature.ReturnType));
126ilStream.Emit(ILOpcode.ret);
parent\parent\Common\TypeSystem\IL\Stubs\AsyncThunks.cs (20)
51codestream.Emit(ILOpcode.ldsflda, emitter.NewToken(asyncHelpersType.GetKnownField("t_runtimeAsyncAwaitState"u8)));
56codestream.Emit(ILOpcode.call, emitter.NewToken(awaitStateType.GetKnownMethod("Push"u8, null)));
61codestream.Emit(ILOpcode.nop);
93codestream.Emit(ILOpcode.call, emitter.NewToken(asyncMethod));
102codestream.Emit(ILOpcode.call, emitter.NewToken(asyncCallContinuationMd));
104codestream.Emit(ILOpcode.brfalse, finishedLabel);
105codestream.Emit(ILOpcode.leave, suspendedLabel);
128codestream.Emit(ILOpcode.call, emitter.NewToken(fromResultMethod));
145codestream.Emit(ILOpcode.call, emitter.NewToken(getCompletedTaskMethod));
149codestream.Emit(ILOpcode.leave, returnTaskLabel);
186codestream.Emit(ILOpcode.call, emitter.NewToken(fromExceptionMd));
188codestream.Emit(ILOpcode.leave, returnTaskLabel);
222codestream.Emit(ILOpcode.call, emitter.NewToken(createRuntimeAsyncTaskMd));
224codestream.Emit(ILOpcode.leave, returnTaskLabel);
233codestream.Emit(ILOpcode.call, emitter.NewToken(awaitStateType.GetKnownMethod("Pop"u8, null)));
234codestream.Emit(ILOpcode.endfinally);
240codestream.Emit(ILOpcode.ret);
292codestream.Emit(ILOpcode.call, emitter.NewToken(asyncVariantTarget));
293codestream.Emit(ILOpcode.pop);
294codestream.Emit(ILOpcode.ret);
parent\parent\Common\TypeSystem\IL\Stubs\DelegateThunks.cs (46)
124codeStream.Emit(ILOpcode.ldfld, emitter.NewToken(ExtraFunctionPointerOrDataField));
126codeStream.Emit(ILOpcode.calli, emitter.NewToken(builder.ToSignature()));
128codeStream.Emit(ILOpcode.ret);
192codeStream.Emit(ILOpcode.box, emitter.NewToken(boxThisType));
206codeStream.Emit(ILOpcode.ldnull);
213codeStream.Emit(ILOpcode.box, emitter.NewToken(boxThisType));
217codeStream.Emit(ILOpcode.call, emitter.NewToken(SystemDelegateType.GetKnownMethod("GetActualTargetFunctionPointer"u8, null)));
220codeStream.Emit(ILOpcode.calli, emitter.NewToken(targetSignature));
221codeStream.Emit(ILOpcode.ret);
267codeStream.Emit(ILOpcode.ldfld, emitter.NewToken(HelperObjectField));
277codeStream.Emit(ILOpcode.ldfld, emitter.NewToken(ExtraFunctionPointerOrDataField));
279codeStream.Emit(ILOpcode.calli, emitter.NewToken(targetMethodSignature));
281codeStream.Emit(ILOpcode.ret);
334codeStream.Emit(ILOpcode.ldfld, emitter.NewToken(HelperObjectField));
345codeStream.Emit(ILOpcode.ldfld, emitter.NewToken(ExtraFunctionPointerOrDataField));
370codeStream.Emit(ILOpcode.ldelema, emitter.NewToken(delegateWrapperType));
371codeStream.Emit(ILOpcode.ldfld, emitter.NewToken(delegateWrapperType.GetKnownField("Value"u8)));
386codeStream.Emit(ILOpcode.callvirt, emitter.NewToken(_delegateInfo.InvokeMethod.InstantiateAsOpen()));
400codeStream.Emit(ILOpcode.add);
406codeStream.Emit(ILOpcode.bne_un, startOfLoopLabel);
416codeStream.Emit(ILOpcode.ret);
450codeStream.Emit(ILOpcode.ldfld, emitter.NewToken(HelperObjectField));
460codeStream.Emit(ILOpcode.ldfld, emitter.NewToken(ExtraFunctionPointerOrDataField));
462codeStream.Emit(ILOpcode.calli, emitter.NewToken(Signature));
464codeStream.Emit(ILOpcode.ret);
535codeStream.Emit(ILOpcode.newarr, emitter.NewToken(objectType));
560codeStream.Emit(ILOpcode.ldobj, paramToken);
562codeStream.Emit(ILOpcode.box, paramToken);
563codeStream.Emit(ILOpcode.stelem_ref);
569codeStream.Emit(ILOpcode.call, emitter.NewToken(emptyObjectArrayMethod));
582codeStream.Emit(ILOpcode.ldfld, emitter.NewToken(HelperObjectField));
587codeStream.Emit(ILOpcode.castclass, emitter.NewToken(instantiatedFunc));
592codeStream.Emit(ILOpcode.callvirt, emitter.NewToken(invokeMethod));
602codeStream.Emit(ILOpcode.pop);
608codeStream.Emit(ILOpcode.leave, returnLabel);
625codeStream.Emit(ILOpcode.ldelem_ref);
626codeStream.Emit(ILOpcode.unbox_any, paramToken);
627codeStream.Emit(ILOpcode.stobj, paramToken);
630codeStream.Emit(ILOpcode.endfinally);
638codeStream.Emit(ILOpcode.unbox_any, emitter.NewToken(Signature.ReturnType));
641codeStream.Emit(ILOpcode.ret);
724codeStream.Emit(ILOpcode.br, returnNullLabel);
735codeStream.Emit(ILOpcode.ldftn, emitter.NewToken(targetMethod));
736codeStream.Emit(ILOpcode.ret);
741codeStream.Emit(ILOpcode.conv_i);
742codeStream.Emit(ILOpcode.ret);
parent\parent\Common\TypeSystem\IL\Stubs\PInvokeILEmitter.cs (20)
175fnptrLoadStream.Emit(ILOpcode.call, emitter.NewToken(
184callsiteSetupCodeStream.Emit(ILOpcode.calli, emitter.NewToken(managedSignature));
198fnptrLoadStream.Emit(ILOpcode.call, emitter.NewToken(instantiatedHelper));
204callsiteSetupCodeStream.Emit(ILOpcode.callvirt, emitter.NewToken(invokeMethod));
211callsiteSetupCodeStream.Emit(ILOpcode.call, emitter.NewToken(
219fnptrLoadStream.Emit(ILOpcode.call, emitter.NewToken(InteropTypes
244callsiteSetupCodeStream.Emit(ILOpcode.calli, emitter.NewToken(nativeSig));
250callsiteSetupCodeStream.Emit(ILOpcode.call, emitter.NewToken(
282callsiteSetupCodeStream.Emit(ILOpcode.call, emitter.NewToken(
310fnptrLoadStream.Emit(ILOpcode.ldsflda, emitter.NewToken(lazyDispatchCell));
311fnptrLoadStream.Emit(ILOpcode.call, emitter.NewToken(lazyHelperType
319callsiteSetupCodeStream.Emit(ILOpcode.calli, emitter.NewToken(nativeSig));
330callsiteSetupCodeStream.Emit(ILOpcode.call, emitter.NewToken(nativeMethod));
335callsiteSetupCodeStream.Emit(ILOpcode.call, emitter.NewToken(
344callsiteSetupCodeStream.Emit(ILOpcode.call, emitter.NewToken(
352callsiteSetupCodeStream.Emit(ILOpcode.call, emitter.NewToken(lazyHelperType
375callsiteSetupCodeStream.Emit(ILOpcode.calli, emitter.NewToken(nativeSig));
422unmarshallingCodestream.Emit(ILOpcode.leave, lReturn);
425cleanupCodestream.Emit(ILOpcode.endfinally);
431cleanupCodestream.Emit(ILOpcode.ret);
parent\parent\Common\TypeSystem\IL\Stubs\UnsafeIntrinsics.cs (68)
24return new ILStubMethodIL(method, new byte[] { (byte)ILOpcode.ldarg_0, (byte)ILOpcode.conv_u, (byte)ILOpcode.ret }, Array.Empty<LocalVariableDefinition>(), null);
27return new ILStubMethodIL(method, new byte[] { (byte)ILOpcode.ldarg_0, (byte)ILOpcode.ret }, Array.Empty<LocalVariableDefinition>(), null);
31return new ILStubMethodIL(method, new byte[] { (byte)ILOpcode.ldarg_0, (byte)ILOpcode.ldarg_1, (byte)ILOpcode.add, (byte)ILOpcode.ret }, Array.Empty<LocalVariableDefinition>(), null);
53(byte)ILOpcode.ldarg_0, (byte)ILOpcode.ldarg_1,
54(byte)ILOpcode.prefix1, unchecked((byte)ILOpcode.ceq),
55(byte)ILOpcode.ret }, Array.Empty<LocalVariableDefinition>(), null);
59(byte)ILOpcode.ldarg_0, (byte)ILOpcode.ldarg_1,
60(byte)ILOpcode.prefix1, unchecked((byte)ILOpcode.cgt_un),
61(byte)ILOpcode.ret }, Array.Empty<LocalVariableDefinition>(), null);
65(byte)ILOpcode.ldarg_0, (byte)ILOpcode.ldarg_1,
66(byte)ILOpcode.prefix1, unchecked((byte)ILOpcode.clt_un),
67(byte)ILOpcode.ret }, Array.Empty<LocalVariableDefinition>(), null);
71(byte)ILOpcode.ldarg_1, (byte)ILOpcode.ldarg_0,
72(byte)ILOpcode.sub,
73(byte)ILOpcode.ret }, Array.Empty<LocalVariableDefinition>(), null);
77(byte)ILOpcode.ldc_i4_0, (byte)ILOpcode.conv_u,
78(byte)ILOpcode.ret }, Array.Empty<LocalVariableDefinition>(), null);
82(byte)ILOpcode.ldarg_0,
83(byte)ILOpcode.ldc_i4_0, (byte)ILOpcode.conv_u,
84(byte)ILOpcode.prefix1, unchecked((byte)ILOpcode.ceq),
85(byte)ILOpcode.ret }, Array.Empty<LocalVariableDefinition>(), null);
87return new ILStubMethodIL(method, new byte[] { (byte)ILOpcode.ret }, Array.Empty<LocalVariableDefinition>(), null);
91return new ILStubMethodIL(method, new byte[] { (byte)ILOpcode.ldarg_0, (byte)ILOpcode.ldarg_1, (byte)ILOpcode.sub, (byte)ILOpcode.ret }, Array.Empty<LocalVariableDefinition>(), null);
107codeStream.Emit(ILOpcode.ldarg_1);
108codeStream.Emit(ILOpcode.sizeof_, emit.NewToken(context.GetSignatureVariable(0, method: true)));
109codeStream.Emit(ILOpcode.conv_i);
110codeStream.Emit(ILOpcode.mul);
111codeStream.Emit(ILOpcode.ldarg_0);
112codeStream.Emit(ILOpcode.add);
113codeStream.Emit(ILOpcode.ret);
126codeStream.Emit(ILOpcode.ldarg_0);
127codeStream.Emit(ILOpcode.ldarg_1);
128codeStream.Emit(ILOpcode.sizeof_, emit.NewToken(context.GetSignatureVariable(0, method: true)));
129codeStream.Emit(ILOpcode.conv_i);
130codeStream.Emit(ILOpcode.mul);
131codeStream.Emit(ILOpcode.sub);
132codeStream.Emit(ILOpcode.ret);
149codeStream.Emit(write ? ILOpcode.stobj : ILOpcode.ldobj,
151codeStream.Emit(ILOpcode.ret);
167codeStream.Emit(ILOpcode.ldobj, token);
168codeStream.Emit(ILOpcode.stobj, token);
169codeStream.Emit(ILOpcode.ret);
186codeStream.Emit(ILOpcode.cpblk);
187codeStream.Emit(ILOpcode.ret);
204codeStream.Emit(ILOpcode.initblk);
205codeStream.Emit(ILOpcode.ret);
220codeStream.Emit(ILOpcode.unbox, emit.NewToken(context.GetSignatureVariable(0, method: true)));
221codeStream.Emit(ILOpcode.ret);
parent\parent\Common\TypeSystem\Interop\IL\Marshaller.Aot.cs (132)
114codeStream.Emit(ILOpcode.call, emitter.NewToken(helper));
127codeStream.Emit(PInvokeFlags.BestFitMapping ? ILOpcode.ldc_i4_1 : ILOpcode.ldc_i4_0);
128codeStream.Emit(PInvokeFlags.ThrowOnUnmappableChar ? ILOpcode.ldc_i4_1 : ILOpcode.ldc_i4_0);
129codeStream.Emit(ILOpcode.call, emitter.NewToken(helper));
139codeStream.Emit(ILOpcode.call, emitter.NewToken(helper));
151codeStream.Emit(PInvokeFlags.BestFitMapping ? ILOpcode.ldc_i4_1 : ILOpcode.ldc_i4_0);
152codeStream.Emit(PInvokeFlags.ThrowOnUnmappableChar ? ILOpcode.ldc_i4_1 : ILOpcode.ldc_i4_0);
153codeStream.Emit(ILOpcode.call, emitter.NewToken(helper));
163codeStream.Emit(ILOpcode.call, emitter.NewToken(helper));
186codeStream.Emit(ILOpcode.call, emitter.NewToken(
197codeStream.Emit(ILOpcode.brfalse, lNull);
199codeStream.Emit(ILOpcode.newobj, emitter.NewToken(
212codeStream.Emit(ILOpcode.call, emitter.NewToken(helper));
227codeStream.Emit(PInvokeFlags.BestFitMapping ? ILOpcode.ldc_i4_1 : ILOpcode.ldc_i4_0);
228codeStream.Emit(PInvokeFlags.ThrowOnUnmappableChar ? ILOpcode.ldc_i4_1 : ILOpcode.ldc_i4_0);
230codeStream.Emit(ILOpcode.call, emitter.NewToken(helper));
239codeStream.Emit(ILOpcode.call, _ilCodeStreams.Emitter.NewToken(helper));
247codeStream.Emit(ILOpcode.call, emitter.NewToken(
257codeStream.Emit(ILOpcode.ldfld, _ilCodeStreams.Emitter.NewToken(InteropTypes.GetHandleRef(Context).GetKnownField("_handle"u8)));
274codeStream.Emit(ILOpcode.ldfld, _ilCodeStreams.Emitter.NewToken(InteropTypes.GetHandleRef(Context).GetKnownField("_wrapper"u8)));
275codeStream.Emit(ILOpcode.call, _ilCodeStreams.Emitter.NewToken(InteropTypes.GetGC(Context).GetKnownMethod("KeepAlive"u8, null)));
284codeStream.Emit(ILOpcode.initobj, _ilCodeStreams.Emitter.NewToken(NativeType));
291codeStream.Emit(ILOpcode.call, _ilCodeStreams.Emitter.NewToken(
299codeStream.Emit(ILOpcode.call, _ilCodeStreams.Emitter.NewToken(
312codeStream.Emit(ILOpcode.call, _ilCodeStreams.Emitter.NewToken(
346codeStream.Emit(ILOpcode.ldfld, emitter.NewToken(_managedField));
349codeStream.Emit(ILOpcode.brfalse, lNullCheck);
352codeStream.Emit(ILOpcode.ldfld, emitter.NewToken(_managedField));
354codeStream.Emit(ILOpcode.ldlen);
355codeStream.Emit(ILOpcode.conv_i4);
365codeStream.Emit(ILOpcode.blt, lSmaller);
368codeStream.Emit(ILOpcode.br, lDone);
421codeStream.Emit(ILOpcode.ldfld, emitter.NewToken(_managedField));
422codeStream.Emit(ILOpcode.brfalse, lDone);
425codeStream.Emit(ILOpcode.ldflda, emitter.NewToken(_nativeField));
433codeStream.Emit(ILOpcode.br, lRangeCheck);
437codeStream.Emit(ILOpcode.ldflda, emitter.NewToken(_nativeField));
441codeStream.Emit(ILOpcode.ldfld, emitter.NewToken(_managedField));
450codeStream.Emit(ILOpcode.call, emitter.NewToken(
455codeStream.Emit(ILOpcode.add);
462codeStream.Emit(ILOpcode.blt, lLoopHeader);
498codeStream.Emit(ILOpcode.newarr, emitter.NewToken(managedElementType));
499codeStream.Emit(ILOpcode.stfld, emitter.NewToken(_managedField));
507codeStream.Emit(ILOpcode.br, lRangeCheck);
513codeStream.Emit(ILOpcode.ldfld, emitter.NewToken(_managedField));
519codeStream.Emit(ILOpcode.ldflda, emitter.NewToken(_nativeField));
522codeStream.Emit(ILOpcode.call, emitter.NewToken(
533codeStream.Emit(ILOpcode.add);
540codeStream.Emit(ILOpcode.blt, lLoopHeader);
573codeStream.Emit(ILOpcode.ldfld, emitter.NewToken(_managedField));
576codeStream.Emit(ILOpcode.ldflda, emitter.NewToken(_nativeField));
577codeStream.Emit(ILOpcode.conv_u);
583codeStream.Emit(PInvokeFlags.BestFitMapping ? ILOpcode.ldc_i4_1 : ILOpcode.ldc_i4_0);
584codeStream.Emit(PInvokeFlags.ThrowOnUnmappableChar ? ILOpcode.ldc_i4_1 : ILOpcode.ldc_i4_0);
587codeStream.Emit(ILOpcode.call, emitter.NewToken(GetManagedToNativeHelper()));
598codeStream.Emit(ILOpcode.ldflda, emitter.NewToken(_nativeField));
599codeStream.Emit(ILOpcode.conv_u);
603codeStream.Emit(ILOpcode.call, emitter.NewToken(GetNativeToManagedHelper()));
605codeStream.Emit(ILOpcode.stfld, emitter.NewToken(_managedField));
656codeStream.Emit(ILOpcode.initobj, _ilCodeStreams.Emitter.NewToken(NativeType));
665codeStream.Emit(ILOpcode.brfalse, lNull);
669codeStream.Emit(ILOpcode.call, _ilCodeStreams.Emitter.NewToken(
681codeStream.Emit(ILOpcode.brtrue, lNonNull);
683codeStream.Emit(ILOpcode.ldtoken, emitter.NewToken(ManagedType));
684codeStream.Emit(ILOpcode.call, emitter.NewToken(InteropTypes.GetType(Context).GetMethod("GetTypeFromHandle"u8, null)));
685codeStream.Emit(ILOpcode.call, emitter.NewToken(InteropTypes.GetRuntimeHelpers(Context).GetKnownMethod("GetUninitializedObject"u8, null)));
691codeStream.Emit(ILOpcode.call, _ilCodeStreams.Emitter.NewToken(
704codeStream.Emit(ILOpcode.call, _ilCodeStreams.Emitter.NewToken(
736codeStream.Emit(ILOpcode.conv_i);
740codeStream.Emit(ILOpcode.brfalse, lNull);
752codeStream.Emit(ILOpcode.ldflda, emitter.NewToken(rawDataField));
753codeStream.Emit(ILOpcode.conv_i);
765codeStream.Emit(ILOpcode.conv_i);
769codeStream.Emit(ILOpcode.brfalse, lNull);
775codeStream.Emit(ILOpcode.initobj, emitter.NewToken(nativeStructType));
785codeStream.Emit(ILOpcode.ldtoken, emitter.NewToken(ManagedType));
786codeStream.Emit(ILOpcode.call, emitter.NewToken(InteropTypes.GetType(Context).GetMethod("GetTypeFromHandle"u8, null)));
787codeStream.Emit(ILOpcode.call, emitter.NewToken(InteropTypes.GetRuntimeHelpers(Context).GetKnownMethod("GetUninitializedObject"u8, null)));
797codeStream.Emit(ILOpcode.brfalse, lNull);
801codeStream.Emit(ILOpcode.call, _ilCodeStreams.Emitter.NewToken(
820codeStream.Emit(ILOpcode.brfalse, lNull);
824codeStream.Emit(ILOpcode.call, _ilCodeStreams.Emitter.NewToken(
848codeStream.Emit(ILOpcode.brfalse, lNull);
851codeStream.Emit(ILOpcode.call, emitter.NewToken(
877codeStream.Emit(ILOpcode.brfalse, lNull);
882codeStream.Emit(ILOpcode.call, emitter.NewToken(getNativeSizeHelper));
883codeStream.Emit(ILOpcode.dup);
885codeStream.Emit(ILOpcode.localloc);
886codeStream.Emit(ILOpcode.dup);
890codeStream.Emit(ILOpcode.initblk);
901codeStream.Emit(ILOpcode.brfalse, lNull);
905codeStream.Emit(ILOpcode.call, _ilCodeStreams.Emitter.NewToken(
917codeStream.Emit(ILOpcode.brfalse, lNull);
921codeStream.Emit(ILOpcode.call, _ilCodeStreams.Emitter.NewToken(
939codeStream.Emit(ILOpcode.brfalse, lNull);
943codeStream.Emit(ILOpcode.call, emitter.NewToken(
986codeStream.Emit(ILOpcode.newobj, emitter.NewToken(guidCtorHandleMethod));
989codeStream.Emit(ILOpcode.call, emitter.NewToken(helper));
999codeStream.Emit(ILOpcode.call, emitter.NewToken(helper));
1011codeStream.Emit(ILOpcode.call, emitter.NewToken(helper));
1030codeStream.Emit(ILOpcode.call, emitter.NewToken(helper));
1038codeStream.Emit(ILOpcode.call, emitter.NewToken(helper));
1049codeStream.Emit(ILOpcode.call, emitter.NewToken(helper));
1063codeStream.Emit(ILOpcode.call, emitter.NewToken(helper));
1071codeStream.Emit(ILOpcode.call, emitter.NewToken(helper));
1082codeStream.Emit(ILOpcode.call, emitter.NewToken(helper));
1096codeStream.Emit(ILOpcode.call, emitter.NewToken(helper));
1107codeStream.Emit(ILOpcode.call, emitter.NewToken(helper));
1121codeStream.Emit(ILOpcode.call, emitter.NewToken(helper));
1132codeStream.Emit(ILOpcode.call, emitter.NewToken(helper));
1156codeStream.Emit(ILOpcode.initobj, _ilCodeStreams.Emitter.NewToken(NativeType));
1172codeStream.Emit(ILOpcode.call, emitter.NewToken(helper));
1187codeStream.Emit(ILOpcode.call, emitter.NewToken(helper));
1204codeStream.Emit(ILOpcode.call, emitter.NewToken(helper));
1243fnptrLoadStream.Emit(ILOpcode.ldtoken, emitter.NewToken(ManagedType));
1244fnptrLoadStream.Emit(ILOpcode.ldtoken, emitter.NewToken(marshallerType));
1245fnptrLoadStream.Emit(ILOpcode.ldstr, emitter.NewToken(cookie));
1248fnptrLoadStream.Emit(ILOpcode.ldftn, emitter.NewToken(getInstanceMethod));
1253fnptrLoadStream.Emit(ILOpcode.conv_i);
1256fnptrLoadStream.Emit(ILOpcode.call, emitter.NewToken(initializeCustomMarshallerMethod));
1273codeStream.Emit(ILOpcode.callvirt, emitter.NewToken(manageToNativeMethod));
1302codeStream.Emit(ILOpcode.callvirt, emitter.NewToken(marshalNativeToManagedMethod));
1320codeStream.Emit(ILOpcode.callvirt, emitter.NewToken(cleanupManagedDataMethod));
1337codeStream.Emit(ILOpcode.callvirt, emitter.NewToken(cleanupNativeDataMethod));
parent\parent\Common\TypeSystem\Interop\IL\Marshaller.cs (100)
734stream.Emit(ILOpcode.conv_i);
1048marshallingCodeStream.Emit(ILOpcode.conv_u);
1152codeStream.Emit(ILOpcode.ldlen);
1153codeStream.Emit(ILOpcode.conv_i4);
1211codeStream.Emit(ILOpcode.add);
1213codeStream.Emit(ILOpcode.conv_ovf_i4);
1230codeStream.Emit(ILOpcode.conv_u);
1235codeStream.Emit(ILOpcode.brfalse, lNullArray);
1244codeStream.Emit(ILOpcode.sizeof_, emitter.NewToken(nativeElementType));
1246codeStream.Emit(ILOpcode.mul_ovf);
1254codeStream.Emit(ILOpcode.dup);
1257codeStream.Emit(ILOpcode.call, emitter.NewToken(
1259codeStream.Emit(ILOpcode.dup);
1264codeStream.Emit(ILOpcode.initblk);
1268codeStream.Emit(ILOpcode.call, emitter.NewToken(
1292codeStream.Emit(ILOpcode.brfalse, lNullArray);
1299codeStream.Emit(ILOpcode.sizeof_, emitter.NewToken(nativeElementType));
1308codeStream.Emit(ILOpcode.br, lRangeCheck);
1323codeStream.Emit(ILOpcode.add);
1327codeStream.Emit(ILOpcode.add);
1334codeStream.Emit(ILOpcode.blt, lLoopHeader);
1356codeStream.Emit(ILOpcode.brfalse, lNullArray);
1366codeStream.Emit(ILOpcode.newarr, emitter.NewToken(ManagedElementType));
1370codeStream.Emit(ILOpcode.sizeof_, emitter.NewToken(nativeElementType));
1381codeStream.Emit(ILOpcode.br, lRangeCheck);
1401codeStream.Emit(ILOpcode.add);
1405codeStream.Emit(ILOpcode.add);
1412codeStream.Emit(ILOpcode.blt, lLoopHeader);
1422codeStream.Emit(ILOpcode.newarr, emitter.NewToken(elementType));
1435codeStream.Emit(ILOpcode.brfalse, lNullArray);
1453codeStream.Emit(ILOpcode.sizeof_, emitter.NewToken(nativeElementType));
1470codeStream.Emit(ILOpcode.br, lRangeCheck);
1480codeStream.Emit(ILOpcode.add);
1484codeStream.Emit(ILOpcode.add);
1491codeStream.Emit(ILOpcode.blt, lLoopHeader);
1495codeStream.Emit(ILOpcode.call, emitter.NewToken(InteropTypes.GetMarshal(Context).GetKnownMethod("FreeCoTaskMem"u8, null)));
1512codeStream.Emit(ILOpcode.brfalse, lNullArray);
1520codeStream.Emit(ILOpcode.call, emitter.NewToken(getArrayDataReferenceMethod));
1522codeStream.Emit(ILOpcode.sizeof_, emitter.NewToken(ManagedElementType));
1523codeStream.Emit(ILOpcode.mul_ovf);
1524codeStream.Emit(ILOpcode.cpblk);
1533codeStream.Emit(ILOpcode.call, emitter.NewToken(getArrayDataReferenceMethod));
1539codeStream.Emit(ILOpcode.conv_i);
1547codeStream.Emit(ILOpcode.conv_u);
1582codeStream.Emit(ILOpcode.ceq);
1584codeStream.Emit(ILOpcode.ceq);
1588codeStream.Emit(ILOpcode.brfalse, pLoadFalseLabel);
1590codeStream.Emit(ILOpcode.br, pDoneLabel);
1605codeStream.Emit(ILOpcode.ceq);
1607codeStream.Emit(ILOpcode.ceq);
1636codeStream.Emit(ILOpcode.call, emitter.NewToken(
1657codeStream.Emit(ILOpcode.brtrue, lNonNullString);
1663codeStream.Emit(ILOpcode.ldc_i4_0);
1664codeStream.Emit(ILOpcode.conv_u);
1665codeStream.Emit(ILOpcode.br, lCommonExit);
1673codeStream.Emit(ILOpcode.call, emitter.NewToken(
1678codeStream.Emit(ILOpcode.conv_u);
1692codeStream.Emit(ILOpcode.call, emitter.NewToken(helper));
1708codeStream.Emit(ILOpcode.newobj, emitter.NewToken(charPtrConstructor));
1721codeStream.Emit(ILOpcode.brfalse, lNullCheck);
1724codeStream.Emit(ILOpcode.call, emitter.NewToken(
1745codeStream.Emit(ILOpcode.call, emitter.NewToken(
1759codeStream.Emit(PInvokeFlags.BestFitMapping ? ILOpcode.ldc_i4_1 : ILOpcode.ldc_i4_0);
1760codeStream.Emit(PInvokeFlags.ThrowOnUnmappableChar ? ILOpcode.ldc_i4_1 : ILOpcode.ldc_i4_0);
1762codeStream.Emit(ILOpcode.call, emitter.NewToken(stringToAnsi));
1772codeStream.Emit(ILOpcode.call, emitter.NewToken(ansiToString));
1783codeStream.Emit(ILOpcode.brfalse, lNullCheck);
1786codeStream.Emit(ILOpcode.call, emitter.NewToken(
1809codeStream.Emit(ILOpcode.call, emitter.NewToken(
1829codeStream.Emit(ILOpcode.localloc);
1843codeStream.Emit(ILOpcode.newobj, emitter.NewToken(spanOfByte.GetKnownMethod(".ctor"u8,
1846codeStream.Emit(ILOpcode.call, emitter.NewToken(marshallerIn.GetKnownMethod("FromManaged"u8, null)));
1849codeStream.Emit(ILOpcode.call, emitter.NewToken(marshallerIn.GetKnownMethod("ToUnmanaged"u8, null)));
1854codeStream.Emit(ILOpcode.call, emitter.NewToken(Marshaller.GetKnownMethod("ConvertToUnmanaged"u8, null)));
1865codeStream.Emit(ILOpcode.call, emitter.NewToken(Marshaller.GetKnownMethod("ConvertToManaged"u8, null)));
1876codeStream.Emit(ILOpcode.call, emitter.NewToken(
1882codeStream.Emit(ILOpcode.call, emitter.NewToken(
1904codeStream.Emit(ILOpcode.newobj, _ilCodeStreams.Emitter.NewToken(ctor));
1922returnValueMarshallingCodeStream.Emit(ILOpcode.call, emitter.NewToken(
1950marshallingCodeStream.Emit(ILOpcode.call, emitter.NewToken(
1956marshallingCodeStream.Emit(ILOpcode.call, emitter.NewToken(
1963cleanupCodeStream.Emit(ILOpcode.brfalse, lNotAddrefed);
1965cleanupCodeStream.Emit(ILOpcode.call, emitter.NewToken(
1994cleanupCodeStream.Emit(ILOpcode.beq, lSkipPropagation);
1999cleanupCodeStream.Emit(ILOpcode.call, emitter.NewToken(
2056codeStream.Emit(ILOpcode.dup);
2057codeStream.Emit(ILOpcode.brfalse, lNullPointer);
2059codeStream.Emit(ILOpcode.call, _ilCodeStreams.Emitter.NewToken(
2065codeStream.Emit(ILOpcode.br, lDone);
2068codeStream.Emit(ILOpcode.pop);
2070codeStream.Emit(ILOpcode.conv_i);
2082codeStream.Emit(ILOpcode.dup);
2083codeStream.Emit(ILOpcode.brfalse, lNullPointer);
2085codeStream.Emit(ILOpcode.call, _ilCodeStreams.Emitter.NewToken(
2091codeStream.Emit(ILOpcode.br, lDone);
2094codeStream.Emit(ILOpcode.pop);
2095codeStream.Emit(ILOpcode.ldnull);
2108codeStream.Emit(ILOpcode.call, _ilCodeStreams.Emitter.NewToken(InteropTypes.GetGC(Context).GetKnownMethod("KeepAlive"u8, null)));