Terraria v1.4.4.9
Terraria source code documentation
Loading...
Searching...
No Matches

◆ Emit() [7/17]

virtual void System.Reflection.Emit.ILGenerator.Emit ( OpCode opcode,
int arg )
inlinevirtual

Definition at line 313 of file ILGenerator.cs.

314 {
315 if (opcode.Equals(OpCodes.Ldc_I4))
316 {
317 OpCode opCode;
318 switch (arg)
319 {
320 case -1:
321 opCode = OpCodes.Ldc_I4_M1;
322 goto IL_009b;
323 case 0:
324 opCode = OpCodes.Ldc_I4_0;
325 goto IL_009b;
326 case 1:
327 opCode = OpCodes.Ldc_I4_1;
328 goto IL_009b;
329 case 2:
330 opCode = OpCodes.Ldc_I4_2;
331 goto IL_009b;
332 case 3:
333 opCode = OpCodes.Ldc_I4_3;
334 goto IL_009b;
335 case 4:
336 opCode = OpCodes.Ldc_I4_4;
337 goto IL_009b;
338 case 5:
339 opCode = OpCodes.Ldc_I4_5;
340 goto IL_009b;
341 case 6:
342 opCode = OpCodes.Ldc_I4_6;
343 goto IL_009b;
344 case 7:
345 opCode = OpCodes.Ldc_I4_7;
346 goto IL_009b;
347 case 8:
348 {
349 opCode = OpCodes.Ldc_I4_8;
350 goto IL_009b;
351 }
352 IL_009b:
353 opcode = opCode;
354 Emit(opcode);
355 return;
356 }
357 if (arg >= -128 && arg <= 127)
358 {
359 Emit(OpCodes.Ldc_I4_S, (sbyte)arg);
360 return;
361 }
362 }
363 else if (opcode.Equals(OpCodes.Ldarg))
364 {
365 if ((uint)arg <= 3u)
366 {
367 Emit(arg switch
368 {
369 0 => OpCodes.Ldarg_0,
370 1 => OpCodes.Ldarg_1,
371 2 => OpCodes.Ldarg_2,
372 _ => OpCodes.Ldarg_3,
373 });
374 return;
375 }
376 if ((uint)arg <= 255u)
377 {
378 Emit(OpCodes.Ldarg_S, (byte)arg);
379 return;
380 }
381 if ((uint)arg <= 65535u)
382 {
383 Emit(OpCodes.Ldarg, (short)arg);
384 return;
385 }
386 }
387 else if (opcode.Equals(OpCodes.Ldarga))
388 {
389 if ((uint)arg <= 255u)
390 {
391 Emit(OpCodes.Ldarga_S, (byte)arg);
392 return;
393 }
394 if ((uint)arg <= 65535u)
395 {
396 Emit(OpCodes.Ldarga, (short)arg);
397 return;
398 }
399 }
400 else if (opcode.Equals(OpCodes.Starg))
401 {
402 if ((uint)arg <= 255u)
403 {
404 Emit(OpCodes.Starg_S, (byte)arg);
405 return;
406 }
407 if ((uint)arg <= 65535u)
408 {
409 Emit(OpCodes.Starg, (short)arg);
410 return;
411 }
412 }
414 InternalEmit(opcode);
415 PutInteger4(arg);
416 }
void InternalEmit(OpCode opcode)

References System.Reflection.Emit.ILGenerator.EnsureCapacity(), System.Reflection.Emit.OpCode.Equals(), System.Reflection.Emit.ILGenerator.InternalEmit(), System.Reflection.Emit.OpCodes.Ldarg, System.Reflection.Emit.OpCodes.Ldarg_0, System.Reflection.Emit.OpCodes.Ldarg_1, System.Reflection.Emit.OpCodes.Ldarg_2, System.Reflection.Emit.OpCodes.Ldarg_3, System.Reflection.Emit.OpCodes.Ldarg_S, System.Reflection.Emit.OpCodes.Ldarga, System.Reflection.Emit.OpCodes.Ldarga_S, System.Reflection.Emit.OpCodes.Ldc_I4, System.Reflection.Emit.OpCodes.Ldc_I4_0, System.Reflection.Emit.OpCodes.Ldc_I4_1, System.Reflection.Emit.OpCodes.Ldc_I4_2, System.Reflection.Emit.OpCodes.Ldc_I4_3, System.Reflection.Emit.OpCodes.Ldc_I4_4, System.Reflection.Emit.OpCodes.Ldc_I4_5, System.Reflection.Emit.OpCodes.Ldc_I4_6, System.Reflection.Emit.OpCodes.Ldc_I4_7, System.Reflection.Emit.OpCodes.Ldc_I4_8, System.Reflection.Emit.OpCodes.Ldc_I4_M1, System.Reflection.Emit.OpCodes.Ldc_I4_S, System.Reflection.Emit.ILGenerator.PutInteger4(), System.Reflection.Emit.OpCodes.Starg, and System.Reflection.Emit.OpCodes.Starg_S.