From: Hongtao Yu Date: Wed, 9 Dec 2015 21:23:26 +0000 (-0800) Subject: Porting jit\opt\tailcall\TailcallVerifyWithPrefix.il X-Git-Tag: accepted/tizen/base/20180629.140029~6031^2 X-Git-Url: http://review.tizen.org/git/?a=commitdiff_plain;h=cded077f7b57350ed429355550ab6bd7fe9a76c5;p=platform%2Fupstream%2Fcoreclr.git Porting jit\opt\tailcall\TailcallVerifyWithPrefix.il The test orginally requires passing a command line arguemnt to run. This change modifies the Main method by renaming it to Run and adds a wrapper method called Main which explicitly passes original commandline strings to Run. Condition21 tests fail for windows. Not including them in this change. All tests fail on linux. Disabling them for linux. --- diff --git a/tests/src/JIT/opt/Tailcall/TailcallVerifyTransparentLibraryWithPrefix.il b/tests/src/JIT/opt/Tailcall/TailcallVerifyTransparentLibraryWithPrefix.il new file mode 100644 index 0000000..38214c6 --- /dev/null +++ b/tests/src/JIT/opt/Tailcall/TailcallVerifyTransparentLibraryWithPrefix.il @@ -0,0 +1,465 @@ +// Copyright (c) Microsoft. All rights reserved. +// Licensed under the MIT license. See LICENSE file in the project root for full license information. + + + +// Metadata version: v2.0.50727 +.assembly extern mscorlib +{ + .publickeytoken = (B7 7A 5C 56 19 34 E0 89 ) // .z\V.4.. + .ver 2:0:0:0 +} + +.module TailcallVerifyTransparentLibraryWithPrefix.dll +// MVID: {A0DB04B7-B678-4A57-9EEC-D55E6443C758} +.imagebase 0x00400000 +.file alignment 0x00000200 +.stackreserve 0x00100000 +.subsystem 0x0003 // WINDOWS_CUI +.corflags 0x00000001 // ILONLY +// Image base: 0x00F50000 + + +// =============== CLASS MEMBERS DECLARATION =================== + +.class public auto ansi beforefieldinit TailcallVerify.Condition22 + extends [mscorlib]System.Object +{ + .field private static int32 modreq([mscorlib]System.Runtime.CompilerServices.IsVolatile) zero + .field private static int32 Result + .method public hidebysig static int32 Test1() cil managed nooptimization + { + // Code size 95 (0x5f) + .maxstack 3 + .locals init ([0] class [mscorlib]System.Exception e) + IL_0000: ldstr "Executing Condition22.Test1 - Caller(SecurityTran" + + "sparent): Arguments: None - ReturnType: void; Callee(SecurityCritical):" + + " Arguments: 0 - ReturnType: Int32" + IL_0005: call void [mscorlib]System.Console::WriteLine(string) + IL_000a: ldc.i4.s 100 + IL_000c: stsfld int32 TailcallVerify.Condition22::Result + .try + { + IL_0011: call void TailcallVerify.Condition22::Caller1() + IL_0016: leave.s IL_0035 + + } // end .try + catch [mscorlib]System.Exception + { + IL_0018: stloc.0 + IL_0019: ldloc.0 + IL_001a: isinst [mscorlib]System.MethodAccessException + IL_001f: brfalse.s IL_002a + + IL_0021: ldc.i4.s 100 + IL_0023: stsfld int32 TailcallVerify.Condition22::Result + IL_0028: br.s IL_0033 + + IL_002a: ldc.i4.s 101 + IL_002c: stsfld int32 TailcallVerify.Condition22::Result + IL_0031: rethrow + IL_0033: leave.s IL_0035 + + } // end handler + IL_0035: ldstr "Execution finished - Test " + IL_003a: ldsfld int32 TailcallVerify.Condition22::Result + IL_003f: ldc.i4.s 100 + IL_0041: beq.s IL_004a + + IL_0043: ldstr "FAILED" + IL_0048: br.s IL_004f + + IL_004a: ldstr "PASSED" + IL_004f: call string [mscorlib]System.String::Concat(string, + string) + IL_0054: call void [mscorlib]System.Console::WriteLine(string) + IL_0059: ldsfld int32 TailcallVerify.Condition22::Result + IL_005e: ret + } // end of method Condition22::Test1 + + .method private hidebysig static void Caller1() cil managed + { + // Code size 53 (0x35) + .maxstack 8 + IL_0000: ldc.i4.0 + IL_0001: newobj instance void [mscorlib]System.Diagnostics.StackFrame::.ctor(bool) + IL_0006: callvirt instance class [mscorlib]System.Reflection.MethodBase [mscorlib]System.Diagnostics.StackFrame::GetMethod() + IL_000b: callvirt instance string [mscorlib]System.Reflection.MemberInfo::get_Name() + IL_0010: ldstr "Caller" + IL_0015: callvirt instance int32 [mscorlib]System.String::IndexOf(string) + IL_001a: ldc.i4.m1 + IL_001b: bne.un.s IL_002e + + IL_001d: ldstr "Failed, Method was inlined..." + IL_0022: call void [mscorlib]System.Console::WriteLine(string) + IL_0027: ldc.i4.s 101 + IL_0029: stsfld int32 TailcallVerify.Condition22::Result + IL_002e: tail. call void TailcallVerify.Condition22::Callee1() + IL_0034: ret + } // end of method Condition22::Caller1 + + .method private hidebysig static void + Callee1() cil managed noinlining + { + .custom instance void [mscorlib]System.Security.SecurityCriticalAttribute::.ctor() = ( 01 00 00 00 ) + // Code size 22 (0x16) + .maxstack 2 + .locals init ([0] int32 i) + IL_0000: ldstr "in Condition22.Callee1....." + IL_0005: call void [mscorlib]System.Console::WriteLine(string) + IL_000a: ldc.i4.1 + IL_000b: volatile. + IL_000d: ldsfld int32 modreq([mscorlib]System.Runtime.CompilerServices.IsVolatile) TailcallVerify.Condition22::zero + IL_0012: div + IL_0013: stloc.0 + IL_0015: ret + } // end of method Condition22::Callee1 + + .method public hidebysig static int32 Test2() cil managed nooptimization + { + .custom instance void [mscorlib]System.Security.SecurityCriticalAttribute::.ctor() = ( 01 00 00 00 ) + // Code size 153 (0x99) + .maxstack 3 + .locals init ([0] class [mscorlib]System.Exception e) + IL_0000: ldstr "Executing Condition22.Test2 - Caller: Arguments: " + + "None - ReturnType: void; Callee: Arguments: 0 - ReturnType: Int32" + IL_0005: call void [mscorlib]System.Console::WriteLine(string) + IL_000a: ldc.i4.s 100 + IL_000c: stsfld int32 TailcallVerify.Condition22::Result + .try + { + IL_0011: call void TailcallVerify.Condition22::Caller2() + IL_0016: leave.s IL_006f + + } // end .try + catch [mscorlib]System.Exception + { + IL_0018: stloc.0 + IL_0019: ldloc.0 + IL_001a: isinst [mscorlib]System.DivideByZeroException + IL_001f: brtrue.s IL_002a + + IL_0021: ldc.i4.s 101 + IL_0023: stsfld int32 TailcallVerify.Condition22::Result + IL_0028: rethrow + IL_002a: ldloc.0 + IL_002b: callvirt instance string [mscorlib]System.Exception::get_StackTrace() + IL_0030: ldstr "Caller" + IL_0035: callvirt instance int32 [mscorlib]System.String::IndexOf(string) + IL_003a: ldc.i4.m1 + IL_003b: beq.s IL_006d + + IL_003d: ldstr "FAILED: Found the word 'Caller' in the stacktrace." + IL_0042: call void [mscorlib]System.Console::WriteLine(string) + IL_0047: ldstr "------------------------------------------------" + IL_004c: call void [mscorlib]System.Console::WriteLine(string) + IL_0051: call void [mscorlib]System.Console::WriteLine() + IL_0056: ldloc.0 + IL_0057: callvirt instance string [mscorlib]System.Exception::get_StackTrace() + IL_005c: call void [mscorlib]System.Console::WriteLine(string) + IL_0061: call void [mscorlib]System.Console::WriteLine() + IL_0066: ldc.i4.s 101 + IL_0068: stsfld int32 TailcallVerify.Condition22::Result + IL_006d: leave.s IL_006f + + } // end handler + IL_006f: ldstr "Execution finished - Test " + IL_0074: ldsfld int32 TailcallVerify.Condition22::Result + IL_0079: ldc.i4.s 100 + IL_007b: beq.s IL_0084 + + IL_007d: ldstr "FAILED" + IL_0082: br.s IL_0089 + + IL_0084: ldstr "PASSED" + IL_0089: call string [mscorlib]System.String::Concat(string, + string) + IL_008e: call void [mscorlib]System.Console::WriteLine(string) + IL_0093: ldsfld int32 TailcallVerify.Condition22::Result + IL_0098: ret + } // end of method Condition22::Test2 + + .method private hidebysig static void Caller2() cil managed + { + .custom instance void [mscorlib]System.Security.SecurityCriticalAttribute::.ctor() = ( 01 00 00 00 ) + // Code size 53 (0x35) + .maxstack 8 + IL_0000: ldc.i4.0 + IL_0001: newobj instance void [mscorlib]System.Diagnostics.StackFrame::.ctor(bool) + IL_0006: callvirt instance class [mscorlib]System.Reflection.MethodBase [mscorlib]System.Diagnostics.StackFrame::GetMethod() + IL_000b: callvirt instance string [mscorlib]System.Reflection.MemberInfo::get_Name() + IL_0010: ldstr "Caller" + IL_0015: callvirt instance int32 [mscorlib]System.String::IndexOf(string) + IL_001a: ldc.i4.m1 + IL_001b: bne.un.s IL_002e + + IL_001d: ldstr "Failed, Method was inlined..." + IL_0022: call void [mscorlib]System.Console::WriteLine(string) + IL_0027: ldc.i4.s 101 + IL_0029: stsfld int32 TailcallVerify.Condition22::Result + IL_002e: tail. call int32 TailcallVerify.Condition22::Callee2() + IL_0033: pop + IL_0034: ret + } // end of method Condition22::Caller2 + + .method private hidebysig static int32 + Callee2() cil managed noinlining + { + // Code size 12 (0xc) + .maxstack 2 + .locals init ([0] int32 i) + IL_0000: ldc.i4.1 + IL_0001: volatile. + IL_0003: ldsfld int32 modreq([mscorlib]System.Runtime.CompilerServices.IsVolatile) TailcallVerify.Condition22::zero + IL_0008: div + IL_0009: stloc.0 + IL_000a: ldloc.0 + IL_000b: ret + } // end of method Condition22::Callee2 + + .method public hidebysig static int32 Test3() cil managed nooptimization + { + // Code size 160 (0xa0) + .maxstack 3 + .locals init ([0] class TailcallVerify.Condition22 con, + [1] class [mscorlib]System.Exception e) + IL_0000: ldstr "Executing Condition22.Test3 - Caller: Arguments: " + + "None - ReturnType: void; Callee (virtual call): Arguments: 0 - ReturnTy" + + "pe: Int32" + IL_0005: call void [mscorlib]System.Console::WriteLine(string) + IL_000a: ldc.i4.s 100 + IL_000c: stsfld int32 TailcallVerify.Condition22::Result + .try + { + IL_0011: newobj instance void TailcallVerify.Condition22::.ctor() + IL_0016: stloc.0 + IL_0017: ldloc.0 + IL_0018: callvirt instance void TailcallVerify.Condition22::Caller3() + IL_001d: leave.s IL_0076 + + } // end .try + catch [mscorlib]System.Exception + { + IL_001f: stloc.1 + IL_0020: ldloc.1 + IL_0021: isinst [mscorlib]System.DivideByZeroException + IL_0026: brtrue.s IL_0031 + + IL_0028: ldc.i4.s 101 + IL_002a: stsfld int32 TailcallVerify.Condition22::Result + IL_002f: rethrow + IL_0031: ldloc.1 + IL_0032: callvirt instance string [mscorlib]System.Exception::get_StackTrace() + IL_0037: ldstr "Caller" + IL_003c: callvirt instance int32 [mscorlib]System.String::IndexOf(string) + IL_0041: ldc.i4.m1 + IL_0042: bne.un.s IL_0074 + + IL_0044: ldstr "FAILED: Did not found the word 'Caller' in the sta" + + "cktrace. Since the assembly is transparent, a tailcall should not be al" + + "lowed." + IL_0049: call void [mscorlib]System.Console::WriteLine(string) + IL_004e: ldstr "------------------------------------------------" + IL_0053: call void [mscorlib]System.Console::WriteLine(string) + IL_0058: call void [mscorlib]System.Console::WriteLine() + IL_005d: ldloc.1 + IL_005e: callvirt instance string [mscorlib]System.Exception::get_StackTrace() + IL_0063: call void [mscorlib]System.Console::WriteLine(string) + IL_0068: call void [mscorlib]System.Console::WriteLine() + IL_006d: ldc.i4.s 101 + IL_006f: stsfld int32 TailcallVerify.Condition22::Result + IL_0074: leave.s IL_0076 + + } // end handler + IL_0076: ldstr "Execution finished - Test " + IL_007b: ldsfld int32 TailcallVerify.Condition22::Result + IL_0080: ldc.i4.s 100 + IL_0082: beq.s IL_008b + + IL_0084: ldstr "FAILED" + IL_0089: br.s IL_0090 + + IL_008b: ldstr "PASSED" + IL_0090: call string [mscorlib]System.String::Concat(string, + string) + IL_0095: call void [mscorlib]System.Console::WriteLine(string) + IL_009a: ldsfld int32 TailcallVerify.Condition22::Result + IL_009f: ret + } // end of method Condition22::Test3 + + .method private hidebysig instance void + Caller3() cil managed + { + // Code size 54 (0x36) + .maxstack 8 + IL_0000: ldc.i4.0 + IL_0001: newobj instance void [mscorlib]System.Diagnostics.StackFrame::.ctor(bool) + IL_0006: callvirt instance class [mscorlib]System.Reflection.MethodBase [mscorlib]System.Diagnostics.StackFrame::GetMethod() + IL_000b: callvirt instance string [mscorlib]System.Reflection.MemberInfo::get_Name() + IL_0010: ldstr "Caller" + IL_0015: callvirt instance int32 [mscorlib]System.String::IndexOf(string) + IL_001a: ldc.i4.m1 + IL_001b: bne.un.s IL_002e + + IL_001d: ldstr "Failed, Method was inlined..." + IL_0022: call void [mscorlib]System.Console::WriteLine(string) + IL_0027: ldc.i4.s 101 + IL_0029: stsfld int32 TailcallVerify.Condition22::Result + IL_002e: ldarg.0 + IL_002f: tail. callvirt instance int32 TailcallVerify.Condition22::Callee3() + IL_0034: pop + IL_0035: ret + } // end of method Condition22::Caller3 + + .method family hidebysig newslot virtual + instance int32 Callee3() cil managed noinlining + { + // Code size 12 (0xc) + .maxstack 2 + .locals init ([0] int32 i) + IL_0000: ldc.i4.1 + IL_0001: volatile. + IL_0003: ldsfld int32 modreq([mscorlib]System.Runtime.CompilerServices.IsVolatile) TailcallVerify.Condition22::zero + IL_0008: div + IL_0009: stloc.0 + IL_000a: ldloc.0 + IL_000b: ret + } // end of method Condition22::Callee3 + + .method public hidebysig static int32 Test4() cil managed nooptimization + { + // Code size 160 (0xa0) + .maxstack 3 + .locals init ([0] class TailcallVerify.Condition22 con, + [1] class [mscorlib]System.Exception e) + IL_0000: ldstr "Executing Condition22.Test4 - Caller: Arguments: " + + "None - ReturnType: void; Callee(regular call instruction): Arguments: 0" + + " - ReturnType: Int32" + IL_0005: call void [mscorlib]System.Console::WriteLine(string) + IL_000a: ldc.i4.s 100 + IL_000c: stsfld int32 TailcallVerify.Condition22::Result + .try + { + IL_0011: newobj instance void TailcallVerify.Condition22::.ctor() + IL_0016: stloc.0 + IL_0017: ldloc.0 + IL_0018: callvirt instance void TailcallVerify.Condition22::Caller4() + IL_001d: leave.s IL_0076 + + } // end .try + catch [mscorlib]System.Exception + { + IL_001f: stloc.1 + IL_0020: ldloc.1 + IL_0021: isinst [mscorlib]System.DivideByZeroException + IL_0026: brtrue.s IL_0031 + + IL_0028: ldc.i4.s 101 + IL_002a: stsfld int32 TailcallVerify.Condition22::Result + IL_002f: rethrow + IL_0031: ldloc.1 + IL_0032: callvirt instance string [mscorlib]System.Exception::get_StackTrace() + IL_0037: ldstr "Caller" + IL_003c: callvirt instance int32 [mscorlib]System.String::IndexOf(string) + IL_0041: ldc.i4.m1 + IL_0042: beq.s IL_0074 + + IL_0044: ldstr "FAILED: Found the word 'Caller' in the stacktrace." + IL_0049: call void [mscorlib]System.Console::WriteLine(string) + IL_004e: ldstr "------------------------------------------------" + IL_0053: call void [mscorlib]System.Console::WriteLine(string) + IL_0058: call void [mscorlib]System.Console::WriteLine() + IL_005d: ldloc.1 + IL_005e: callvirt instance string [mscorlib]System.Exception::get_StackTrace() + IL_0063: call void [mscorlib]System.Console::WriteLine(string) + IL_0068: call void [mscorlib]System.Console::WriteLine() + IL_006d: ldc.i4.s 101 + IL_006f: stsfld int32 TailcallVerify.Condition22::Result + IL_0074: leave.s IL_0076 + + } // end handler + IL_0076: ldstr "Execution finished - Test " + IL_007b: ldsfld int32 TailcallVerify.Condition22::Result + IL_0080: ldc.i4.s 100 + IL_0082: beq.s IL_008b + + IL_0084: ldstr "FAILED" + IL_0089: br.s IL_0090 + + IL_008b: ldstr "PASSED" + IL_0090: call string [mscorlib]System.String::Concat(string, + string) + IL_0095: call void [mscorlib]System.Console::WriteLine(string) + IL_009a: ldsfld int32 TailcallVerify.Condition22::Result + IL_009f: ret + } // end of method Condition22::Test4 + + .method private hidebysig instance void + Caller4() cil managed + { + // Code size 54 (0x36) + .maxstack 8 + IL_0000: ldc.i4.0 + IL_0001: newobj instance void [mscorlib]System.Diagnostics.StackFrame::.ctor(bool) + IL_0006: callvirt instance class [mscorlib]System.Reflection.MethodBase [mscorlib]System.Diagnostics.StackFrame::GetMethod() + IL_000b: callvirt instance string [mscorlib]System.Reflection.MemberInfo::get_Name() + IL_0010: ldstr "Caller" + IL_0015: callvirt instance int32 [mscorlib]System.String::IndexOf(string) + IL_001a: ldc.i4.m1 + IL_001b: bne.un.s IL_002e + + IL_001d: ldstr "Failed, Method was inlined..." + IL_0022: call void [mscorlib]System.Console::WriteLine(string) + IL_0027: ldc.i4.s 101 + IL_0029: stsfld int32 TailcallVerify.Condition22::Result + IL_002e: ldarg.0 + IL_002f: tail. call instance void TailcallVerify.Condition22::Callee4() + //IL_0034: pop + IL_0035: ret + } // end of method Condition22::Caller4 + + .method private hidebysig instance void + Callee4() cil managed noinlining + { + // Code size 12 (0xc) + .maxstack 2 + .locals init ([0] int32 i) + IL_0000: ldc.i4.1 + IL_0001: volatile. + IL_0003: ldsfld int32 modreq([mscorlib]System.Runtime.CompilerServices.IsVolatile) TailcallVerify.Condition22::zero + IL_0008: div + IL_0009: stloc.0 + //IL_000a: ldloc.0 + IL_000b: ret + } // end of method Condition22::Callee4 + + .method public hidebysig specialname rtspecialname + instance void .ctor() cil managed + { + // Code size 7 (0x7) + .maxstack 8 + IL_0000: ldarg.0 + IL_0001: call instance void [mscorlib]System.Object::.ctor() + IL_0006: ret + } // end of method Condition22::.ctor + + .method private hidebysig specialname rtspecialname static + void .cctor() cil managed + { + // Code size 16 (0x10) + .maxstack 8 + IL_0000: ldc.i4.0 + IL_0001: volatile. + IL_0003: stsfld int32 modreq([mscorlib]System.Runtime.CompilerServices.IsVolatile) TailcallVerify.Condition22::zero + IL_0008: ldc.i4.s 100 + IL_000a: stsfld int32 TailcallVerify.Condition22::Result + IL_000f: ret + } // end of method Condition22::.cctor + +} // end of class TailcallVerify.Condition22 + + +// ============================================================= + +// *********** DISASSEMBLY COMPLETE *********************** +// WARNING: Created Win32 resource file TailcallVerifyTransparentLibraryWithPrefix.res diff --git a/tests/src/JIT/opt/Tailcall/TailcallVerifyVerifiableLibraryWithPrefix.il b/tests/src/JIT/opt/Tailcall/TailcallVerifyVerifiableLibraryWithPrefix.il new file mode 100644 index 0000000..237f226 --- /dev/null +++ b/tests/src/JIT/opt/Tailcall/TailcallVerifyVerifiableLibraryWithPrefix.il @@ -0,0 +1,167 @@ +// Copyright (c) Microsoft. All rights reserved. +// Licensed under the MIT license. See LICENSE file in the project root for full license information. + + +// Metadata version: v2.0.50727 +.assembly extern mscorlib +{ + .publickeytoken = (B7 7A 5C 56 19 34 E0 89 ) // .z\V.4.. + .ver 2:0:0:0 +} + +.module TailcallVerifyVerifiableLibraryWithPrefix.dll +// MVID: {F8D503A0-BC73-40CC-B951-B9AA2545825B} +.imagebase 0x00400000 +.file alignment 0x00000200 +.stackreserve 0x00100000 +.subsystem 0x0003 // WINDOWS_CUI +.corflags 0x00000001 // ILONLY +// Image base: 0x00F50000 + + +// =============== CLASS MEMBERS DECLARATION =================== + +.class public auto ansi beforefieldinit TailcallVerify.Condition23 + extends [mscorlib]System.Object +{ + .field private static int32 modreq([mscorlib]System.Runtime.CompilerServices.IsVolatile) zero + .field private static int32 Result + .method public hidebysig static int32 Test1() cil managed nooptimization + { + // Code size 161 (0xa1) + .maxstack 3 + .locals init ([0] class TailcallVerify.Condition23 con, + [1] class [mscorlib]System.Exception e) + IL_0000: ldstr "Executing Condition23.Test1 - Caller: Arguments: N" + + "one - ReturnType: void; Callee (virtual call): Arguments: 0 - ReturnTyp" + + "e: Int32" + IL_0005: call void [mscorlib]System.Console::WriteLine(string) + IL_000a: ldc.i4.s 100 + IL_000c: stsfld int32 TailcallVerify.Condition23::Result + .try + { + IL_0011: newobj instance void TailcallVerify.Condition23::.ctor() + IL_0016: stloc.0 + IL_0017: ldloc.0 + IL_0018: callvirt instance int32 TailcallVerify.Condition23::Caller1() + IL_001d: pop + IL_001e: leave.s IL_0077 + + } // end .try + catch [mscorlib]System.Exception + { + IL_0020: stloc.1 + IL_0021: ldloc.1 + IL_0022: isinst [mscorlib]System.DivideByZeroException + IL_0027: brtrue.s IL_0032 + + IL_0029: ldc.i4.s 101 + IL_002b: stsfld int32 TailcallVerify.Condition23::Result + IL_0030: rethrow + IL_0032: ldloc.1 + IL_0033: callvirt instance string [mscorlib]System.Exception::get_StackTrace() + IL_0038: ldstr "Caller" + IL_003d: callvirt instance int32 [mscorlib]System.String::IndexOf(string) + IL_0042: ldc.i4.m1 + IL_0043: bne.un.s IL_0075 + + IL_0045: ldstr "FAILED: Did not found the word 'Caller' in the sta" + + "cktrace. Since the assembly is transparent, a tailcall should not be al" + + "lowed." + IL_004a: call void [mscorlib]System.Console::WriteLine(string) + IL_004f: ldstr "------------------------------------------------" + IL_0054: call void [mscorlib]System.Console::WriteLine(string) + IL_0059: call void [mscorlib]System.Console::WriteLine() + IL_005e: ldloc.1 + IL_005f: callvirt instance string [mscorlib]System.Exception::get_StackTrace() + IL_0064: call void [mscorlib]System.Console::WriteLine(string) + IL_0069: call void [mscorlib]System.Console::WriteLine() + IL_006e: ldc.i4.s 101 + IL_0070: stsfld int32 TailcallVerify.Condition23::Result + IL_0075: leave.s IL_0077 + + } // end handler + IL_0077: ldstr "Execution finished - Test " + IL_007c: ldsfld int32 TailcallVerify.Condition23::Result + IL_0081: ldc.i4.s 100 + IL_0083: beq.s IL_008c + + IL_0085: ldstr "FAILED" + IL_008a: br.s IL_0091 + + IL_008c: ldstr "PASSED" + IL_0091: call string [mscorlib]System.String::Concat(string, + string) + IL_0096: call void [mscorlib]System.Console::WriteLine(string) + IL_009b: ldsfld int32 TailcallVerify.Condition23::Result + IL_00a0: ret + } // end of method Condition23::Test1 + + .method private hidebysig instance int32 + Caller1() cil managed + { + // Code size 53 (0x35) + .maxstack 8 + IL_0000: ldc.i4.0 + IL_0001: newobj instance void [mscorlib]System.Diagnostics.StackFrame::.ctor(bool) + IL_0006: callvirt instance class [mscorlib]System.Reflection.MethodBase [mscorlib]System.Diagnostics.StackFrame::GetMethod() + IL_000b: callvirt instance string [mscorlib]System.Reflection.MemberInfo::get_Name() + IL_0010: ldstr "Caller" + IL_0015: callvirt instance int32 [mscorlib]System.String::IndexOf(string) + IL_001a: ldc.i4.m1 + IL_001b: bne.un.s IL_002e + + IL_001d: ldstr "Failed, Method was inlined..." + IL_0022: call void [mscorlib]System.Console::WriteLine(string) + IL_0027: ldc.i4.s 101 + IL_0029: stsfld int32 TailcallVerify.Condition23::Result + IL_002e: ldarg.0 + IL_002f: tail. callvirt instance int32 TailcallVerify.Condition23::Callee1() + IL_0034: ret + } // end of method Condition23::Caller1 + + .method family hidebysig newslot virtual + instance int32 Callee1() cil managed noinlining + { + // Code size 12 (0xc) + .maxstack 2 + .locals init ([0] int32 i) + IL_0000: ldc.i4.1 + IL_0001: volatile. + IL_0003: ldsfld int32 modreq([mscorlib]System.Runtime.CompilerServices.IsVolatile) TailcallVerify.Condition23::zero + IL_0008: div + IL_0009: stloc.0 + IL_000a: ldloc.0 + IL_000b: ret + } // end of method Condition23::Callee1 + + .method public hidebysig specialname rtspecialname + instance void .ctor() cil managed + { + // Code size 7 (0x7) + .maxstack 8 + IL_0000: ldarg.0 + IL_0001: call instance void [mscorlib]System.Object::.ctor() + IL_0006: ret + } // end of method Condition23::.ctor + + .method private hidebysig specialname rtspecialname static + void .cctor() cil managed + { + // Code size 16 (0x10) + .maxstack 8 + IL_0000: ldc.i4.0 + IL_0001: volatile. + IL_0003: stsfld int32 modreq([mscorlib]System.Runtime.CompilerServices.IsVolatile) TailcallVerify.Condition23::zero + IL_0008: ldc.i4.s 100 + IL_000a: stsfld int32 TailcallVerify.Condition23::Result + IL_000f: ret + } // end of method Condition23::.cctor + +} // end of class TailcallVerify.Condition23 + + +// ============================================================= + +// *********** DISASSEMBLY COMPLETE *********************** +// WARNING: Created Win32 resource file TailcallVerifyVerifiableLibraryWithPrefix.res diff --git a/tests/src/JIT/opt/Tailcall/TailcallVerifyWithPrefix.il b/tests/src/JIT/opt/Tailcall/TailcallVerifyWithPrefix.il new file mode 100644 index 0000000..2840988 --- /dev/null +++ b/tests/src/JIT/opt/Tailcall/TailcallVerifyWithPrefix.il @@ -0,0 +1,10363 @@ +// Copyright (c) Microsoft. All rights reserved. +// Licensed under the MIT license. See LICENSE file in the project root for full license information. + + + +// Metadata version: v2.0.50727 +.module extern kernel32 + +.assembly extern mscorlib { } +.assembly extern System.Console +{ + .publickeytoken = (B0 3F 5F 7F 11 D5 0A 3A ) + .ver 4:0:0:0 +} +.assembly extern System.Linq +{ + .publickeytoken = (B0 3F 5F 7F 11 D5 0A 3A ) + .ver 4:0:0:0 +} +.assembly TailcallVerifyWithPrefix +{ + .custom instance void [mscorlib]System.Reflection.AssemblyDescriptionAttribute::.ctor(string) = ( 01 00 00 00 00 ) + .custom instance void [mscorlib]System.Reflection.AssemblyConfigurationAttribute::.ctor(string) = ( 01 00 00 00 00 ) + .custom instance void [mscorlib]System.Reflection.AssemblyCompanyAttribute::.ctor(string) = ( 01 00 09 4D 69 63 72 6F 73 6F 66 74 00 00 ) // ...Microsoft.. + .custom instance void [mscorlib]System.Runtime.CompilerServices.RuntimeCompatibilityAttribute::.ctor() = ( 01 00 01 00 54 02 16 57 72 61 70 4E 6F 6E 45 78 // ....T..WrapNonEx + 63 65 70 74 69 6F 6E 54 68 72 6F 77 73 01 ) // ceptionThrows. + .custom instance void [mscorlib]System.Reflection.AssemblyCopyrightAttribute::.ctor(string) = ( 01 00 1B 43 6F 70 79 72 69 67 68 74 20 C2 A9 20 // ...Copyright .. + 4D 69 63 72 6F 73 6F 66 74 20 32 30 30 38 00 00 ) // Microsoft 2008.. + .custom instance void [mscorlib]System.Reflection.AssemblyTitleAttribute::.ctor(string) = ( 01 00 0E 54 61 69 6C 63 61 6C 6C 56 65 72 69 66 // ...TailcallVerif + 79 00 00 ) // y.. + .custom instance void [mscorlib]System.Reflection.AssemblyTrademarkAttribute::.ctor(string) = ( 01 00 00 00 00 ) + .custom instance void [mscorlib]System.Runtime.InteropServices.ComVisibleAttribute::.ctor(bool) = ( 01 00 00 00 00 ) + .custom instance void [mscorlib]System.Runtime.CompilerServices.CompilationRelaxationsAttribute::.ctor(int32) = ( 01 00 08 00 00 00 00 00 ) + .custom instance void [mscorlib]System.Runtime.InteropServices.GuidAttribute::.ctor(string) = ( 01 00 24 66 36 39 30 66 65 61 66 2D 38 65 36 34 // ..$f690feaf-8e64 + 2D 34 33 34 31 2D 39 38 32 66 2D 35 32 39 62 65 // -4341-982f-529be + 32 35 63 64 30 64 34 00 00 ) // 25cd0d4.. + + // --- The following custom attribute is added automatically, do not uncomment ------- + // .custom instance void [mscorlib]System.Diagnostics.DebuggableAttribute::.ctor(valuetype [mscorlib]System.Diagnostics.DebuggableAttribute/DebuggingModes) = ( 01 00 02 00 00 00 00 00 ) + + .custom instance void [mscorlib]System.Reflection.AssemblyProductAttribute::.ctor(string) = ( 01 00 0E 54 61 69 6C 63 61 6C 6C 56 65 72 69 66 // ...TailcallVerif + 79 00 00 ) // y.. + .custom instance void [mscorlib]System.Reflection.AssemblyFileVersionAttribute::.ctor(string) = ( 01 00 07 31 2E 30 2E 30 2E 30 00 00 ) // ...1.0.0.0.. + .hash algorithm 0x00008004 + .ver 1:0:0:0 +} +.module TailcallVerifyWithPrefix.exe +// MVID: {D1242658-CA16-4D11-A740-6635F112F4B5} +.custom instance void [mscorlib]System.Security.UnverifiableCodeAttribute::.ctor() = ( 01 00 00 00 ) +.imagebase 0x00400000 +.file alignment 0x00000200 +.stackreserve 0x00100000 +.subsystem 0x0003 // WINDOWS_CUI +.corflags 0x00000001 // ILONLY +// Image base: 0x00F50000 + + +// =============== CLASS MEMBERS DECLARATION =================== + +.class private auto ansi beforefieldinit TailcallVerify.Condition18 + extends [mscorlib]System.Object +{ + .field private static int32 modreq([mscorlib]System.Runtime.CompilerServices.IsVolatile) zero + .field private static int32 Result + .method public hidebysig static int32 Test1() cil managed nooptimization + { + // Code size 154 (0x9a) + .maxstack 3 + .locals init ([0] class [mscorlib]System.Exception e) + IL_0000: ldstr "Executing Condition18.Test1 - Caller(declarative s" + + "ecurity): Arguments: None - ReturnType: 3 byte struct; Callee: Argument" + + "s: None - ReturnType: 3 byte struct" + IL_0005: call void [System.Console]System.Console::WriteLine(string) + IL_000a: ldc.i4.s 100 + IL_000c: stsfld int32 TailcallVerify.Condition18::Result + .try + { + IL_0011: call valuetype TailcallVerify.ValueType3Bytes TailcallVerify.Condition18::Caller1() + IL_0016: pop + IL_0017: leave.s IL_0070 + + } // end .try + catch [mscorlib]System.Exception + { + IL_0019: stloc.0 + IL_001a: ldloc.0 + IL_001b: isinst [mscorlib]System.DivideByZeroException + IL_0020: brtrue.s IL_002b + + IL_0022: ldc.i4.s 101 + IL_0024: stsfld int32 TailcallVerify.Condition18::Result + IL_0029: rethrow + IL_002b: ldloc.0 + IL_002c: callvirt instance string [mscorlib]System.Exception::get_StackTrace() + IL_0031: ldstr "Caller" + IL_0036: callvirt instance int32 [mscorlib]System.String::IndexOf(string) + IL_003b: ldc.i4.m1 + IL_003c: bne.un.s IL_006e + + IL_003e: ldstr "FAILED: Found the word 'Caller' in the stacktrace." + IL_0043: call void [System.Console]System.Console::WriteLine(string) + IL_0048: ldstr "------------------------------------------------" + IL_004d: call void [System.Console]System.Console::WriteLine(string) + IL_0052: call void [System.Console]System.Console::WriteLine() + IL_0057: ldloc.0 + IL_0058: callvirt instance string [mscorlib]System.Exception::get_StackTrace() + IL_005d: call void [System.Console]System.Console::WriteLine(string) + IL_0062: call void [System.Console]System.Console::WriteLine() + IL_0067: ldc.i4.s 101 + IL_0069: stsfld int32 TailcallVerify.Condition18::Result + IL_006e: leave.s IL_0070 + + } // end handler + IL_0070: ldstr "Execution finished - Test " + IL_0075: ldsfld int32 TailcallVerify.Condition18::Result + IL_007a: ldc.i4.s 100 + IL_007c: beq.s IL_0085 + + IL_007e: ldstr "FAILED" + IL_0083: br.s IL_008a + + IL_0085: ldstr "PASSED" + IL_008a: call string [mscorlib]System.String::Concat(string, + string) + IL_008f: call void [System.Console]System.Console::WriteLine(string) + IL_0094: ldsfld int32 TailcallVerify.Condition18::Result + IL_0099: ret + } // end of method Condition18::Test1 + + .method private hidebysig static valuetype TailcallVerify.ValueType3Bytes + Caller1() cil managed + { + .permissionset demand + = {[mscorlib]System.Security.Permissions.FileIOPermissionAttribute = {property bool 'Unrestricted' = bool(true)}} + // Code size 52 (0x34) + .maxstack 8 + IL_0000: ldc.i4.0 + IL_0001: newobj instance void [mscorlib]System.Diagnostics.StackFrame::.ctor(bool) + IL_0006: callvirt instance class [mscorlib]System.Reflection.MethodBase [mscorlib]System.Diagnostics.StackFrame::GetMethod() + IL_000b: callvirt instance string [mscorlib]System.Reflection.MemberInfo::get_Name() + IL_0010: ldstr "Caller" + IL_0015: callvirt instance int32 [mscorlib]System.String::IndexOf(string) + IL_001a: ldc.i4.m1 + IL_001b: bne.un.s IL_002e + + IL_001d: ldstr "Failed, Method was inlined..." + IL_0022: call void [System.Console]System.Console::WriteLine(string) + IL_0027: ldc.i4.s 101 + IL_0029: stsfld int32 TailcallVerify.Condition18::Result + IL_002e: tail. call valuetype TailcallVerify.ValueType3Bytes TailcallVerify.Condition18::Callee1() + IL_0033: ret + } // end of method Condition18::Caller1 + + .method private hidebysig static valuetype TailcallVerify.ValueType3Bytes + Callee1() cil managed noinlining + { + // Code size 27 (0x1b) + .maxstack 3 + .locals init ([0] valuetype TailcallVerify.ValueType3Bytes v) + IL_0000: ldloca.s v + IL_0002: initobj TailcallVerify.ValueType3Bytes + IL_0008: ldloca.s v + IL_000a: ldc.i4.1 + IL_000b: volatile. + IL_000d: ldsfld int32 modreq([mscorlib]System.Runtime.CompilerServices.IsVolatile) TailcallVerify.Condition18::zero + IL_0012: div + IL_0013: conv.i2 + IL_0014: stfld int16 TailcallVerify.ValueType3Bytes::i2 + IL_0019: ldloc.0 + IL_001a: ret + } // end of method Condition18::Callee1 + + .method public hidebysig static int32 Test2() cil managed nooptimization + { + // Code size 154 (0x9a) + .maxstack 3 + .locals init ([0] class [mscorlib]System.Exception e) + IL_0000: ldstr "Executing Condition18.Test2 - Caller(imperative se" + + "curity): Arguments: None - ReturnType: 3 byte struct; Callee: Arguments" + + ": None - ReturnType: 3 byte struct" + IL_0005: call void [System.Console]System.Console::WriteLine(string) + IL_000a: ldc.i4.s 100 + IL_000c: stsfld int32 TailcallVerify.Condition18::Result + .try + { + IL_0011: call valuetype TailcallVerify.ValueType3Bytes TailcallVerify.Condition18::Caller2() + IL_0016: pop + IL_0017: leave.s IL_0070 + + } // end .try + catch [mscorlib]System.Exception + { + IL_0019: stloc.0 + IL_001a: ldloc.0 + IL_001b: isinst [mscorlib]System.DivideByZeroException + IL_0020: brtrue.s IL_002b + + IL_0022: ldc.i4.s 101 + IL_0024: stsfld int32 TailcallVerify.Condition18::Result + IL_0029: rethrow + IL_002b: ldloc.0 + IL_002c: callvirt instance string [mscorlib]System.Exception::get_StackTrace() + IL_0031: ldstr "Caller" + IL_0036: callvirt instance int32 [mscorlib]System.String::IndexOf(string) + IL_003b: ldc.i4.m1 + IL_003c: bne.un.s IL_006e + + IL_003e: ldstr "FAILED: Found the word 'Caller' in the stacktrace." + IL_0043: call void [System.Console]System.Console::WriteLine(string) + IL_0048: ldstr "------------------------------------------------" + IL_004d: call void [System.Console]System.Console::WriteLine(string) + IL_0052: call void [System.Console]System.Console::WriteLine() + IL_0057: ldloc.0 + IL_0058: callvirt instance string [mscorlib]System.Exception::get_StackTrace() + IL_005d: call void [System.Console]System.Console::WriteLine(string) + IL_0062: call void [System.Console]System.Console::WriteLine() + IL_0067: ldc.i4.s 101 + IL_0069: stsfld int32 TailcallVerify.Condition18::Result + IL_006e: leave.s IL_0070 + + } // end handler + IL_0070: ldstr "Execution finished - Test " + IL_0075: ldsfld int32 TailcallVerify.Condition18::Result + IL_007a: ldc.i4.s 100 + IL_007c: beq.s IL_0085 + + IL_007e: ldstr "FAILED" + IL_0083: br.s IL_008a + + IL_0085: ldstr "PASSED" + IL_008a: call string [mscorlib]System.String::Concat(string, + string) + IL_008f: call void [System.Console]System.Console::WriteLine(string) + IL_0094: ldsfld int32 TailcallVerify.Condition18::Result + IL_0099: ret + } // end of method Condition18::Test2 + + .method private hidebysig static valuetype TailcallVerify.ValueType3Bytes + Caller2() cil managed + { + // Code size 65 (0x41) + .maxstack 2 + .locals init ([0] class [mscorlib]System.Security.Permissions.FileIOPermission io) + IL_0000: ldc.i4.1 + IL_0001: newobj instance void [mscorlib]System.Security.Permissions.FileIOPermission::.ctor(valuetype [mscorlib]System.Security.Permissions.PermissionState) + IL_0006: stloc.0 + IL_0007: ldloc.0 + IL_0008: callvirt instance void [mscorlib]System.Security.CodeAccessPermission::Demand() + IL_000d: ldc.i4.0 + IL_000e: newobj instance void [mscorlib]System.Diagnostics.StackFrame::.ctor(bool) + IL_0013: callvirt instance class [mscorlib]System.Reflection.MethodBase [mscorlib]System.Diagnostics.StackFrame::GetMethod() + IL_0018: callvirt instance string [mscorlib]System.Reflection.MemberInfo::get_Name() + IL_001d: ldstr "Caller" + IL_0022: callvirt instance int32 [mscorlib]System.String::IndexOf(string) + IL_0027: ldc.i4.m1 + IL_0028: bne.un.s IL_003b + + IL_002a: ldstr "Failed, Method was inlined..." + IL_002f: call void [System.Console]System.Console::WriteLine(string) + IL_0034: ldc.i4.s 101 + IL_0036: stsfld int32 TailcallVerify.Condition18::Result + IL_003b: tail. call valuetype TailcallVerify.ValueType3Bytes TailcallVerify.Condition18::Callee2() + IL_0040: ret + } // end of method Condition18::Caller2 + + .method private hidebysig static valuetype TailcallVerify.ValueType3Bytes + Callee2() cil managed noinlining + { + // Code size 27 (0x1b) + .maxstack 3 + .locals init ([0] valuetype TailcallVerify.ValueType3Bytes v) + IL_0000: ldloca.s v + IL_0002: initobj TailcallVerify.ValueType3Bytes + IL_0008: ldloca.s v + IL_000a: ldc.i4.1 + IL_000b: volatile. + IL_000d: ldsfld int32 modreq([mscorlib]System.Runtime.CompilerServices.IsVolatile) TailcallVerify.Condition18::zero + IL_0012: div + IL_0013: conv.i2 + IL_0014: stfld int16 TailcallVerify.ValueType3Bytes::i2 + IL_0019: ldloc.0 + IL_001a: ret + } // end of method Condition18::Callee2 + + .method public hidebysig static int32 Test3() cil managed nooptimization + { + // Code size 154 (0x9a) + .maxstack 3 + .locals init ([0] class [mscorlib]System.Exception e) + IL_0000: ldstr "Executing Condition18.Test3 - Caller(imperative se" + + "curity): Arguments: None - ReturnType: 3 byte struct; Callee: Arguments" + + ": None - ReturnType: 3 byte struct" + IL_0005: call void [System.Console]System.Console::WriteLine(string) + IL_000a: ldc.i4.s 100 + IL_000c: stsfld int32 TailcallVerify.Condition18::Result + .try + { + IL_0011: call valuetype TailcallVerify.ValueType3Bytes TailcallVerify.Condition18::Caller3() + IL_0016: pop + IL_0017: leave.s IL_0070 + + } // end .try + catch [mscorlib]System.Exception + { + IL_0019: stloc.0 + IL_001a: ldloc.0 + IL_001b: isinst [mscorlib]System.DivideByZeroException + IL_0020: brtrue.s IL_002b + + IL_0022: ldc.i4.s 101 + IL_0024: stsfld int32 TailcallVerify.Condition18::Result + IL_0029: rethrow + IL_002b: ldloc.0 + IL_002c: callvirt instance string [mscorlib]System.Exception::get_StackTrace() + IL_0031: ldstr "Caller" + IL_0036: callvirt instance int32 [mscorlib]System.String::IndexOf(string) + IL_003b: ldc.i4.m1 + IL_003c: bne.un.s IL_006e + + IL_003e: ldstr "FAILED: Found the word 'Caller' in the stacktrace." + IL_0043: call void [System.Console]System.Console::WriteLine(string) + IL_0048: ldstr "------------------------------------------------" + IL_004d: call void [System.Console]System.Console::WriteLine(string) + IL_0052: call void [System.Console]System.Console::WriteLine() + IL_0057: ldloc.0 + IL_0058: callvirt instance string [mscorlib]System.Exception::get_StackTrace() + IL_005d: call void [System.Console]System.Console::WriteLine(string) + IL_0062: call void [System.Console]System.Console::WriteLine() + IL_0067: ldc.i4.s 101 + IL_0069: stsfld int32 TailcallVerify.Condition18::Result + IL_006e: leave.s IL_0070 + + } // end handler + IL_0070: ldstr "Execution finished - Test " + IL_0075: ldsfld int32 TailcallVerify.Condition18::Result + IL_007a: ldc.i4.s 100 + IL_007c: beq.s IL_0085 + + IL_007e: ldstr "FAILED" + IL_0083: br.s IL_008a + + IL_0085: ldstr "PASSED" + IL_008a: call string [mscorlib]System.String::Concat(string, + string) + IL_008f: call void [System.Console]System.Console::WriteLine(string) + IL_0094: ldsfld int32 TailcallVerify.Condition18::Result + IL_0099: ret + } // end of method Condition18::Test3 + + .method private hidebysig static valuetype TailcallVerify.ValueType3Bytes + Caller3() cil managed + { + // Code size 65 (0x41) + .maxstack 2 + .locals init ([0] class [mscorlib]System.Security.Permissions.FileIOPermission io) + IL_0000: ldc.i4.1 + IL_0001: newobj instance void [mscorlib]System.Security.Permissions.FileIOPermission::.ctor(valuetype [mscorlib]System.Security.Permissions.PermissionState) + IL_0006: stloc.0 + IL_0007: ldloc.0 + IL_0008: callvirt instance void [mscorlib]System.Security.CodeAccessPermission::Demand() + IL_000d: ldc.i4.0 + IL_000e: newobj instance void [mscorlib]System.Diagnostics.StackFrame::.ctor(bool) + IL_0013: callvirt instance class [mscorlib]System.Reflection.MethodBase [mscorlib]System.Diagnostics.StackFrame::GetMethod() + IL_0018: callvirt instance string [mscorlib]System.Reflection.MemberInfo::get_Name() + IL_001d: ldstr "Caller" + IL_0022: callvirt instance int32 [mscorlib]System.String::IndexOf(string) + IL_0027: ldc.i4.m1 + IL_0028: bne.un.s IL_003b + + IL_002a: ldstr "Failed, Method was inlined..." + IL_002f: call void [System.Console]System.Console::WriteLine(string) + IL_0034: ldc.i4.s 101 + IL_0036: stsfld int32 TailcallVerify.Condition18::Result + IL_003b: tail. call valuetype TailcallVerify.ValueType3Bytes TailcallVerify.Condition18::Callee3() + IL_0040: ret + } // end of method Condition18::Caller3 + + .method private hidebysig static valuetype TailcallVerify.ValueType3Bytes + Callee3() cil managed noinlining + { + // Code size 27 (0x1b) + .maxstack 3 + .locals init ([0] valuetype TailcallVerify.ValueType3Bytes v) + IL_0000: ldloca.s v + IL_0002: initobj TailcallVerify.ValueType3Bytes + IL_0008: ldloca.s v + IL_000a: ldc.i4.1 + IL_000b: volatile. + IL_000d: ldsfld int32 modreq([mscorlib]System.Runtime.CompilerServices.IsVolatile) TailcallVerify.Condition18::zero + IL_0012: div + IL_0013: conv.i2 + IL_0014: stfld int16 TailcallVerify.ValueType3Bytes::i2 + IL_0019: ldloc.0 + IL_001a: ret + } // end of method Condition18::Callee3 + + .method public hidebysig specialname rtspecialname + instance void .ctor() cil managed + { + // Code size 7 (0x7) + .maxstack 8 + IL_0000: ldarg.0 + IL_0001: call instance void [mscorlib]System.Object::.ctor() + IL_0006: ret + } // end of method Condition18::.ctor + + .method private hidebysig specialname rtspecialname static + void .cctor() cil managed + { + // Code size 16 (0x10) + .maxstack 8 + IL_0000: ldc.i4.0 + IL_0001: volatile. + IL_0003: stsfld int32 modreq([mscorlib]System.Runtime.CompilerServices.IsVolatile) TailcallVerify.Condition18::zero + IL_0008: ldc.i4.s 100 + IL_000a: stsfld int32 TailcallVerify.Condition18::Result + IL_000f: ret + } // end of method Condition18::.cctor + +} // end of class TailcallVerify.Condition18 + +.class private sequential ansi sealed beforefieldinit TailcallVerify.Unsafe + extends [mscorlib]System.ValueType +{ + .class sequential ansi sealed nested public beforefieldinit 'e__FixedBuffer0' + extends [mscorlib]System.ValueType + { + .pack 0 + .size 3 + .custom instance void [mscorlib]System.Runtime.CompilerServices.UnsafeValueTypeAttribute::.ctor() = ( 01 00 00 00 ) + .custom instance void [mscorlib]System.Runtime.CompilerServices.CompilerGeneratedAttribute::.ctor() = ( 01 00 00 00 ) + .field public uint8 FixedElementField + } // end of class 'e__FixedBuffer0' + + .field public valuetype TailcallVerify.Unsafe/'e__FixedBuffer0' data + .custom instance void [mscorlib]System.Runtime.CompilerServices.FixedBufferAttribute::.ctor(class [mscorlib]System.Type, + int32) = ( 01 00 58 53 79 73 74 65 6D 2E 42 79 74 65 2C 20 // ..XSystem.Byte, + 6D 73 63 6F 72 6C 69 62 2C 20 56 65 72 73 69 6F // mscorlib, Versio + 6E 3D 32 2E 30 2E 30 2E 30 2C 20 43 75 6C 74 75 // n=2.0.0.0, Cultu + 72 65 3D 6E 65 75 74 72 61 6C 2C 20 50 75 62 6C // re=neutral, Publ + 69 63 4B 65 79 54 6F 6B 65 6E 3D 62 37 37 61 35 // icKeyToken=b77a5 + 63 35 36 31 39 33 34 65 30 38 39 03 00 00 00 00 // c561934e089..... + 00 ) +} // end of class TailcallVerify.Unsafe + +.class private auto ansi beforefieldinit TailcallVerify.Condition17 + extends [mscorlib]System.Object +{ + .field private static int32 modreq([mscorlib]System.Runtime.CompilerServices.IsVolatile) zero + .field private static int32 Result + .method public hidebysig static int32 Test1() cil managed nooptimization + { + // Code size 162 (0xa2) + .maxstack 3 + .locals init ([0] valuetype TailcallVerify.Unsafe u, + [1] class [mscorlib]System.Exception e) + IL_0000: ldstr "Executing Condition17.Test1 - Caller: Arguments: N" + + "one - ReturnType: 3 byte struct; Callee: Arguments: None - ReturnType: " + + "void" + IL_0005: call void [System.Console]System.Console::WriteLine(string) + IL_000a: ldc.i4.s 100 + IL_000c: stsfld int32 TailcallVerify.Condition17::Result + .try + { + IL_0011: ldloca.s u + IL_0013: initobj TailcallVerify.Unsafe + IL_0019: ldloc.0 + IL_001a: call void TailcallVerify.Condition17::Caller1(valuetype TailcallVerify.Unsafe) + IL_001f: leave.s IL_0078 + + } // end .try + catch [mscorlib]System.Exception + { + IL_0021: stloc.1 + IL_0022: ldloc.1 + IL_0023: isinst [mscorlib]System.DivideByZeroException + IL_0028: brtrue.s IL_0033 + + IL_002a: ldc.i4.s 101 + IL_002c: stsfld int32 TailcallVerify.Condition17::Result + IL_0031: rethrow + IL_0033: ldloc.1 + IL_0034: callvirt instance string [mscorlib]System.Exception::get_StackTrace() + IL_0039: ldstr "Caller" + IL_003e: callvirt instance int32 [mscorlib]System.String::IndexOf(string) + IL_0043: ldc.i4.m1 + IL_0044: bne.un.s IL_0076 + + IL_0046: ldstr "FAILED: DID NOT find the word 'Caller' in the stac" + + "ktrace." + IL_004b: call void [System.Console]System.Console::WriteLine(string) + IL_0050: ldstr "------------------------------------------------" + IL_0055: call void [System.Console]System.Console::WriteLine(string) + IL_005a: call void [System.Console]System.Console::WriteLine() + IL_005f: ldloc.1 + IL_0060: callvirt instance string [mscorlib]System.Exception::get_StackTrace() + IL_0065: call void [System.Console]System.Console::WriteLine(string) + IL_006a: call void [System.Console]System.Console::WriteLine() + IL_006f: ldc.i4.s 101 + IL_0071: stsfld int32 TailcallVerify.Condition17::Result + IL_0076: leave.s IL_0078 + + } // end handler + IL_0078: ldstr "Execution finished - Test " + IL_007d: ldsfld int32 TailcallVerify.Condition17::Result + IL_0082: ldc.i4.s 100 + IL_0084: beq.s IL_008d + + IL_0086: ldstr "FAILED" + IL_008b: br.s IL_0092 + + IL_008d: ldstr "PASSED" + IL_0092: call string [mscorlib]System.String::Concat(string, + string) + IL_0097: call void [System.Console]System.Console::WriteLine(string) + IL_009c: ldsfld int32 TailcallVerify.Condition17::Result + IL_00a1: ret + } // end of method Condition17::Test1 + + .method private hidebysig static void Caller1(valuetype TailcallVerify.Unsafe u) cil managed + { + // Code size 74 (0x4a) + .maxstack 2 + IL_0000: ldc.i4.0 + IL_0001: newobj instance void [mscorlib]System.Diagnostics.StackFrame::.ctor(bool) + IL_0006: callvirt instance class [mscorlib]System.Reflection.MethodBase [mscorlib]System.Diagnostics.StackFrame::GetMethod() + IL_000b: callvirt instance string [mscorlib]System.Reflection.MemberInfo::get_Name() + IL_0010: ldstr "Caller" + IL_0015: callvirt instance int32 [mscorlib]System.String::IndexOf(string) + IL_001a: ldc.i4.m1 + IL_001b: bne.un.s IL_002e + + IL_001d: ldstr "Failed, Method was inlined..." + IL_0022: call void [System.Console]System.Console::WriteLine(string) + IL_0027: ldc.i4.s 101 + IL_0029: stsfld int32 TailcallVerify.Condition17::Result + IL_002e: ldarga.s u + IL_0030: ldflda valuetype TailcallVerify.Unsafe/'e__FixedBuffer0' TailcallVerify.Unsafe::data + IL_0035: ldflda uint8 TailcallVerify.Unsafe/'e__FixedBuffer0'::FixedElementField + IL_003a: conv.u + IL_003b: volatile. + IL_003d: ldsfld int32 modreq([mscorlib]System.Runtime.CompilerServices.IsVolatile) TailcallVerify.Condition17::zero + IL_0042: conv.u1 + IL_0043: stind.i1 + IL_0044: tail. call void TailcallVerify.Condition17::Callee1() + IL_0049: ret + } // end of method Condition17::Caller1 + + .method private hidebysig static void Callee1() cil managed noinlining + { + // Code size 11 (0xb) + .maxstack 8 + IL_0000: ldc.i4.1 + IL_0001: volatile. + IL_0003: ldsfld int32 modreq([mscorlib]System.Runtime.CompilerServices.IsVolatile) TailcallVerify.Condition17::zero + IL_0008: div + IL_0009: pop + IL_000a: ret + } // end of method Condition17::Callee1 + + .method public hidebysig specialname rtspecialname + instance void .ctor() cil managed + { + // Code size 7 (0x7) + .maxstack 8 + IL_0000: ldarg.0 + IL_0001: call instance void [mscorlib]System.Object::.ctor() + IL_0006: ret + } // end of method Condition17::.ctor + + .method private hidebysig specialname rtspecialname static + void .cctor() cil managed + { + // Code size 16 (0x10) + .maxstack 8 + IL_0000: ldc.i4.0 + IL_0001: volatile. + IL_0003: stsfld int32 modreq([mscorlib]System.Runtime.CompilerServices.IsVolatile) TailcallVerify.Condition17::zero + IL_0008: ldc.i4.s 100 + IL_000a: stsfld int32 TailcallVerify.Condition17::Result + IL_000f: ret + } // end of method Condition17::.cctor + +} // end of class TailcallVerify.Condition17 + +.class private auto ansi beforefieldinit TailcallVerify.Condition16 + extends [mscorlib]System.Object +{ + .field private static int32 modreq([mscorlib]System.Runtime.CompilerServices.IsVolatile) zero + .field private static int32 Result + .field public object syncObj + .field private static class [mscorlib]System.Threading.ParameterizedThreadStart 'CS$<>9__CachedAnonymousMethodDelegate1' + .custom instance void [mscorlib]System.Runtime.CompilerServices.CompilerGeneratedAttribute::.ctor() = ( 01 00 00 00 ) + .field private static class [mscorlib]System.Threading.ParameterizedThreadStart 'CS$<>9__CachedAnonymousMethodDelegate3' + .custom instance void [mscorlib]System.Runtime.CompilerServices.CompilerGeneratedAttribute::.ctor() = ( 01 00 00 00 ) + .method public hidebysig static int32 Test1() cil managed nooptimization + { + // Code size 211 (0xd3) + .maxstack 3 + .locals init ([0] class TailcallVerify.Condition16 con, + [1] class [mscorlib]System.Exception e, + [2] class [mscorlib]System.Threading.Thread t) + IL_0000: ldstr "Executing Condition16.Test1 - Caller: Arguments: N" + + "one - ReturnType: void; Callee: Arguments: None - ReturnType: void" + IL_0005: call void [System.Console]System.Console::WriteLine(string) + IL_000a: ldc.i4.s 100 + IL_000c: stsfld int32 TailcallVerify.Condition16::Result + IL_0011: newobj instance void TailcallVerify.Condition16::.ctor() + IL_0016: stloc.0 + .try + { + IL_0017: ldloc.0 + IL_0018: callvirt instance void TailcallVerify.Condition16::Caller1() + IL_001d: leave IL_00a9 + + } // end .try + catch [mscorlib]System.Exception + { + IL_0022: stloc.1 + IL_0023: ldloc.1 + IL_0024: isinst [mscorlib]System.DivideByZeroException + IL_0029: brtrue.s IL_0034 + + IL_002b: ldc.i4.s 101 + IL_002d: stsfld int32 TailcallVerify.Condition16::Result + IL_0032: rethrow + IL_0034: ldloc.1 + IL_0035: callvirt instance string [mscorlib]System.Exception::get_StackTrace() + IL_003a: ldstr "Caller" + IL_003f: callvirt instance int32 [mscorlib]System.String::IndexOf(string) + IL_0044: ldc.i4.m1 + IL_0045: bne.un.s IL_0077 + + IL_0047: ldstr "FAILED: Found the word 'Caller' in the stacktrace." + IL_004c: call void [System.Console]System.Console::WriteLine(string) + IL_0051: ldstr "------------------------------------------------" + IL_0056: call void [System.Console]System.Console::WriteLine(string) + IL_005b: call void [System.Console]System.Console::WriteLine() + IL_0060: ldloc.1 + IL_0061: callvirt instance string [mscorlib]System.Exception::get_StackTrace() + IL_0066: call void [System.Console]System.Console::WriteLine(string) + IL_006b: call void [System.Console]System.Console::WriteLine() + IL_0070: ldc.i4.s 101 + IL_0072: stsfld int32 TailcallVerify.Condition16::Result + IL_0077: ldsfld class [mscorlib]System.Threading.ParameterizedThreadStart TailcallVerify.Condition16::'CS$<>9__CachedAnonymousMethodDelegate1' + IL_007c: brtrue.s IL_008f + + IL_007e: ldnull + IL_007f: ldftn void TailcallVerify.Condition16::'b__0'(object) + IL_0085: newobj instance void [mscorlib]System.Threading.ParameterizedThreadStart::.ctor(object, + native int) + IL_008a: stsfld class [mscorlib]System.Threading.ParameterizedThreadStart TailcallVerify.Condition16::'CS$<>9__CachedAnonymousMethodDelegate1' + IL_008f: ldsfld class [mscorlib]System.Threading.ParameterizedThreadStart TailcallVerify.Condition16::'CS$<>9__CachedAnonymousMethodDelegate1' + IL_0094: newobj instance void [mscorlib]System.Threading.Thread::.ctor(class [mscorlib]System.Threading.ParameterizedThreadStart) + IL_0099: stloc.2 + IL_009a: ldloc.2 + IL_009b: ldloc.0 + IL_009c: callvirt instance void [mscorlib]System.Threading.Thread::Start(object) + IL_00a1: ldloc.2 + IL_00a2: callvirt instance void [mscorlib]System.Threading.Thread::Join() + IL_00a7: leave.s IL_00a9 + + } // end handler + IL_00a9: ldstr "Execution finished - Test " + IL_00ae: ldsfld int32 TailcallVerify.Condition16::Result + IL_00b3: ldc.i4.s 100 + IL_00b5: beq.s IL_00be + + IL_00b7: ldstr "FAILED" + IL_00bc: br.s IL_00c3 + + IL_00be: ldstr "PASSED" + IL_00c3: call string [mscorlib]System.String::Concat(string, + string) + IL_00c8: call void [System.Console]System.Console::WriteLine(string) + IL_00cd: ldsfld int32 TailcallVerify.Condition16::Result + IL_00d2: ret + } // end of method Condition16::Test1 + + .method private hidebysig instance void + Caller1() cil managed synchronized + { + // Code size 53 (0x35) + .maxstack 8 + IL_0000: ldc.i4.0 + IL_0001: newobj instance void [mscorlib]System.Diagnostics.StackFrame::.ctor(bool) + IL_0006: callvirt instance class [mscorlib]System.Reflection.MethodBase [mscorlib]System.Diagnostics.StackFrame::GetMethod() + IL_000b: callvirt instance string [mscorlib]System.Reflection.MemberInfo::get_Name() + IL_0010: ldstr "Caller" + IL_0015: callvirt instance int32 [mscorlib]System.String::IndexOf(string) + IL_001a: ldc.i4.m1 + IL_001b: bne.un.s IL_002e + + IL_001d: ldstr "Failed, Method was inlined..." + IL_0022: call void [System.Console]System.Console::WriteLine(string) + IL_0027: ldc.i4.s 101 + IL_0029: stsfld int32 TailcallVerify.Condition16::Result + IL_002e: ldarg.0 + IL_002f: tail. call instance void TailcallVerify.Condition16::Callee1() + IL_0034: ret + } // end of method Condition16::Caller1 + + .method private hidebysig instance void + Callee1() cil managed noinlining + { + // Code size 59 (0x3b) + .maxstack 3 + .locals init ([0] class [mscorlib]System.Threading.Thread t) + IL_0000: ldsfld class [mscorlib]System.Threading.ParameterizedThreadStart TailcallVerify.Condition16::'CS$<>9__CachedAnonymousMethodDelegate3' + IL_0005: brtrue.s IL_0018 + + IL_0007: ldnull + IL_0008: ldftn void TailcallVerify.Condition16::'b__2'(object) + IL_000e: newobj instance void [mscorlib]System.Threading.ParameterizedThreadStart::.ctor(object, + native int) + IL_0013: stsfld class [mscorlib]System.Threading.ParameterizedThreadStart TailcallVerify.Condition16::'CS$<>9__CachedAnonymousMethodDelegate3' + IL_0018: ldsfld class [mscorlib]System.Threading.ParameterizedThreadStart TailcallVerify.Condition16::'CS$<>9__CachedAnonymousMethodDelegate3' + IL_001d: newobj instance void [mscorlib]System.Threading.Thread::.ctor(class [mscorlib]System.Threading.ParameterizedThreadStart) + IL_0022: stloc.0 + IL_0023: ldloc.0 + IL_0024: ldarg.0 + IL_0025: callvirt instance void [mscorlib]System.Threading.Thread::Start(object) + IL_002a: ldloc.0 + IL_002b: callvirt instance void [mscorlib]System.Threading.Thread::Join() + IL_0030: ldc.i4.1 + IL_0031: volatile. + IL_0033: ldsfld int32 modreq([mscorlib]System.Runtime.CompilerServices.IsVolatile) TailcallVerify.Condition16::zero + IL_0038: div + IL_0039: pop + IL_003a: ret + } // end of method Condition16::Callee1 + + .method public hidebysig specialname rtspecialname + instance void .ctor() cil managed + { + // Code size 18 (0x12) + .maxstack 8 + IL_0000: ldarg.0 + IL_0001: newobj instance void [mscorlib]System.Object::.ctor() + IL_0006: stfld object TailcallVerify.Condition16::syncObj + IL_000b: ldarg.0 + IL_000c: call instance void [mscorlib]System.Object::.ctor() + IL_0011: ret + } // end of method Condition16::.ctor + + .method private hidebysig static void 'b__0'(object o) cil managed + { + .custom instance void [mscorlib]System.Runtime.CompilerServices.CompilerGeneratedAttribute::.ctor() = ( 01 00 00 00 ) + // Code size 48 (0x30) + .maxstack 8 + IL_0000: ldarg.0 + IL_0001: ldc.i4 0x1f4 + IL_0006: call bool [mscorlib]System.Threading.Monitor::TryEnter(object, + int32) + IL_000b: brfalse.s IL_001e + + IL_000d: ldstr "GOOD: got the lock again..." + IL_0012: call void [System.Console]System.Console::WriteLine(string) + IL_0017: ldarg.0 + IL_0018: call void [mscorlib]System.Threading.Monitor::Exit(object) + IL_001d: ret + + IL_001e: ldstr "BAD: Failed to get the lock" + IL_0023: call void [System.Console]System.Console::WriteLine(string) + IL_0028: ldc.i4.s 101 + IL_002a: stsfld int32 TailcallVerify.Condition16::Result + IL_002f: ret + } // end of method Condition16::'b__0' + + .method private hidebysig static void 'b__2'(object o) cil managed + { + .custom instance void [mscorlib]System.Runtime.CompilerServices.CompilerGeneratedAttribute::.ctor() = ( 01 00 00 00 ) + // Code size 42 (0x2a) + .maxstack 8 + IL_0000: ldarg.0 + IL_0001: ldc.i4 0x1f4 + IL_0006: call bool [mscorlib]System.Threading.Monitor::TryEnter(object, + int32) + IL_000b: brfalse.s IL_001f + + IL_000d: ldstr "BAD: got the lock again..." + IL_0012: call void [System.Console]System.Console::WriteLine(string) + IL_0017: ldc.i4.s 101 + IL_0019: stsfld int32 TailcallVerify.Condition16::Result + IL_001e: ret + + IL_001f: ldstr "GOOD: Failed to get the lock" + IL_0024: call void [System.Console]System.Console::WriteLine(string) + IL_0029: ret + } // end of method Condition16::'b__2' + + .method private hidebysig specialname rtspecialname static + void .cctor() cil managed + { + // Code size 16 (0x10) + .maxstack 8 + IL_0000: ldc.i4.0 + IL_0001: volatile. + IL_0003: stsfld int32 modreq([mscorlib]System.Runtime.CompilerServices.IsVolatile) TailcallVerify.Condition16::zero + IL_0008: ldc.i4.s 100 + IL_000a: stsfld int32 TailcallVerify.Condition16::Result + IL_000f: ret + } // end of method Condition16::.cctor + +} // end of class TailcallVerify.Condition16 + +.class private auto ansi beforefieldinit TailcallVerify.Condition13 + extends [mscorlib]System.Object +{ + .field private static int32 modreq([mscorlib]System.Runtime.CompilerServices.IsVolatile) zero + .field private static int32 Result + .method public hidebysig static int32 Test1() cil managed nooptimization + { + // Code size 154 (0x9a) + .maxstack 3 + .locals init ([0] class [mscorlib]System.Exception e) + IL_0000: ldstr "Executing Condition13.Test1 - Caller: Arguments: N" + + "one - ReturnType: 3 byte struct; Callee: Arguments: None - ReturnType: " + + "3 byte struct" + IL_0005: call void [System.Console]System.Console::WriteLine(string) + IL_000a: ldc.i4.s 100 + IL_000c: stsfld int32 TailcallVerify.Condition13::Result + .try + { + IL_0011: call valuetype TailcallVerify.ValueType3Bytes TailcallVerify.Condition13::Caller1() + IL_0016: pop + IL_0017: leave.s IL_0070 + + } // end .try + catch [mscorlib]System.Exception + { + IL_0019: stloc.0 + IL_001a: ldloc.0 + IL_001b: isinst [mscorlib]System.DivideByZeroException + IL_0020: brtrue.s IL_002b + + IL_0022: ldc.i4.s 101 + IL_0024: stsfld int32 TailcallVerify.Condition13::Result + IL_0029: rethrow + IL_002b: ldloc.0 + IL_002c: callvirt instance string [mscorlib]System.Exception::get_StackTrace() + IL_0031: ldstr "Caller" + IL_0036: callvirt instance int32 [mscorlib]System.String::IndexOf(string) + IL_003b: ldc.i4.m1 + IL_003c: beq.s IL_006e + + IL_003e: ldstr "FAILED: Found the word 'Caller' in the stacktrace." + IL_0043: call void [System.Console]System.Console::WriteLine(string) + IL_0048: ldstr "------------------------------------------------" + IL_004d: call void [System.Console]System.Console::WriteLine(string) + IL_0052: call void [System.Console]System.Console::WriteLine() + IL_0057: ldloc.0 + IL_0058: callvirt instance string [mscorlib]System.Exception::get_StackTrace() + IL_005d: call void [System.Console]System.Console::WriteLine(string) + IL_0062: call void [System.Console]System.Console::WriteLine() + IL_0067: ldc.i4.s 101 + IL_0069: stsfld int32 TailcallVerify.Condition13::Result + IL_006e: leave.s IL_0070 + + } // end handler + IL_0070: ldstr "Execution finished - Test " + IL_0075: ldsfld int32 TailcallVerify.Condition13::Result + IL_007a: ldc.i4.s 100 + IL_007c: beq.s IL_0085 + + IL_007e: ldstr "FAILED" + IL_0083: br.s IL_008a + + IL_0085: ldstr "PASSED" + IL_008a: call string [mscorlib]System.String::Concat(string, + string) + IL_008f: call void [System.Console]System.Console::WriteLine(string) + IL_0094: ldsfld int32 TailcallVerify.Condition13::Result + IL_0099: ret + } // end of method Condition13::Test1 + + .method private hidebysig static valuetype TailcallVerify.ValueType3Bytes + Caller1() cil managed nooptimization + { + // Code size 52 (0x34) + .maxstack 8 + IL_0000: ldc.i4.0 + IL_0001: newobj instance void [mscorlib]System.Diagnostics.StackFrame::.ctor(bool) + IL_0006: callvirt instance class [mscorlib]System.Reflection.MethodBase [mscorlib]System.Diagnostics.StackFrame::GetMethod() + IL_000b: callvirt instance string [mscorlib]System.Reflection.MemberInfo::get_Name() + IL_0010: ldstr "Caller" + IL_0015: callvirt instance int32 [mscorlib]System.String::IndexOf(string) + IL_001a: ldc.i4.m1 + IL_001b: bne.un.s IL_002e + + IL_001d: ldstr "Failed, Method was inlined..." + IL_0022: call void [System.Console]System.Console::WriteLine(string) + IL_0027: ldc.i4.s 101 + IL_0029: stsfld int32 TailcallVerify.Condition13::Result + IL_002e: tail. call valuetype TailcallVerify.ValueType3Bytes TailcallVerify.Condition13::Callee1() + IL_0033: ret + } // end of method Condition13::Caller1 + + .method private hidebysig static valuetype TailcallVerify.ValueType3Bytes + Callee1() cil managed noinlining + { + // Code size 27 (0x1b) + .maxstack 3 + .locals init ([0] valuetype TailcallVerify.ValueType3Bytes v) + IL_0000: ldloca.s v + IL_0002: initobj TailcallVerify.ValueType3Bytes + IL_0008: ldloca.s v + IL_000a: ldc.i4.1 + IL_000b: volatile. + IL_000d: ldsfld int32 modreq([mscorlib]System.Runtime.CompilerServices.IsVolatile) TailcallVerify.Condition13::zero + IL_0012: div + IL_0013: conv.i2 + IL_0014: stfld int16 TailcallVerify.ValueType3Bytes::i2 + IL_0019: ldloc.0 + IL_001a: ret + } // end of method Condition13::Callee1 + + .method public hidebysig specialname rtspecialname + instance void .ctor() cil managed + { + // Code size 7 (0x7) + .maxstack 8 + IL_0000: ldarg.0 + IL_0001: call instance void [mscorlib]System.Object::.ctor() + IL_0006: ret + } // end of method Condition13::.ctor + + .method private hidebysig specialname rtspecialname static + void .cctor() cil managed + { + // Code size 16 (0x10) + .maxstack 8 + IL_0000: ldc.i4.0 + IL_0001: volatile. + IL_0003: stsfld int32 modreq([mscorlib]System.Runtime.CompilerServices.IsVolatile) TailcallVerify.Condition13::zero + IL_0008: ldc.i4.s 100 + IL_000a: stsfld int32 TailcallVerify.Condition13::Result + IL_000f: ret + } // end of method Condition13::.cctor + +} // end of class TailcallVerify.Condition13 + +.class private auto ansi beforefieldinit TailcallVerify.Condition12 + extends [mscorlib]System.Object +{ + .field private static int32 modreq([mscorlib]System.Runtime.CompilerServices.IsVolatile) zero + .field private static int32 Result + .method public hidebysig static int32 Test1() cil managed nooptimization + { + // Code size 142 (0x8e) + .maxstack 6 + .locals init ([0] class [mscorlib]System.Exception e) + IL_0000: ldstr "Executing Condition12.Test1 - Caller: Arguments: i" + + "nt,int,int - ReturnType: void; Callee: Arguments: string,string,string " + + "- ReturnType: void" + IL_0005: call void [System.Console]System.Console::WriteLine(string) + IL_000a: ldc.i4.s 100 + IL_000c: stsfld int32 TailcallVerify.Condition12::Result + .try + { + IL_0011: ldc.i4.1 + IL_0012: ldc.i4.2 + IL_0013: ldc.i4.3 + IL_0014: ldc.i4.4 + IL_0015: ldc.i4.5 + IL_0016: ldc.i4.6 + IL_0017: call void TailcallVerify.Condition12::Caller1(int32, + int32, + int32, + int32, + int32, + int32) + IL_001c: leave.s IL_0064 + + } // end .try + catch [mscorlib]System.Exception + { + IL_001e: stloc.0 + IL_001f: ldloc.0 + IL_0020: callvirt instance string [mscorlib]System.Exception::get_StackTrace() + IL_0025: ldstr "Caller" + IL_002a: callvirt instance int32 [mscorlib]System.String::IndexOf(string) + IL_002f: ldc.i4.m1 + IL_0030: beq.s IL_0062 + + IL_0032: ldstr "FAILED: Found the word 'Caller' in the stacktrace." + IL_0037: call void [System.Console]System.Console::WriteLine(string) + IL_003c: ldstr "------------------------------------------------" + IL_0041: call void [System.Console]System.Console::WriteLine(string) + IL_0046: call void [System.Console]System.Console::WriteLine() + IL_004b: ldloc.0 + IL_004c: callvirt instance string [mscorlib]System.Exception::get_StackTrace() + IL_0051: call void [System.Console]System.Console::WriteLine(string) + IL_0056: call void [System.Console]System.Console::WriteLine() + IL_005b: ldc.i4.s 101 + IL_005d: stsfld int32 TailcallVerify.Condition12::Result + IL_0062: leave.s IL_0064 + + } // end handler + IL_0064: ldstr "Execution finished - Test " + IL_0069: ldsfld int32 TailcallVerify.Condition12::Result + IL_006e: ldc.i4.s 100 + IL_0070: beq.s IL_0079 + + IL_0072: ldstr "FAILED" + IL_0077: br.s IL_007e + + IL_0079: ldstr "PASSED" + IL_007e: call string [mscorlib]System.String::Concat(string, + string) + IL_0083: call void [System.Console]System.Console::WriteLine(string) + IL_0088: ldsfld int32 TailcallVerify.Condition12::Result + IL_008d: ret + } // end of method Condition12::Test1 + + .method private hidebysig static void Caller1(int32 i1, + int32 i2, + int32 i3, + int32 i4, + int32 i5, + int32 i6) cil managed + { + // Code size 82 (0x52) + .maxstack 6 + IL_0000: ldc.i4.0 + IL_0001: newobj instance void [mscorlib]System.Diagnostics.StackFrame::.ctor(bool) + IL_0006: callvirt instance class [mscorlib]System.Reflection.MethodBase [mscorlib]System.Diagnostics.StackFrame::GetMethod() + IL_000b: callvirt instance string [mscorlib]System.Reflection.MemberInfo::get_Name() + IL_0010: ldstr "Caller" + IL_0015: callvirt instance int32 [mscorlib]System.String::IndexOf(string) + IL_001a: ldc.i4.m1 + IL_001b: bne.un.s IL_002e + + IL_001d: ldstr "Failed, Method was inlined..." + IL_0022: call void [System.Console]System.Console::WriteLine(string) + IL_0027: ldc.i4.s 101 + IL_0029: stsfld int32 TailcallVerify.Condition12::Result + IL_002e: ldstr "1" + IL_0033: ldstr "2" + IL_0038: ldstr "3" + IL_003d: ldstr "2" + IL_0042: ldstr "3" + IL_0047: ldstr "2" + IL_004c: tail. call void TailcallVerify.Condition12::Callee1(string, + string, + string, + string, + string, + string) + IL_0051: ret + } // end of method Condition12::Caller1 + + .method private hidebysig static void Callee1(string s1, + string s2, + string s3, + string s4, + string s5, + string s6) cil managed noinlining + { + // Code size 16 (0x10) + .maxstack 8 + IL_0000: ldarg.2 + IL_0001: callvirt instance int32 [mscorlib]System.String::get_Length() + IL_0006: volatile. + IL_0008: ldsfld int32 modreq([mscorlib]System.Runtime.CompilerServices.IsVolatile) TailcallVerify.Condition12::zero + IL_000d: div + IL_000e: pop + IL_000f: ret + } // end of method Condition12::Callee1 + + .method public hidebysig specialname rtspecialname + instance void .ctor() cil managed + { + // Code size 7 (0x7) + .maxstack 8 + IL_0000: ldarg.0 + IL_0001: call instance void [mscorlib]System.Object::.ctor() + IL_0006: ret + } // end of method Condition12::.ctor + + .method private hidebysig specialname rtspecialname static + void .cctor() cil managed + { + // Code size 16 (0x10) + .maxstack 8 + IL_0000: ldc.i4.0 + IL_0001: volatile. + IL_0003: stsfld int32 modreq([mscorlib]System.Runtime.CompilerServices.IsVolatile) TailcallVerify.Condition12::zero + IL_0008: ldc.i4.s 100 + IL_000a: stsfld int32 TailcallVerify.Condition12::Result + IL_000f: ret + } // end of method Condition12::.cctor + +} // end of class TailcallVerify.Condition12 + +.class interface private abstract auto ansi TailcallVerify.ICondition9 +{ + .method public hidebysig newslot abstract virtual + instance void Callee1() cil managed + { + } // end of method ICondition9::Callee1 + +} // end of class TailcallVerify.ICondition9 + +.class private auto ansi beforefieldinit TailcallVerify.Condition9 + extends [mscorlib]System.Object + implements TailcallVerify.ICondition9 +{ + .field private static int32 modreq([mscorlib]System.Runtime.CompilerServices.IsVolatile) zero + .field private static int32 Result + .method public hidebysig static int32 Test1() cil managed nooptimization + { + // Code size 153 (0x99) + .maxstack 3 + .locals init ([0] class [mscorlib]System.Exception e) + IL_0000: ldstr "Executing Condition9.Test1 - Caller: Arguments: No" + + "ne - ReturnType: void; Callee(Interface Member): Arguments: None - Retu" + + "rnType: void" + IL_0005: call void [System.Console]System.Console::WriteLine(string) + IL_000a: ldc.i4.s 100 + IL_000c: stsfld int32 TailcallVerify.Condition9::Result + .try + { + IL_0011: call void TailcallVerify.Condition9::Caller1() + IL_0016: leave.s IL_006f + + } // end .try + catch [mscorlib]System.Exception + { + IL_0018: stloc.0 + IL_0019: ldloc.0 + IL_001a: isinst [mscorlib]System.DivideByZeroException + IL_001f: brtrue.s IL_002a + + IL_0021: ldc.i4.s 101 + IL_0023: stsfld int32 TailcallVerify.Condition9::Result + IL_0028: rethrow + IL_002a: ldloc.0 + IL_002b: callvirt instance string [mscorlib]System.Exception::get_StackTrace() + IL_0030: ldstr "Caller" + IL_0035: callvirt instance int32 [mscorlib]System.String::IndexOf(string) + IL_003a: ldc.i4.m1 + IL_003b: beq.s IL_006d + + IL_003d: ldstr "FAILED: Found the word 'Caller' in the stacktrace." + IL_0042: call void [System.Console]System.Console::WriteLine(string) + IL_0047: ldstr "------------------------------------------------" + IL_004c: call void [System.Console]System.Console::WriteLine(string) + IL_0051: call void [System.Console]System.Console::WriteLine() + IL_0056: ldloc.0 + IL_0057: callvirt instance string [mscorlib]System.Exception::get_StackTrace() + IL_005c: call void [System.Console]System.Console::WriteLine(string) + IL_0061: call void [System.Console]System.Console::WriteLine() + IL_0066: ldc.i4.s 101 + IL_0068: stsfld int32 TailcallVerify.Condition9::Result + IL_006d: leave.s IL_006f + + } // end handler + IL_006f: ldstr "Execution finished - Test " + IL_0074: ldsfld int32 TailcallVerify.Condition9::Result + IL_0079: ldc.i4.s 100 + IL_007b: beq.s IL_0084 + + IL_007d: ldstr "FAILED" + IL_0082: br.s IL_0089 + + IL_0084: ldstr "PASSED" + IL_0089: call string [mscorlib]System.String::Concat(string, + string) + IL_008e: call void [System.Console]System.Console::WriteLine(string) + IL_0093: ldsfld int32 TailcallVerify.Condition9::Result + IL_0098: ret + } // end of method Condition9::Test1 + + .method private hidebysig static void Caller1() cil managed + { + // Code size 59 (0x3b) + .maxstack 2 + .locals init ([0] class TailcallVerify.ICondition9 con) + IL_0000: ldc.i4.0 + IL_0001: newobj instance void [mscorlib]System.Diagnostics.StackFrame::.ctor(bool) + IL_0006: callvirt instance class [mscorlib]System.Reflection.MethodBase [mscorlib]System.Diagnostics.StackFrame::GetMethod() + IL_000b: callvirt instance string [mscorlib]System.Reflection.MemberInfo::get_Name() + IL_0010: ldstr "Caller" + IL_0015: callvirt instance int32 [mscorlib]System.String::IndexOf(string) + IL_001a: ldc.i4.m1 + IL_001b: bne.un.s IL_002e + + IL_001d: ldstr "Failed, Method was inlined..." + IL_0022: call void [System.Console]System.Console::WriteLine(string) + IL_0027: ldc.i4.s 101 + IL_0029: stsfld int32 TailcallVerify.Condition9::Result + IL_002e: newobj instance void TailcallVerify.Condition9::.ctor() + IL_0033: stloc.0 + IL_0034: ldloc.0 + IL_0035: tail. callvirt instance void TailcallVerify.ICondition9::Callee1() + IL_003a: ret + } // end of method Condition9::Caller1 + + .method public hidebysig newslot virtual final + instance void Callee1() cil managed noinlining + { + // Code size 11 (0xb) + .maxstack 8 + IL_0000: ldc.i4.1 + IL_0001: volatile. + IL_0003: ldsfld int32 modreq([mscorlib]System.Runtime.CompilerServices.IsVolatile) TailcallVerify.Condition9::zero + IL_0008: div + IL_0009: pop + IL_000a: ret + } // end of method Condition9::Callee1 + + .method public hidebysig specialname rtspecialname + instance void .ctor() cil managed + { + // Code size 7 (0x7) + .maxstack 8 + IL_0000: ldarg.0 + IL_0001: call instance void [mscorlib]System.Object::.ctor() + IL_0006: ret + } // end of method Condition9::.ctor + + .method private hidebysig specialname rtspecialname static + void .cctor() cil managed + { + // Code size 16 (0x10) + .maxstack 8 + IL_0000: ldc.i4.0 + IL_0001: volatile. + IL_0003: stsfld int32 modreq([mscorlib]System.Runtime.CompilerServices.IsVolatile) TailcallVerify.Condition9::zero + IL_0008: ldc.i4.s 100 + IL_000a: stsfld int32 TailcallVerify.Condition9::Result + IL_000f: ret + } // end of method Condition9::.cctor + +} // end of class TailcallVerify.Condition9 + +.class private auto ansi beforefieldinit TailcallVerify.Condition11 + extends [mscorlib]System.Object +{ + .field private static int32 modreq([mscorlib]System.Runtime.CompilerServices.IsVolatile) zero + .field private static int32 Result + .method public hidebysig static int32 Test1() cil managed nooptimization + { + // Code size 153 (0x99) + .maxstack 3 + .locals init ([0] class [mscorlib]System.Exception e) + IL_0000: ldstr "Executing Condition11.Test1 - Caller: Arguments: N" + + "one - ReturnType: void; Callee(virtual): Arguments: None - ReturnType: " + + "void" + IL_0005: call void [System.Console]System.Console::WriteLine(string) + IL_000a: ldc.i4.s 100 + IL_000c: stsfld int32 TailcallVerify.Condition11::Result + .try + { + IL_0011: call void TailcallVerify.Condition11::Caller1() + IL_0016: leave.s IL_006f + + } // end .try + catch [mscorlib]System.Exception + { + IL_0018: stloc.0 + IL_0019: ldloc.0 + IL_001a: isinst [mscorlib]System.DivideByZeroException + IL_001f: brtrue.s IL_002a + + IL_0021: ldc.i4.s 101 + IL_0023: stsfld int32 TailcallVerify.Condition11::Result + IL_0028: rethrow + IL_002a: ldloc.0 + IL_002b: callvirt instance string [mscorlib]System.Exception::get_StackTrace() + IL_0030: ldstr "Caller" + IL_0035: callvirt instance int32 [mscorlib]System.String::IndexOf(string) + IL_003a: ldc.i4.m1 + IL_003b: beq.s IL_006d + + IL_003d: ldstr "FAILED: Found the word 'Caller' in the stacktrace." + IL_0042: call void [System.Console]System.Console::WriteLine(string) + IL_0047: ldstr "------------------------------------------------" + IL_004c: call void [System.Console]System.Console::WriteLine(string) + IL_0051: call void [System.Console]System.Console::WriteLine() + IL_0056: ldloc.0 + IL_0057: callvirt instance string [mscorlib]System.Exception::get_StackTrace() + IL_005c: call void [System.Console]System.Console::WriteLine(string) + IL_0061: call void [System.Console]System.Console::WriteLine() + IL_0066: ldc.i4.s 101 + IL_0068: stsfld int32 TailcallVerify.Condition11::Result + IL_006d: leave.s IL_006f + + } // end handler + IL_006f: ldstr "Execution finished - Test " + IL_0074: ldsfld int32 TailcallVerify.Condition11::Result + IL_0079: ldc.i4.s 100 + IL_007b: beq.s IL_0084 + + IL_007d: ldstr "FAILED" + IL_0082: br.s IL_0089 + + IL_0084: ldstr "PASSED" + IL_0089: call string [mscorlib]System.String::Concat(string, + string) + IL_008e: call void [System.Console]System.Console::WriteLine(string) + IL_0093: ldsfld int32 TailcallVerify.Condition11::Result + IL_0098: ret + } // end of method Condition11::Test1 + + .method private hidebysig static void Caller1() cil managed + { + // Code size 59 (0x3b) + .maxstack 2 + .locals init ([0] class TailcallVerify.Condition11 con) + IL_0000: ldc.i4.0 + IL_0001: newobj instance void [mscorlib]System.Diagnostics.StackFrame::.ctor(bool) + IL_0006: callvirt instance class [mscorlib]System.Reflection.MethodBase [mscorlib]System.Diagnostics.StackFrame::GetMethod() + IL_000b: callvirt instance string [mscorlib]System.Reflection.MemberInfo::get_Name() + IL_0010: ldstr "Caller" + IL_0015: callvirt instance int32 [mscorlib]System.String::IndexOf(string) + IL_001a: ldc.i4.m1 + IL_001b: bne.un.s IL_002e + + IL_001d: ldstr "Failed, Method was inlined..." + IL_0022: call void [System.Console]System.Console::WriteLine(string) + IL_0027: ldc.i4.s 101 + IL_0029: stsfld int32 TailcallVerify.Condition11::Result + IL_002e: newobj instance void TailcallVerify.Condition11::.ctor() + IL_0033: stloc.0 + IL_0034: ldloc.0 + IL_0035: tail. callvirt instance void TailcallVerify.Condition11::Callee1() + IL_003a: ret + } // end of method Condition11::Caller1 + + .method public hidebysig newslot virtual + instance void Callee1() cil managed noinlining + { + // Code size 11 (0xb) + .maxstack 8 + IL_0000: ldc.i4.1 + IL_0001: volatile. + IL_0003: ldsfld int32 modreq([mscorlib]System.Runtime.CompilerServices.IsVolatile) TailcallVerify.Condition11::zero + IL_0008: div + IL_0009: pop + IL_000a: ret + } // end of method Condition11::Callee1 + + .method public hidebysig static int32 Test2() cil managed nooptimization + { + // Code size 160 (0xa0) + .maxstack 3 + .locals init ([0] class TailcallVerify.Condition11 con, + [1] class [mscorlib]System.Exception e) + IL_0000: ldstr "Executing Condition11.Test2 - Caller: Arguments: " + + "None - ReturnType: void; Callee (virtual call): Arguments: 0 - ReturnTy" + + "pe: Int32" + IL_0005: call void [System.Console]System.Console::WriteLine(string) + IL_000a: ldc.i4.s 100 + IL_000c: stsfld int32 TailcallVerify.Condition11::Result + .try + { + IL_0011: newobj instance void TailcallVerify.Condition11::.ctor() + IL_0016: stloc.0 + IL_0017: ldloc.0 + IL_0018: callvirt instance void TailcallVerify.Condition11::Caller2() + IL_001d: leave.s IL_0076 + + } // end .try + catch [mscorlib]System.Exception + { + IL_001f: stloc.1 + IL_0020: ldloc.1 + IL_0021: isinst [mscorlib]System.DivideByZeroException + IL_0026: brtrue.s IL_0031 + + IL_0028: ldc.i4.s 101 + IL_002a: stsfld int32 TailcallVerify.Condition11::Result + IL_002f: rethrow + IL_0031: ldloc.1 + IL_0032: callvirt instance string [mscorlib]System.Exception::get_StackTrace() + IL_0037: ldstr "Caller" + IL_003c: callvirt instance int32 [mscorlib]System.String::IndexOf(string) + IL_0041: ldc.i4.m1 + IL_0042: beq.s IL_0074 + + IL_0044: ldstr "FAILED: Found the word 'Caller' in the stacktrace." + IL_0049: call void [System.Console]System.Console::WriteLine(string) + IL_004e: ldstr "------------------------------------------------" + IL_0053: call void [System.Console]System.Console::WriteLine(string) + IL_0058: call void [System.Console]System.Console::WriteLine() + IL_005d: ldloc.1 + IL_005e: callvirt instance string [mscorlib]System.Exception::get_StackTrace() + IL_0063: call void [System.Console]System.Console::WriteLine(string) + IL_0068: call void [System.Console]System.Console::WriteLine() + IL_006d: ldc.i4.s 101 + IL_006f: stsfld int32 TailcallVerify.Condition11::Result + IL_0074: leave.s IL_0076 + + } // end handler + IL_0076: ldstr "Execution finished - Test " + IL_007b: ldsfld int32 TailcallVerify.Condition11::Result + IL_0080: ldc.i4.s 100 + IL_0082: beq.s IL_008b + + IL_0084: ldstr "FAILED" + IL_0089: br.s IL_0090 + + IL_008b: ldstr "PASSED" + IL_0090: call string [mscorlib]System.String::Concat(string, + string) + IL_0095: call void [System.Console]System.Console::WriteLine(string) + IL_009a: ldsfld int32 TailcallVerify.Condition11::Result + IL_009f: ret + } // end of method Condition11::Test2 + + .method private hidebysig instance void + Caller2() cil managed + { + // Code size 54 (0x36) + .maxstack 8 + IL_0000: ldc.i4.0 + IL_0001: newobj instance void [mscorlib]System.Diagnostics.StackFrame::.ctor(bool) + IL_0006: callvirt instance class [mscorlib]System.Reflection.MethodBase [mscorlib]System.Diagnostics.StackFrame::GetMethod() + IL_000b: callvirt instance string [mscorlib]System.Reflection.MemberInfo::get_Name() + IL_0010: ldstr "Caller" + IL_0015: callvirt instance int32 [mscorlib]System.String::IndexOf(string) + IL_001a: ldc.i4.m1 + IL_001b: bne.un.s IL_002e + + IL_001d: ldstr "Failed, Method was inlined..." + IL_0022: call void [System.Console]System.Console::WriteLine(string) + IL_0027: ldc.i4.s 101 + IL_0029: stsfld int32 TailcallVerify.Condition11::Result + IL_002e: ldarg.0 + IL_002f: tail. callvirt instance int32 TailcallVerify.Condition11::Callee2() + IL_0034: pop + IL_0035: ret + } // end of method Condition11::Caller2 + + .method family hidebysig newslot virtual + instance int32 Callee2() cil managed noinlining + { + // Code size 12 (0xc) + .maxstack 2 + .locals init ([0] int32 i) + IL_0000: ldc.i4.1 + IL_0001: volatile. + IL_0003: ldsfld int32 modreq([mscorlib]System.Runtime.CompilerServices.IsVolatile) TailcallVerify.Condition11::zero + IL_0008: div + IL_0009: stloc.0 + IL_000a: ldloc.0 + IL_000b: ret + } // end of method Condition11::Callee2 + + .method public hidebysig specialname rtspecialname + instance void .ctor() cil managed + { + // Code size 7 (0x7) + .maxstack 8 + IL_0000: ldarg.0 + IL_0001: call instance void [mscorlib]System.Object::.ctor() + IL_0006: ret + } // end of method Condition11::.ctor + + .method private hidebysig specialname rtspecialname static + void .cctor() cil managed + { + // Code size 16 (0x10) + .maxstack 8 + IL_0000: ldc.i4.0 + IL_0001: volatile. + IL_0003: stsfld int32 modreq([mscorlib]System.Runtime.CompilerServices.IsVolatile) TailcallVerify.Condition11::zero + IL_0008: ldc.i4.s 100 + IL_000a: stsfld int32 TailcallVerify.Condition11::Result + IL_000f: ret + } // end of method Condition11::.cctor + +} // end of class TailcallVerify.Condition11 + +.class private auto ansi beforefieldinit TailcallVerify.MyCompare + extends [mscorlib]System.Object + implements class [mscorlib]System.Collections.Generic.IComparer`1 +{ + .method public hidebysig newslot virtual final + instance int32 Compare(string x, + string y) cil managed + { + // Code size 108 (0x6c) + .maxstack 3 + .locals init ([0] int32 a, + [1] int32 b) + IL_0000: ldarg.1 + IL_0001: ldstr "Condition" + IL_0006: ldstr "" + IL_000b: callvirt instance string [mscorlib]System.String::Replace(string, + string) + IL_0010: ldstr "." + IL_0015: ldstr "" + IL_001a: callvirt instance string [mscorlib]System.String::Replace(string, + string) + IL_001f: ldstr "Test" + IL_0024: ldstr "" + IL_0029: callvirt instance string [mscorlib]System.String::Replace(string, + string) + IL_002e: call int32 [mscorlib]System.Convert::ToInt32(string) + IL_0033: stloc.0 + IL_0034: ldarg.2 + IL_0035: ldstr "Condition" + IL_003a: ldstr "" + IL_003f: callvirt instance string [mscorlib]System.String::Replace(string, + string) + IL_0044: ldstr "." + IL_0049: ldstr "" + IL_004e: callvirt instance string [mscorlib]System.String::Replace(string, + string) + IL_0053: ldstr "Test" + IL_0058: ldstr "" + IL_005d: callvirt instance string [mscorlib]System.String::Replace(string, + string) + IL_0062: call int32 [mscorlib]System.Convert::ToInt32(string) + IL_0067: stloc.1 + IL_0068: ldloc.0 + IL_0069: ldloc.1 + IL_006a: sub + IL_006b: ret + } // end of method MyCompare::Compare + + .method public hidebysig specialname rtspecialname + instance void .ctor() cil managed + { + // Code size 7 (0x7) + .maxstack 8 + IL_0000: ldarg.0 + IL_0001: call instance void [mscorlib]System.Object::.ctor() + IL_0006: ret + } // end of method MyCompare::.ctor + +} // end of class TailcallVerify.MyCompare + +.class private auto ansi beforefieldinit TailcallVerify.Program + extends [mscorlib]System.Object +{ + .field private static int32 result + .method private hidebysig static void PrintOutRunTestsFile() cil managed + { + // Code size 948 (0x3b4) + .maxstack 4 + .locals init ([0] class [mscorlib]System.Collections.Generic.List`1 exludeCollection, + [1] class [mscorlib]System.Collections.Generic.List`1 foo, + [2] class [mscorlib]System.Type t, + [3] class [mscorlib]System.Reflection.MethodInfo m, + [4] class [mscorlib]System.Text.StringBuilder sb, + [5] string s, + [6] string V_6, + [7] string 'rem', + [8] class [mscorlib]System.Collections.Generic.List`1 '<>g__initLocal0', + [9] class [mscorlib]System.Type[] CS$6$0000, + [10] int32 CS$7$0001, + [11] class [mscorlib]System.Reflection.MethodInfo[] CS$6$0002, + [12] int32 CS$7$0003, + [13] valuetype [mscorlib]System.Collections.Generic.List`1/Enumerator CS$5$0004, + [14] valuetype [mscorlib]System.Collections.Generic.List`1/Enumerator CS$5$0005) + IL_0000: newobj instance void class [mscorlib]System.Collections.Generic.List`1::.ctor() + IL_0005: stloc.s '<>g__initLocal0' + IL_0007: ldloc.s '<>g__initLocal0' + IL_0009: ldstr "Condition1.Test1" + IL_000e: callvirt instance void class [mscorlib]System.Collections.Generic.List`1::Add(!0) + IL_0013: ldloc.s '<>g__initLocal0' + IL_0015: ldstr "Condition1.Test2" + IL_001a: callvirt instance void class [mscorlib]System.Collections.Generic.List`1::Add(!0) + IL_001f: ldloc.s '<>g__initLocal0' + IL_0021: ldstr "Condition1.Test3" + IL_0026: callvirt instance void class [mscorlib]System.Collections.Generic.List`1::Add(!0) + IL_002b: ldloc.s '<>g__initLocal0' + IL_002d: ldstr "Condition1.Test4" + IL_0032: callvirt instance void class [mscorlib]System.Collections.Generic.List`1::Add(!0) + IL_0037: ldloc.s '<>g__initLocal0' + IL_0039: ldstr "Condition5.Test1" + IL_003e: callvirt instance void class [mscorlib]System.Collections.Generic.List`1::Add(!0) + IL_0043: ldloc.s '<>g__initLocal0' + IL_0045: ldstr "Condition5.Test4" + IL_004a: callvirt instance void class [mscorlib]System.Collections.Generic.List`1::Add(!0) + IL_004f: ldloc.s '<>g__initLocal0' + IL_0051: ldstr "Condition5.Test5" + IL_0056: callvirt instance void class [mscorlib]System.Collections.Generic.List`1::Add(!0) + IL_005b: ldloc.s '<>g__initLocal0' + IL_005d: ldstr "Condition5.Test6" + IL_0062: callvirt instance void class [mscorlib]System.Collections.Generic.List`1::Add(!0) + IL_0067: ldloc.s '<>g__initLocal0' + IL_0069: ldstr "Condition5.Test7" + IL_006e: callvirt instance void class [mscorlib]System.Collections.Generic.List`1::Add(!0) + IL_0073: ldloc.s '<>g__initLocal0' + IL_0075: ldstr "Condition6.Test1" + IL_007a: callvirt instance void class [mscorlib]System.Collections.Generic.List`1::Add(!0) + IL_007f: ldloc.s '<>g__initLocal0' + IL_0081: ldstr "Condition6.Test2" + IL_0086: callvirt instance void class [mscorlib]System.Collections.Generic.List`1::Add(!0) + IL_008b: ldloc.s '<>g__initLocal0' + IL_008d: ldstr "Condition6.Test3" + IL_0092: callvirt instance void class [mscorlib]System.Collections.Generic.List`1::Add(!0) + IL_0097: ldloc.s '<>g__initLocal0' + IL_0099: ldstr "Condition6.Test4" + IL_009e: callvirt instance void class [mscorlib]System.Collections.Generic.List`1::Add(!0) + IL_00a3: ldloc.s '<>g__initLocal0' + IL_00a5: ldstr "Condition6.Test5" + IL_00aa: callvirt instance void class [mscorlib]System.Collections.Generic.List`1::Add(!0) + IL_00af: ldloc.s '<>g__initLocal0' + IL_00b1: ldstr "Condition7.Test1" + IL_00b6: callvirt instance void class [mscorlib]System.Collections.Generic.List`1::Add(!0) + IL_00bb: ldloc.s '<>g__initLocal0' + IL_00bd: ldstr "Condition7.Test2" + IL_00c2: callvirt instance void class [mscorlib]System.Collections.Generic.List`1::Add(!0) + IL_00c7: ldloc.s '<>g__initLocal0' + IL_00c9: ldstr "Condition7.Test3" + IL_00ce: callvirt instance void class [mscorlib]System.Collections.Generic.List`1::Add(!0) + IL_00d3: ldloc.s '<>g__initLocal0' + IL_00d5: ldstr "Condition7.Test4" + IL_00da: callvirt instance void class [mscorlib]System.Collections.Generic.List`1::Add(!0) + IL_00df: ldloc.s '<>g__initLocal0' + IL_00e1: ldstr "Condition8.Test2" + IL_00e6: callvirt instance void class [mscorlib]System.Collections.Generic.List`1::Add(!0) + IL_00eb: ldloc.s '<>g__initLocal0' + IL_00ed: ldstr "Condition8.Test3" + IL_00f2: callvirt instance void class [mscorlib]System.Collections.Generic.List`1::Add(!0) + IL_00f7: ldloc.s '<>g__initLocal0' + IL_00f9: ldstr "Condition9.Test1" + IL_00fe: callvirt instance void class [mscorlib]System.Collections.Generic.List`1::Add(!0) + IL_0103: ldloc.s '<>g__initLocal0' + IL_0105: ldstr "Condition11.Test1" + IL_010a: callvirt instance void class [mscorlib]System.Collections.Generic.List`1::Add(!0) + IL_010f: ldloc.s '<>g__initLocal0' + IL_0111: ldstr "Condition13.Test1" + IL_0116: callvirt instance void class [mscorlib]System.Collections.Generic.List`1::Add(!0) + IL_011b: ldloc.s '<>g__initLocal0' + IL_011d: ldstr "Condition21.Test1" + IL_0122: callvirt instance void class [mscorlib]System.Collections.Generic.List`1::Add(!0) + IL_0127: ldloc.s '<>g__initLocal0' + IL_0129: ldstr "Condition21.Test2" + IL_012e: callvirt instance void class [mscorlib]System.Collections.Generic.List`1::Add(!0) + IL_0133: ldloc.s '<>g__initLocal0' + IL_0135: ldstr "Condition21.Test3" + IL_013a: callvirt instance void class [mscorlib]System.Collections.Generic.List`1::Add(!0) + IL_013f: ldloc.s '<>g__initLocal0' + IL_0141: ldstr "Condition21.Test4" + IL_0146: callvirt instance void class [mscorlib]System.Collections.Generic.List`1::Add(!0) + IL_014b: ldloc.s '<>g__initLocal0' + IL_014d: ldstr "Condition21.Test5" + IL_0152: callvirt instance void class [mscorlib]System.Collections.Generic.List`1::Add(!0) + IL_0157: ldloc.s '<>g__initLocal0' + IL_0159: ldstr "Condition21.Test6" + IL_015e: callvirt instance void class [mscorlib]System.Collections.Generic.List`1::Add(!0) + IL_0163: ldloc.s '<>g__initLocal0' + IL_0165: ldstr "Condition21.Test7" + IL_016a: callvirt instance void class [mscorlib]System.Collections.Generic.List`1::Add(!0) + IL_016f: ldloc.s '<>g__initLocal0' + IL_0171: stloc.0 + IL_0172: newobj instance void class [mscorlib]System.Collections.Generic.List`1::.ctor() + IL_0177: stloc.1 + IL_0178: call class [mscorlib]System.Reflection.Assembly [mscorlib]System.Reflection.Assembly::GetExecutingAssembly() + IL_017d: callvirt instance class [mscorlib]System.Type[] [mscorlib]System.Reflection.Assembly::GetTypes() + IL_0182: stloc.s CS$6$0000 + IL_0184: ldc.i4.0 + IL_0185: stloc.s CS$7$0001 + IL_0187: br.s IL_01f6 + + IL_0189: ldloc.s CS$6$0000 + IL_018b: ldloc.s CS$7$0001 + IL_018d: ldelem.ref + IL_018e: stloc.2 + IL_018f: ldloc.2 + IL_0190: callvirt instance string [mscorlib]System.Reflection.MemberInfo::get_Name() + IL_0195: ldstr "Condi" + IL_019a: callvirt instance bool [mscorlib]System.String::StartsWith(string) + IL_019f: brfalse.s IL_01f0 + + IL_01a1: ldloc.2 + IL_01a2: callvirt instance class [mscorlib]System.Reflection.MethodInfo[] [mscorlib]System.Type::GetMethods() + IL_01a7: stloc.s CS$6$0002 + IL_01a9: ldc.i4.0 + IL_01aa: stloc.s CS$7$0003 + IL_01ac: br.s IL_01e8 + + IL_01ae: ldloc.s CS$6$0002 + IL_01b0: ldloc.s CS$7$0003 + IL_01b2: ldelem.ref + IL_01b3: stloc.3 + IL_01b4: ldloc.3 + IL_01b5: callvirt instance string [mscorlib]System.Reflection.MemberInfo::get_Name() + IL_01ba: ldstr "Test" + IL_01bf: callvirt instance bool [mscorlib]System.String::StartsWith(string) + IL_01c4: brfalse.s IL_01e2 + + IL_01c6: ldloc.1 + IL_01c7: ldloc.2 + IL_01c8: callvirt instance string [mscorlib]System.Reflection.MemberInfo::get_Name() + IL_01cd: ldstr "." + IL_01d2: ldloc.3 + IL_01d3: callvirt instance string [mscorlib]System.Reflection.MemberInfo::get_Name() + IL_01d8: call string [mscorlib]System.String::Concat(string, + string, + string) + IL_01dd: callvirt instance void class [mscorlib]System.Collections.Generic.List`1::Add(!0) + IL_01e2: ldloc.s CS$7$0003 + IL_01e4: ldc.i4.1 + IL_01e5: add + IL_01e6: stloc.s CS$7$0003 + IL_01e8: ldloc.s CS$7$0003 + IL_01ea: ldloc.s CS$6$0002 + IL_01ec: ldlen + IL_01ed: conv.i4 + IL_01ee: blt.s IL_01ae + + IL_01f0: ldloc.s CS$7$0001 + IL_01f2: ldc.i4.1 + IL_01f3: add + IL_01f4: stloc.s CS$7$0001 + IL_01f6: ldloc.s CS$7$0001 + IL_01f8: ldloc.s CS$6$0000 + IL_01fa: ldlen + IL_01fb: conv.i4 + IL_01fc: blt.s IL_0189 + + IL_01fe: ldloc.1 + IL_01ff: ldstr "Condition22.Test1" + IL_0204: callvirt instance void class [mscorlib]System.Collections.Generic.List`1::Add(!0) + IL_0209: ldloc.1 + IL_020a: ldstr "Condition22.Test2" + IL_020f: callvirt instance void class [mscorlib]System.Collections.Generic.List`1::Add(!0) + IL_0214: ldloc.1 + IL_0215: ldstr "Condition22.Test3" + IL_021a: callvirt instance void class [mscorlib]System.Collections.Generic.List`1::Add(!0) + IL_021f: ldloc.1 + IL_0220: ldstr "Condition22.Test4" + IL_0225: callvirt instance void class [mscorlib]System.Collections.Generic.List`1::Add(!0) + IL_022a: ldloc.1 + IL_022b: ldstr "Condition23.Test1" + IL_0230: callvirt instance void class [mscorlib]System.Collections.Generic.List`1::Add(!0) + IL_0235: ldloc.1 + IL_0236: newobj instance void TailcallVerify.MyCompare::.ctor() + IL_023b: callvirt instance void class [mscorlib]System.Collections.Generic.List`1::Sort(class [mscorlib]System.Collections.Generic.IComparer`1) + IL_0240: newobj instance void [mscorlib]System.Text.StringBuilder::.ctor() + IL_0245: stloc.s sb + IL_0247: ldloc.s sb + IL_0249: ldstr "del result.txt" + IL_024e: callvirt instance class [mscorlib]System.Text.StringBuilder [mscorlib]System.Text.StringBuilder::AppendLine(string) + IL_0253: pop + IL_0254: ldloc.s sb + IL_0256: ldstr "echo Make sure BVT_ROOT is set or Condition23.Test" + + "1 will fail!! >> result.txt" + IL_025b: callvirt instance class [mscorlib]System.Text.StringBuilder [mscorlib]System.Text.StringBuilder::AppendLine(string) + IL_0260: pop + IL_0261: ldloc.s sb + IL_0263: ldstr "echo TailcallVerifyWithPrefix.exe results >> resul" + + "t.txt" + IL_0268: callvirt instance class [mscorlib]System.Text.StringBuilder [mscorlib]System.Text.StringBuilder::AppendLine(string) + IL_026d: pop + IL_026e: ldloc.s sb + IL_0270: ldstr "echo ------------- >> result.txt" + IL_0275: callvirt instance class [mscorlib]System.Text.StringBuilder [mscorlib]System.Text.StringBuilder::AppendLine(string) + IL_027a: pop + IL_027b: ldloc.1 + IL_027c: callvirt instance valuetype [mscorlib]System.Collections.Generic.List`1/Enumerator class [mscorlib]System.Collections.Generic.List`1::GetEnumerator() + IL_0281: stloc.s CS$5$0004 + .try + { + IL_0283: br.s IL_02c6 + + IL_0285: ldloca.s CS$5$0004 + IL_0287: call instance !0 valuetype [mscorlib]System.Collections.Generic.List`1/Enumerator::get_Current() + IL_028c: stloc.s s + IL_028e: ldloc.s s + IL_0290: ldstr "Condition23" + IL_0295: callvirt instance bool [mscorlib]System.String::Contains(string) + IL_029a: brfalse.s IL_02b2 + + IL_029c: ldloc.s sb + IL_029e: ldstr "%BVT_ROOT%\\tools\\PartialTrustRunner\\PTRunn" + + "er.exe TailcallVerifyWithPrefix.exe {0} & call echo {0}:%%ERRORLEVEL%% " + + ">> result.txt" + IL_02a3: ldloc.s s + IL_02a5: call string [mscorlib]System.String::Format(string, + object) + IL_02aa: callvirt instance class [mscorlib]System.Text.StringBuilder [mscorlib]System.Text.StringBuilder::AppendLine(string) + IL_02af: pop + IL_02b0: br.s IL_02c6 + + IL_02b2: ldloc.s sb + IL_02b4: ldstr "TailcallVerifyWithPrefix.exe {0} & call echo {0}:%" + + "%ERRORLEVEL%% >> result.txt" + IL_02b9: ldloc.s s + IL_02bb: call string [mscorlib]System.String::Format(string, + object) + IL_02c0: callvirt instance class [mscorlib]System.Text.StringBuilder [mscorlib]System.Text.StringBuilder::AppendLine(string) + IL_02c5: pop + IL_02c6: ldloca.s CS$5$0004 + IL_02c8: call instance bool valuetype [mscorlib]System.Collections.Generic.List`1/Enumerator::MoveNext() + IL_02cd: brtrue.s IL_0285 + + IL_02cf: leave.s IL_02df + + } // end .try + finally + { + IL_02d1: ldloca.s CS$5$0004 + IL_02d3: constrained. valuetype [mscorlib]System.Collections.Generic.List`1/Enumerator + IL_02d9: callvirt instance void [mscorlib]System.IDisposable::Dispose() + IL_02de: endfinally + } // end handler + IL_02df: ldloc.s sb + IL_02e1: callvirt instance class [mscorlib]System.Text.StringBuilder [mscorlib]System.Text.StringBuilder::AppendLine() + IL_02e6: pop + IL_02e7: ldloc.s sb + IL_02e9: ldstr "echo TailcallVerifyWithPrefix.exe results >> result." + + "txt" + IL_02ee: callvirt instance class [mscorlib]System.Text.StringBuilder [mscorlib]System.Text.StringBuilder::AppendLine(string) + IL_02f3: pop + IL_02f4: ldloc.s sb + IL_02f6: ldstr "echo ------------- >> result.txt" + IL_02fb: callvirt instance class [mscorlib]System.Text.StringBuilder [mscorlib]System.Text.StringBuilder::AppendLine(string) + IL_0300: pop + IL_0301: ldloc.1 + IL_0302: callvirt instance valuetype [mscorlib]System.Collections.Generic.List`1/Enumerator class [mscorlib]System.Collections.Generic.List`1::GetEnumerator() + IL_0307: stloc.s CS$5$0005 + .try + { + IL_0309: br.s IL_0368 + + IL_030b: ldloca.s CS$5$0005 + IL_030d: call instance !0 valuetype [mscorlib]System.Collections.Generic.List`1/Enumerator::get_Current() + IL_0312: stloc.s V_6 + IL_0314: ldloc.0 + IL_0315: ldloc.s V_6 + IL_0317: callvirt instance bool class [mscorlib]System.Collections.Generic.List`1::Contains(!0) + IL_031c: brtrue.s IL_0325 + + IL_031e: ldstr "" + IL_0323: br.s IL_032a + + IL_0325: ldstr "rem" + IL_032a: stloc.s 'rem' + IL_032c: ldloc.s V_6 + IL_032e: ldstr "Condition23" + IL_0333: callvirt instance bool [mscorlib]System.String::Contains(string) + IL_0338: brfalse.s IL_0352 + + IL_033a: ldloc.s sb + IL_033c: ldstr "{1} %BVT_ROOT%\\tools\\PartialTrustRunner\\PT" + + "Runner.exe TailcallVerifyWithPrefix.exe {0} & call echo {0}:%%ERRORLEVEL%" + + "% >> result.txt" + IL_0341: ldloc.s V_6 + IL_0343: ldloc.s 'rem' + IL_0345: call string [mscorlib]System.String::Format(string, + object, + object) + IL_034a: callvirt instance class [mscorlib]System.Text.StringBuilder [mscorlib]System.Text.StringBuilder::AppendLine(string) + IL_034f: pop + IL_0350: br.s IL_0368 + + IL_0352: ldloc.s sb + IL_0354: ldstr "{1} TailcallVerifyWithPrefix.exe {0} & call echo {0}" + + ":%%ERRORLEVEL%% >> result.txt" + IL_0359: ldloc.s V_6 + IL_035b: ldloc.s 'rem' + IL_035d: call string [mscorlib]System.String::Format(string, + object, + object) + IL_0362: callvirt instance class [mscorlib]System.Text.StringBuilder [mscorlib]System.Text.StringBuilder::AppendLine(string) + IL_0367: pop + IL_0368: ldloca.s CS$5$0005 + IL_036a: call instance bool valuetype [mscorlib]System.Collections.Generic.List`1/Enumerator::MoveNext() + IL_036f: brtrue.s IL_030b + + IL_0371: leave.s IL_0381 + + } // end .try + finally + { + IL_0373: ldloca.s CS$5$0005 + IL_0375: constrained. valuetype [mscorlib]System.Collections.Generic.List`1/Enumerator + IL_037b: callvirt instance void [mscorlib]System.IDisposable::Dispose() + IL_0380: endfinally + } // end handler + IL_0381: ldloc.s sb + IL_0383: ldstr "start notepad.exe result.txt" + IL_0388: callvirt instance class [mscorlib]System.Text.StringBuilder [mscorlib]System.Text.StringBuilder::AppendLine(string) + IL_038d: pop + IL_038e: ldstr "RunTests.bat written to your current folder!!" + IL_0393: call void [System.Console]System.Console::WriteLine(string) + IL_0398: ldstr "Make sure BVT_ROOT is set or Condition23.Test1 wil" + + "l fail!!" + IL_039d: call void [System.Console]System.Console::WriteLine(string) + IL_03a2: ldstr "RunTests.bat" + IL_03a7: ldloc.s sb + IL_03a9: callvirt instance string [mscorlib]System.Object::ToString() + IL_03ae: call void [mscorlib]System.IO.File::WriteAllText(string, + string) + IL_03b3: ret + } // end of method Program::PrintOutRunTestsFile + + .method public hidebysig specialname static + int32 get_Result() cil managed + { + // Code size 6 (0x6) + .maxstack 8 + IL_0000: ldsfld int32 TailcallVerify.Program::result + IL_0005: ret + } // end of method Program::get_Result + + .method public hidebysig specialname static + void set_Result(int32 'value') cil managed + { + // Code size 16 (0x10) + .maxstack 8 + IL_0000: ldsfld int32 TailcallVerify.Program::result + IL_0005: ldc.i4.s 100 + IL_0007: bne.un.s IL_000f + + IL_0009: ldarg.0 + IL_000a: stsfld int32 TailcallVerify.Program::result + IL_000f: ret + } // end of method Program::set_Result + + .method private hidebysig static int32 + Run(string arg) cil managed + { + // Code size 1964 (0x7ac) + .maxstack 3 + .locals init ([0] string RunAll, + [1] string runTestCaseId) + IL_0000: ldstr "/\?" + IL_0005: stloc.0 + IL_0006: ldarg.0 + IL_0011: stloc.1 + IL_0012: ldloc.1 + IL_0013: ldstr "/create" + IL_0018: call bool [mscorlib]System.String::op_Equality(string, + string) + IL_001d: brfalse.s IL_0027 + + IL_001f: call void TailcallVerify.Program::PrintOutRunTestsFile() + IL_0024: ldc.i4.s 100 + IL_0026: ret + + IL_0027: ldloc.1 + IL_0028: ldstr "/\?" + IL_002d: call bool [mscorlib]System.String::op_Equality(string, + string) + IL_0032: brfalse.s IL_003c + + IL_0034: call void TailcallVerify.Program::Usage() + IL_0039: ldc.i4.s 100 + IL_003b: ret + + IL_003c: ldloc.1 + IL_003d: ldstr "Condition1.Test1" + IL_0042: call bool [mscorlib]System.String::op_Equality(string, + string) + IL_0047: brtrue.s IL_0052 + + IL_0049: ldloc.1 + IL_004a: ldloc.0 + IL_004b: call bool [mscorlib]System.String::op_Equality(string, + string) + IL_0050: brfalse.s IL_005c + + IL_0052: call int32 TailcallVerify.Condition1::Test1() + IL_0057: call void TailcallVerify.Program::set_Result(int32) + IL_005c: ldloc.1 + IL_005d: ldstr "Condition1.Test2" + IL_0062: call bool [mscorlib]System.String::op_Equality(string, + string) + IL_0067: brtrue.s IL_0072 + + IL_0069: ldloc.1 + IL_006a: ldloc.0 + IL_006b: call bool [mscorlib]System.String::op_Equality(string, + string) + IL_0070: brfalse.s IL_007c + + IL_0072: call int32 TailcallVerify.Condition1::Test2() + IL_0077: call void TailcallVerify.Program::set_Result(int32) + IL_007c: ldloc.1 + IL_007d: ldstr "Condition1.Test3" + IL_0082: call bool [mscorlib]System.String::op_Equality(string, + string) + IL_0087: brtrue.s IL_0092 + + IL_0089: ldloc.1 + IL_008a: ldloc.0 + IL_008b: call bool [mscorlib]System.String::op_Equality(string, + string) + IL_0090: brfalse.s IL_009c + + IL_0092: call int32 TailcallVerify.Condition1::Test3() + IL_0097: call void TailcallVerify.Program::set_Result(int32) + IL_009c: ldloc.1 + IL_009d: ldstr "Condition1.Test4" + IL_00a2: call bool [mscorlib]System.String::op_Equality(string, + string) + IL_00a7: brtrue.s IL_00b2 + + IL_00a9: ldloc.1 + IL_00aa: ldloc.0 + IL_00ab: call bool [mscorlib]System.String::op_Equality(string, + string) + IL_00b0: brfalse.s IL_00bc + + IL_00b2: call int32 TailcallVerify.Condition1::Test4() + IL_00b7: call void TailcallVerify.Program::set_Result(int32) + IL_00bc: ldloc.1 + IL_00bd: ldstr "Condition2.Test1" + IL_00c2: call bool [mscorlib]System.String::op_Equality(string, + string) + IL_00c7: brtrue.s IL_00d2 + + IL_00c9: ldloc.1 + IL_00ca: ldloc.0 + IL_00cb: call bool [mscorlib]System.String::op_Equality(string, + string) + IL_00d0: brfalse.s IL_00dc + + IL_00d2: call int32 TailcallVerify.Condition2::Test1() + IL_00d7: call void TailcallVerify.Program::set_Result(int32) + IL_00dc: ldloc.1 + IL_00dd: ldstr "Condition2.Test2" + IL_00e2: call bool [mscorlib]System.String::op_Equality(string, + string) + IL_00e7: brtrue.s IL_00f2 + + IL_00e9: ldloc.1 + IL_00ea: ldloc.0 + IL_00eb: call bool [mscorlib]System.String::op_Equality(string, + string) + IL_00f0: brfalse.s IL_00fc + + IL_00f2: call int32 TailcallVerify.Condition2::Test2() + IL_00f7: call void TailcallVerify.Program::set_Result(int32) + IL_00fc: ldloc.1 + IL_00fd: ldstr "Condition3.Test1" + IL_0102: call bool [mscorlib]System.String::op_Equality(string, + string) + IL_0107: brtrue.s IL_0112 + + IL_0109: ldloc.1 + IL_010a: ldloc.0 + IL_010b: call bool [mscorlib]System.String::op_Equality(string, + string) + IL_0110: brfalse.s IL_011c + + IL_0112: call int32 TailcallVerify.Condition3::Test1() + IL_0117: call void TailcallVerify.Program::set_Result(int32) + IL_011c: ldloc.1 + IL_011d: ldstr "Condition3.Test2" + IL_0122: call bool [mscorlib]System.String::op_Equality(string, + string) + IL_0127: brtrue.s IL_0132 + + IL_0129: ldloc.1 + IL_012a: ldloc.0 + IL_012b: call bool [mscorlib]System.String::op_Equality(string, + string) + IL_0130: brfalse.s IL_013c + + IL_0132: call int32 TailcallVerify.Condition3::Test2() + IL_0137: call void TailcallVerify.Program::set_Result(int32) + IL_013c: ldloc.1 + IL_013d: ldstr "Condition4.Test1" + IL_0142: call bool [mscorlib]System.String::op_Equality(string, + string) + IL_0147: brtrue.s IL_0152 + + IL_0149: ldloc.1 + IL_014a: ldloc.0 + IL_014b: call bool [mscorlib]System.String::op_Equality(string, + string) + IL_0150: brfalse.s IL_015c + + IL_0152: call int32 TailcallVerify.Condition4::Test1() + IL_0157: call void TailcallVerify.Program::set_Result(int32) + IL_015c: ldloc.1 + IL_015d: ldstr "Condition4.Test2" + IL_0162: call bool [mscorlib]System.String::op_Equality(string, + string) + IL_0167: brtrue.s IL_0172 + + IL_0169: ldloc.1 + IL_016a: ldloc.0 + IL_016b: call bool [mscorlib]System.String::op_Equality(string, + string) + IL_0170: brfalse.s IL_017c + + IL_0172: call int32 TailcallVerify.Condition4::Test2() + IL_0177: call void TailcallVerify.Program::set_Result(int32) + IL_017c: ldloc.1 + IL_017d: ldstr "Condition5.Test1" + IL_0182: call bool [mscorlib]System.String::op_Equality(string, + string) + IL_0187: brtrue.s IL_0192 + + IL_0189: ldloc.1 + IL_018a: ldloc.0 + IL_018b: call bool [mscorlib]System.String::op_Equality(string, + string) + IL_0190: brfalse.s IL_019c + + IL_0192: call int32 TailcallVerify.Condition5::Test1() + IL_0197: call void TailcallVerify.Program::set_Result(int32) + IL_019c: ldloc.1 + IL_019d: ldstr "Condition5.Test2" + IL_01a2: call bool [mscorlib]System.String::op_Equality(string, + string) + IL_01a7: brtrue.s IL_01b2 + + IL_01a9: ldloc.1 + IL_01aa: ldloc.0 + IL_01ab: call bool [mscorlib]System.String::op_Equality(string, + string) + IL_01b0: brfalse.s IL_01bc + + IL_01b2: call int32 TailcallVerify.Condition5::Test2() + IL_01b7: call void TailcallVerify.Program::set_Result(int32) + IL_01bc: ldloc.1 + IL_01bd: ldstr "Condition5.Test3" + IL_01c2: call bool [mscorlib]System.String::op_Equality(string, + string) + IL_01c7: brtrue.s IL_01d2 + + IL_01c9: ldloc.1 + IL_01ca: ldloc.0 + IL_01cb: call bool [mscorlib]System.String::op_Equality(string, + string) + IL_01d0: brfalse.s IL_01dc + + IL_01d2: call int32 TailcallVerify.Condition5::Test3() + IL_01d7: call void TailcallVerify.Program::set_Result(int32) + IL_01dc: ldloc.1 + IL_01dd: ldstr "Condition5.Test4" + IL_01e2: call bool [mscorlib]System.String::op_Equality(string, + string) + IL_01e7: brtrue.s IL_01f2 + + IL_01e9: ldloc.1 + IL_01ea: ldloc.0 + IL_01eb: call bool [mscorlib]System.String::op_Equality(string, + string) + IL_01f0: brfalse.s IL_01fc + + IL_01f2: call int32 TailcallVerify.Condition5::Test4() + IL_01f7: call void TailcallVerify.Program::set_Result(int32) + IL_01fc: ldloc.1 + IL_01fd: ldstr "Condition5.Test5" + IL_0202: call bool [mscorlib]System.String::op_Equality(string, + string) + IL_0207: brtrue.s IL_0212 + + IL_0209: ldloc.1 + IL_020a: ldloc.0 + IL_020b: call bool [mscorlib]System.String::op_Equality(string, + string) + IL_0210: brfalse.s IL_021c + + IL_0212: call int32 TailcallVerify.Condition5::Test5() + IL_0217: call void TailcallVerify.Program::set_Result(int32) + IL_021c: ldloc.1 + IL_021d: ldstr "Condition5.Test6" + IL_0222: call bool [mscorlib]System.String::op_Equality(string, + string) + IL_0227: brtrue.s IL_0232 + + IL_0229: ldloc.1 + IL_022a: ldloc.0 + IL_022b: call bool [mscorlib]System.String::op_Equality(string, + string) + IL_0230: brfalse.s IL_023c + + IL_0232: call int32 TailcallVerify.Condition5::Test6() + IL_0237: call void TailcallVerify.Program::set_Result(int32) + IL_023c: ldloc.1 + IL_023d: ldstr "Condition5.Test7" + IL_0242: call bool [mscorlib]System.String::op_Equality(string, + string) + IL_0247: brtrue.s IL_0252 + + IL_0249: ldloc.1 + IL_024a: ldloc.0 + IL_024b: call bool [mscorlib]System.String::op_Equality(string, + string) + IL_0250: brfalse.s IL_025c + + IL_0252: call int32 TailcallVerify.Condition5::Test7() + IL_0257: call void TailcallVerify.Program::set_Result(int32) + IL_025c: ldloc.1 + IL_025d: ldstr "Condition5.Test8" + IL_0262: call bool [mscorlib]System.String::op_Equality(string, + string) + IL_0267: brtrue.s IL_0272 + + IL_0269: ldloc.1 + IL_026a: ldloc.0 + IL_026b: call bool [mscorlib]System.String::op_Equality(string, + string) + IL_0270: brfalse.s IL_027c + + IL_0272: call int32 TailcallVerify.Condition5::Test8() + IL_0277: call void TailcallVerify.Program::set_Result(int32) + IL_027c: ldloc.1 + IL_027d: ldstr "Condition5.Test9" + IL_0282: call bool [mscorlib]System.String::op_Equality(string, + string) + IL_0287: brtrue.s IL_0292 + + IL_0289: ldloc.1 + IL_028a: ldloc.0 + IL_028b: call bool [mscorlib]System.String::op_Equality(string, + string) + IL_0290: brfalse.s IL_029c + + IL_0292: call int32 TailcallVerify.Condition5::Test9() + IL_0297: call void TailcallVerify.Program::set_Result(int32) + IL_029c: ldloc.1 + IL_029d: ldstr "Condition6.Test1" + IL_02a2: call bool [mscorlib]System.String::op_Equality(string, + string) + IL_02a7: brtrue.s IL_02b2 + + IL_02a9: ldloc.1 + IL_02aa: ldloc.0 + IL_02ab: call bool [mscorlib]System.String::op_Equality(string, + string) + IL_02b0: brfalse.s IL_02bc + + IL_02b2: call int32 TailcallVerify.Condition6::Test1() + IL_02b7: call void TailcallVerify.Program::set_Result(int32) + IL_02bc: ldloc.1 + IL_02bd: ldstr "Condition6.Test2" + IL_02c2: call bool [mscorlib]System.String::op_Equality(string, + string) + IL_02c7: brtrue.s IL_02d2 + + IL_02c9: ldloc.1 + IL_02ca: ldloc.0 + IL_02cb: call bool [mscorlib]System.String::op_Equality(string, + string) + IL_02d0: brfalse.s IL_02dc + + IL_02d2: call int32 TailcallVerify.Condition6::Test2() + IL_02d7: call void TailcallVerify.Program::set_Result(int32) + IL_02dc: ldloc.1 + IL_02dd: ldstr "Condition6.Test3" + IL_02e2: call bool [mscorlib]System.String::op_Equality(string, + string) + IL_02e7: brtrue.s IL_02f2 + + IL_02e9: ldloc.1 + IL_02ea: ldloc.0 + IL_02eb: call bool [mscorlib]System.String::op_Equality(string, + string) + IL_02f0: brfalse.s IL_02fc + + IL_02f2: call int32 TailcallVerify.Condition6::Test3() + IL_02f7: call void TailcallVerify.Program::set_Result(int32) + IL_02fc: ldloc.1 + IL_02fd: ldstr "Condition6.Test4" + IL_0302: call bool [mscorlib]System.String::op_Equality(string, + string) + IL_0307: brtrue.s IL_0312 + + IL_0309: ldloc.1 + IL_030a: ldloc.0 + IL_030b: call bool [mscorlib]System.String::op_Equality(string, + string) + IL_0310: brfalse.s IL_031c + + IL_0312: call int32 TailcallVerify.Condition6::Test4() + IL_0317: call void TailcallVerify.Program::set_Result(int32) + IL_031c: ldloc.1 + IL_031d: ldstr "Condition6.Test5" + IL_0322: call bool [mscorlib]System.String::op_Equality(string, + string) + IL_0327: brtrue.s IL_0332 + + IL_0329: ldloc.1 + IL_032a: ldloc.0 + IL_032b: call bool [mscorlib]System.String::op_Equality(string, + string) + IL_0330: brfalse.s IL_033c + + IL_0332: call int32 TailcallVerify.Condition6::Test5() + IL_0337: call void TailcallVerify.Program::set_Result(int32) + IL_033c: ldloc.1 + IL_033d: ldstr "Condition7.Test1" + IL_0342: call bool [mscorlib]System.String::op_Equality(string, + string) + IL_0347: brtrue.s IL_0352 + + IL_0349: ldloc.1 + IL_034a: ldloc.0 + IL_034b: call bool [mscorlib]System.String::op_Equality(string, + string) + IL_0350: brfalse.s IL_035c + + IL_0352: call int32 TailcallVerify.Condition7::Test1() + IL_0357: call void TailcallVerify.Program::set_Result(int32) + IL_035c: ldloc.1 + IL_035d: ldstr "Condition7.Test2" + IL_0362: call bool [mscorlib]System.String::op_Equality(string, + string) + IL_0367: brtrue.s IL_0372 + + IL_0369: ldloc.1 + IL_036a: ldloc.0 + IL_036b: call bool [mscorlib]System.String::op_Equality(string, + string) + IL_0370: brfalse.s IL_037c + + IL_0372: call int32 TailcallVerify.Condition7::Test2() + IL_0377: call void TailcallVerify.Program::set_Result(int32) + IL_037c: ldloc.1 + IL_037d: ldstr "Condition7.Test3" + IL_0382: call bool [mscorlib]System.String::op_Equality(string, + string) + IL_0387: brtrue.s IL_0392 + + IL_0389: ldloc.1 + IL_038a: ldloc.0 + IL_038b: call bool [mscorlib]System.String::op_Equality(string, + string) + IL_0390: brfalse.s IL_039c + + IL_0392: call int32 TailcallVerify.Condition7::Test3() + IL_0397: call void TailcallVerify.Program::set_Result(int32) + IL_039c: ldloc.1 + IL_039d: ldstr "Condition7.Test4" + IL_03a2: call bool [mscorlib]System.String::op_Equality(string, + string) + IL_03a7: brtrue.s IL_03b2 + + IL_03a9: ldloc.1 + IL_03aa: ldloc.0 + IL_03ab: call bool [mscorlib]System.String::op_Equality(string, + string) + IL_03b0: brfalse.s IL_03bc + + IL_03b2: call int32 TailcallVerify.Condition7::Test4() + IL_03b7: call void TailcallVerify.Program::set_Result(int32) + IL_03bc: ldloc.1 + IL_03bd: ldstr "Condition8.Test1" + IL_03c2: call bool [mscorlib]System.String::op_Equality(string, + string) + IL_03c7: brtrue.s IL_03d2 + + IL_03c9: ldloc.1 + IL_03ca: ldloc.0 + IL_03cb: call bool [mscorlib]System.String::op_Equality(string, + string) + IL_03d0: brfalse.s IL_03dc + + IL_03d2: call int32 TailcallVerify.Condition8::Test1() + IL_03d7: call void TailcallVerify.Program::set_Result(int32) + IL_03dc: ldloc.1 + IL_03dd: ldstr "Condition8.Test2" + IL_03e2: call bool [mscorlib]System.String::op_Equality(string, + string) + IL_03e7: brtrue.s IL_03f2 + + IL_03e9: ldloc.1 + IL_03ea: ldloc.0 + IL_03eb: call bool [mscorlib]System.String::op_Equality(string, + string) + IL_03f0: brfalse.s IL_03fc + + IL_03f2: call int32 TailcallVerify.Condition8::Test2() + IL_03f7: call void TailcallVerify.Program::set_Result(int32) + IL_03fc: ldloc.1 + IL_03fd: ldstr "Condition8.Test3" + IL_0402: call bool [mscorlib]System.String::op_Equality(string, + string) + IL_0407: brtrue.s IL_0412 + + IL_0409: ldloc.1 + IL_040a: ldloc.0 + IL_040b: call bool [mscorlib]System.String::op_Equality(string, + string) + IL_0410: brfalse.s IL_041c + + IL_0412: call int32 TailcallVerify.Condition8::Test3() + IL_0417: call void TailcallVerify.Program::set_Result(int32) + IL_041c: ldloc.1 + IL_041d: ldstr "Condition9.Test1" + IL_0422: call bool [mscorlib]System.String::op_Equality(string, + string) + IL_0427: brtrue.s IL_0432 + + IL_0429: ldloc.1 + IL_042a: ldloc.0 + IL_042b: call bool [mscorlib]System.String::op_Equality(string, + string) + IL_0430: brfalse.s IL_043c + + IL_0432: call int32 TailcallVerify.Condition9::Test1() + IL_0437: call void TailcallVerify.Program::set_Result(int32) + IL_043c: ldloc.1 + IL_043d: ldstr "Condition10.Test1" + IL_0442: call bool [mscorlib]System.String::op_Equality(string, + string) + IL_0447: brtrue.s IL_0452 + + IL_0449: ldloc.1 + IL_044a: ldloc.0 + IL_044b: call bool [mscorlib]System.String::op_Equality(string, + string) + IL_0450: brfalse.s IL_045c + + IL_0452: call int32 TailcallVerify.Condition10::Test1() + IL_0457: call void TailcallVerify.Program::set_Result(int32) + IL_045c: ldloc.1 + IL_045d: ldstr "Condition10.Test2" + IL_0462: call bool [mscorlib]System.String::op_Equality(string, + string) + IL_0467: brtrue.s IL_0472 + + IL_0469: ldloc.1 + IL_046a: ldloc.0 + IL_046b: call bool [mscorlib]System.String::op_Equality(string, + string) + IL_0470: brfalse.s IL_047c + + IL_0472: call int32 TailcallVerify.Condition10::Test2() + IL_0477: call void TailcallVerify.Program::set_Result(int32) + IL_047c: ldloc.1 + IL_047d: ldstr "Condition10.Test3" + IL_0482: call bool [mscorlib]System.String::op_Equality(string, + string) + IL_0487: brtrue.s IL_0492 + + IL_0489: ldloc.1 + IL_048a: ldloc.0 + IL_048b: call bool [mscorlib]System.String::op_Equality(string, + string) + IL_0490: brfalse.s IL_049c + + IL_0492: call int32 TailcallVerify.Condition10::Test3() + IL_0497: call void TailcallVerify.Program::set_Result(int32) + IL_049c: ldloc.1 + IL_049d: ldstr "Condition10.Test4" + IL_04a2: call bool [mscorlib]System.String::op_Equality(string, + string) + IL_04a7: brtrue.s IL_04b2 + + IL_04a9: ldloc.1 + IL_04aa: ldloc.0 + IL_04ab: call bool [mscorlib]System.String::op_Equality(string, + string) + IL_04b0: brfalse.s IL_04bc + + IL_04b2: call int32 TailcallVerify.Condition10::Test4() + IL_04b7: call void TailcallVerify.Program::set_Result(int32) + IL_04bc: ldloc.1 + IL_04bd: ldstr "Condition10.Test5" + IL_04c2: call bool [mscorlib]System.String::op_Equality(string, + string) + IL_04c7: brtrue.s IL_04d2 + + IL_04c9: ldloc.1 + IL_04ca: ldloc.0 + IL_04cb: call bool [mscorlib]System.String::op_Equality(string, + string) + IL_04d0: brfalse.s IL_04dc + + IL_04d2: call int32 TailcallVerify.Condition10::Test5() + IL_04d7: call void TailcallVerify.Program::set_Result(int32) + IL_04dc: ldloc.1 + IL_04dd: ldstr "Condition11.Test1" + IL_04e2: call bool [mscorlib]System.String::op_Equality(string, + string) + IL_04e7: brtrue.s IL_04f2 + + IL_04e9: ldloc.1 + IL_04ea: ldloc.0 + IL_04eb: call bool [mscorlib]System.String::op_Equality(string, + string) + IL_04f0: brfalse.s IL_04fc + + IL_04f2: call int32 TailcallVerify.Condition11::Test1() + IL_04f7: call void TailcallVerify.Program::set_Result(int32) + IL_04fc: ldloc.1 + IL_04fd: ldstr "Condition12.Test1" + IL_0502: call bool [mscorlib]System.String::op_Equality(string, + string) + IL_0507: brtrue.s IL_0512 + + IL_0509: ldloc.1 + IL_050a: ldloc.0 + IL_050b: call bool [mscorlib]System.String::op_Equality(string, + string) + IL_0510: brfalse.s IL_051c + + IL_0512: call int32 TailcallVerify.Condition12::Test1() + IL_0517: call void TailcallVerify.Program::set_Result(int32) + IL_051c: ldloc.1 + IL_051d: ldstr "Condition13.Test1" + IL_0522: call bool [mscorlib]System.String::op_Equality(string, + string) + IL_0527: brtrue.s IL_0532 + + IL_0529: ldloc.1 + IL_052a: ldloc.0 + IL_052b: call bool [mscorlib]System.String::op_Equality(string, + string) + IL_0530: brfalse.s IL_053c + + IL_0532: call int32 TailcallVerify.Condition13::Test1() + IL_0537: call void TailcallVerify.Program::set_Result(int32) + IL_053c: ldloc.1 + IL_053d: ldstr "Condition16.Test1" + IL_0542: call bool [mscorlib]System.String::op_Equality(string, + string) + IL_0547: brtrue.s IL_0552 + + IL_0549: ldloc.1 + IL_054a: ldloc.0 + IL_054b: call bool [mscorlib]System.String::op_Equality(string, + string) + IL_0550: brfalse.s IL_055c + + IL_0552: call int32 TailcallVerify.Condition16::Test1() + IL_0557: call void TailcallVerify.Program::set_Result(int32) + IL_055c: ldloc.1 + IL_055d: ldstr "Condition17.Test1" + IL_0562: call bool [mscorlib]System.String::op_Equality(string, + string) + IL_0567: brtrue.s IL_0572 + + IL_0569: ldloc.1 + IL_056a: ldloc.0 + IL_056b: call bool [mscorlib]System.String::op_Equality(string, + string) + IL_0570: brfalse.s IL_057c + + IL_0572: call int32 TailcallVerify.Condition17::Test1() + IL_0577: call void TailcallVerify.Program::set_Result(int32) + IL_057c: ldloc.1 + IL_057d: ldstr "Condition18.Test1" + IL_0582: call bool [mscorlib]System.String::op_Equality(string, + string) + IL_0587: brtrue.s IL_0592 + + IL_0589: ldloc.1 + IL_058a: ldloc.0 + IL_058b: call bool [mscorlib]System.String::op_Equality(string, + string) + IL_0590: brfalse.s IL_059c + + IL_0592: call int32 TailcallVerify.Condition18::Test1() + IL_0597: call void TailcallVerify.Program::set_Result(int32) + IL_059c: ldloc.1 + IL_059d: ldstr "Condition18.Test2" + IL_05a2: call bool [mscorlib]System.String::op_Equality(string, + string) + IL_05a7: brtrue.s IL_05b2 + + IL_05a9: ldloc.1 + IL_05aa: ldloc.0 + IL_05ab: call bool [mscorlib]System.String::op_Equality(string, + string) + IL_05b0: brfalse.s IL_05bc + + IL_05b2: call int32 TailcallVerify.Condition18::Test2() + IL_05b7: call void TailcallVerify.Program::set_Result(int32) + IL_05bc: ldloc.1 + IL_05bd: ldstr "Condition19.Test1" + IL_05c2: call bool [mscorlib]System.String::op_Equality(string, + string) + IL_05c7: brtrue.s IL_05d2 + + IL_05c9: ldloc.1 + IL_05ca: ldloc.0 + IL_05cb: call bool [mscorlib]System.String::op_Equality(string, + string) + IL_05d0: brfalse.s IL_05dc + + IL_05d2: call int32 TailcallVerify.Condition19::Test1() + IL_05d7: call void TailcallVerify.Program::set_Result(int32) + IL_05dc: ldloc.1 + IL_05dd: ldstr "Condition19.Test2" + IL_05e2: call bool [mscorlib]System.String::op_Equality(string, + string) + IL_05e7: brtrue.s IL_05f2 + + IL_05e9: ldloc.1 + IL_05ea: ldloc.0 + IL_05eb: call bool [mscorlib]System.String::op_Equality(string, + string) + IL_05f0: brfalse.s IL_05fc + + IL_05f2: call int32 TailcallVerify.Condition19::Test2() + IL_05f7: call void TailcallVerify.Program::set_Result(int32) + IL_05fc: ldloc.1 + IL_05fd: ldstr "Condition20.Test1" + IL_0602: call bool [mscorlib]System.String::op_Equality(string, + string) + IL_0607: brtrue.s IL_0612 + + IL_0609: ldloc.1 + IL_060a: ldloc.0 + IL_060b: call bool [mscorlib]System.String::op_Equality(string, + string) + IL_0610: brfalse.s IL_061c + + IL_0612: call int32 TailcallVerify.Condition20::Test1() + IL_0617: call void TailcallVerify.Program::set_Result(int32) + IL_061c: ldloc.1 + IL_061d: ldstr "Condition21.Test1" + IL_0622: call bool [mscorlib]System.String::op_Equality(string, + string) + IL_0627: brtrue.s IL_0632 + + IL_0629: ldloc.1 + IL_062a: ldloc.0 + IL_062b: call bool [mscorlib]System.String::op_Equality(string, + string) + IL_0630: brfalse.s IL_063c + + IL_0632: call int32 TailcallVerify.Condition21::Test1() + IL_0637: call void TailcallVerify.Program::set_Result(int32) + IL_063c: ldloc.1 + IL_063d: ldstr "Condition21.Test2" + IL_0642: call bool [mscorlib]System.String::op_Equality(string, + string) + IL_0647: brtrue.s IL_0652 + + IL_0649: ldloc.1 + IL_064a: ldloc.0 + IL_064b: call bool [mscorlib]System.String::op_Equality(string, + string) + IL_0650: brfalse.s IL_065c + + IL_0652: call int32 TailcallVerify.Condition21::Test2() + IL_0657: call void TailcallVerify.Program::set_Result(int32) + IL_065c: ldloc.1 + IL_065d: ldstr "Condition21.Test3" + IL_0662: call bool [mscorlib]System.String::op_Equality(string, + string) + IL_0667: brtrue.s IL_0672 + + IL_0669: ldloc.1 + IL_066a: ldloc.0 + IL_066b: call bool [mscorlib]System.String::op_Equality(string, + string) + IL_0670: brfalse.s IL_067c + + IL_0672: call int32 TailcallVerify.Condition21::Test3() + IL_0677: call void TailcallVerify.Program::set_Result(int32) + IL_067c: ldloc.1 + IL_067d: ldstr "Condition21.Test4" + IL_0682: call bool [mscorlib]System.String::op_Equality(string, + string) + IL_0687: brtrue.s IL_0692 + + IL_0689: ldloc.1 + IL_068a: ldloc.0 + IL_068b: call bool [mscorlib]System.String::op_Equality(string, + string) + IL_0690: brfalse.s IL_069c + + IL_0692: call int32 TailcallVerify.Condition21::Test4() + IL_0697: call void TailcallVerify.Program::set_Result(int32) + IL_069c: ldloc.1 + IL_069d: ldstr "Condition21.Test5" + IL_06a2: call bool [mscorlib]System.String::op_Equality(string, + string) + IL_06a7: brtrue.s IL_06b2 + + IL_06a9: ldloc.1 + IL_06aa: ldloc.0 + IL_06ab: call bool [mscorlib]System.String::op_Equality(string, + string) + IL_06b0: brfalse.s IL_06bc + + IL_06b2: call int32 TailcallVerify.Condition21::Test5() + IL_06b7: call void TailcallVerify.Program::set_Result(int32) + IL_06bc: ldloc.1 + IL_06bd: ldstr "Condition21.Test6" + IL_06c2: call bool [mscorlib]System.String::op_Equality(string, + string) + IL_06c7: brtrue.s IL_06d2 + + IL_06c9: ldloc.1 + IL_06ca: ldloc.0 + IL_06cb: call bool [mscorlib]System.String::op_Equality(string, + string) + IL_06d0: brfalse.s IL_06dc + + IL_06d2: call int32 TailcallVerify.Condition21::Test6() + IL_06d7: call void TailcallVerify.Program::set_Result(int32) + IL_06dc: ldloc.1 + IL_06dd: ldstr "Condition21.Test7" + IL_06e2: call bool [mscorlib]System.String::op_Equality(string, + string) + IL_06e7: brtrue.s IL_06f2 + + IL_06e9: ldloc.1 + IL_06ea: ldloc.0 + IL_06eb: call bool [mscorlib]System.String::op_Equality(string, + string) + IL_06f0: brfalse.s IL_06fc + + IL_06f2: call int32 TailcallVerify.Condition21::Test7() + IL_06f7: call void TailcallVerify.Program::set_Result(int32) + IL_06fc: ldloc.1 + IL_06fd: ldstr "Condition22.Test1" + IL_0702: call bool [mscorlib]System.String::op_Equality(string, + string) + IL_0707: brtrue.s IL_0712 + + IL_0709: ldloc.1 + IL_070a: ldloc.0 + IL_070b: call bool [mscorlib]System.String::op_Equality(string, + string) + IL_0710: brfalse.s IL_071c + + IL_0712: call int32 TailcallVerify.Condition22::Test1() + IL_0717: call void TailcallVerify.Program::set_Result(int32) + IL_071c: ldloc.1 + IL_071d: ldstr "Condition22.Test2" + IL_0722: call bool [mscorlib]System.String::op_Equality(string, + string) + IL_0727: brtrue.s IL_0732 + + IL_0729: ldloc.1 + IL_072a: ldloc.0 + IL_072b: call bool [mscorlib]System.String::op_Equality(string, + string) + IL_0730: brfalse.s IL_073c + + IL_0732: call int32 TailcallVerify.Condition22::Test2() + IL_0737: call void TailcallVerify.Program::set_Result(int32) + IL_073c: ldloc.1 + IL_073d: ldstr "Condition22.Test3" + IL_0742: call bool [mscorlib]System.String::op_Equality(string, + string) + IL_0747: brtrue.s IL_0752 + + IL_0749: ldloc.1 + IL_074a: ldloc.0 + IL_074b: call bool [mscorlib]System.String::op_Equality(string, + string) + IL_0750: brfalse.s IL_075c + + IL_0752: call int32 TailcallVerify.Condition22::Test3() + IL_0757: call void TailcallVerify.Program::set_Result(int32) + IL_075c: ldloc.1 + IL_075d: ldstr "Condition22.Test4" + IL_0762: call bool [mscorlib]System.String::op_Equality(string, + string) + IL_0767: brtrue.s IL_0772 + + IL_0769: ldloc.1 + IL_076a: ldloc.0 + IL_076b: call bool [mscorlib]System.String::op_Equality(string, + string) + IL_0770: brfalse.s IL_077c + + IL_0772: call int32 TailcallVerify.Condition22::Test4() + IL_0777: call void TailcallVerify.Program::set_Result(int32) + IL_077c: ldloc.1 + IL_077d: ldstr "Condition23.Test1" + IL_0782: call bool [mscorlib]System.String::op_Equality(string, + string) + IL_0787: brtrue.s IL_0792 + + IL_0789: ldloc.1 + IL_078a: ldloc.0 + IL_078b: call bool [mscorlib]System.String::op_Equality(string, + string) + IL_0790: brfalse.s IL_07a6 + + IL_0792: ldstr "Make sure to run this with Tools\\PartialTr" + + "ustRunner\\PTRunner.exe or it will fail!!" + IL_0797: call void [System.Console]System.Console::WriteLine(string) + IL_079c: call int32 TailcallVerify.Condition23::Test1() + IL_07a1: call void TailcallVerify.Program::set_Result(int32) + IL_07a6: call int32 TailcallVerify.Program::get_Result() + IL_07ab: ret + } // end of method Program::Run + + .method private hidebysig static int32 + Main() cil managed + { + .entrypoint + .maxstack 1 + + IL_0000: ldstr "Condition1.Test1" + IL_0001: call int32 TailcallVerify.Program::Run(string) + IL_0002: pop + IL_0003: ldstr "Condition1.Test2" + IL_0004: call int32 TailcallVerify.Program::Run(string) + IL_0005: pop + IL_0006: ldstr "Condition1.Test3" + IL_0007: call int32 TailcallVerify.Program::Run(string) + IL_0008: pop + IL_0009: ldstr "Condition2.Test1" + IL_000a: call int32 TailcallVerify.Program::Run(string) + IL_000b: pop + IL_000c: ldstr "Condition2.Test2" + IL_000d: call int32 TailcallVerify.Program::Run(string) + IL_000e: pop + IL_000f: ldstr "Condition3.Test1" + IL_0010: call int32 TailcallVerify.Program::Run(string) + IL_0011: pop + IL_0012: ldstr "Condition3.Test2" + IL_0013: call int32 TailcallVerify.Program::Run(string) + IL_0014: pop + IL_0015: ldstr "Condition4.Test1" + IL_0016: call int32 TailcallVerify.Program::Run(string) + IL_0017: pop + IL_0018: ldstr "Condition4.Test2" + IL_0019: call int32 TailcallVerify.Program::Run(string) + IL_001a: pop + IL_001b: ldstr "Condition5.Test1" + IL_001c: call int32 TailcallVerify.Program::Run(string) + IL_001d: pop + IL_001e: ldstr "Condition5.Test2" + IL_001f: call int32 TailcallVerify.Program::Run(string) + IL_0020: pop + IL_0021: ldstr "Condition5.Test3" + IL_0022: call int32 TailcallVerify.Program::Run(string) + IL_0023: pop + IL_0024: ldstr "Condition5.Test4" + IL_0025: call int32 TailcallVerify.Program::Run(string) + IL_0026: pop + IL_0027: ldstr "Condition5.Test5" + IL_0028: call int32 TailcallVerify.Program::Run(string) + IL_0029: pop + IL_002a: ldstr "Condition5.Test6" + IL_002b: call int32 TailcallVerify.Program::Run(string) + IL_002c: pop + IL_002d: ldstr "Condition5.Test7" + IL_002e: call int32 TailcallVerify.Program::Run(string) + IL_002f: pop + IL_0030: ldstr "Condition5.Test8" + IL_003a: call int32 TailcallVerify.Program::Run(string) + IL_003b: pop + IL_003c: ldstr "Condition5.Test9" + IL_003d: call int32 TailcallVerify.Program::Run(string) + IL_003e: pop + IL_003f: ldstr "Condition6.Test1" + IL_0040: call int32 TailcallVerify.Program::Run(string) + IL_0041: pop + IL_0042: ldstr "Condition6.Test2" + IL_0043: call int32 TailcallVerify.Program::Run(string) + IL_0044: pop + IL_0045: ldstr "Condition6.Test3" + IL_0046: call int32 TailcallVerify.Program::Run(string) + IL_0047: pop + IL_0048: ldstr "Condition6.Test4" + IL_0049: call int32 TailcallVerify.Program::Run(string) + IL_004a: pop + IL_004b: ldstr "Condition6.Test5" + IL_004c: call int32 TailcallVerify.Program::Run(string) + IL_004d: pop + IL_004e: ldstr "Condition7.Test1" + IL_004f: call int32 TailcallVerify.Program::Run(string) + IL_0050: pop + IL_0051: ldstr "Condition7.Test2" + IL_0052: call int32 TailcallVerify.Program::Run(string) + IL_0053: pop + IL_0054: ldstr "Condition7.Test3" + IL_0055: call int32 TailcallVerify.Program::Run(string) + IL_0056: pop + IL_0057: ldstr "Condition7.Test4" + IL_0058: call int32 TailcallVerify.Program::Run(string) + IL_0059: pop + IL_005a: ldstr "Condition8.Test1" + IL_005b: call int32 TailcallVerify.Program::Run(string) + IL_005c: pop + IL_005d: ldstr "Condition8.Test2" + IL_005e: call int32 TailcallVerify.Program::Run(string) + IL_005f: pop + IL_0060: ldstr "Condition8.Test3" + IL_0061: call int32 TailcallVerify.Program::Run(string) + IL_0062: pop + IL_0063: ldstr "Condition9.Test1" + IL_0064: call int32 TailcallVerify.Program::Run(string) + IL_0065: pop + IL_0066: ldstr "Condition10.Test1" + IL_0067: call int32 TailcallVerify.Program::Run(string) + IL_0068: pop + IL_0069: ldstr "Condition10.Test2" + IL_006a: call int32 TailcallVerify.Program::Run(string) + IL_006b: pop + IL_006c: ldstr "Condition10.Test3" + IL_006d: call int32 TailcallVerify.Program::Run(string) + IL_006e: pop + IL_0070: ldstr "Condition10.Test4" + IL_0071: call int32 TailcallVerify.Program::Run(string) + IL_0072: pop + IL_0073: ldstr "Condition10.Test5" + IL_0074: call int32 TailcallVerify.Program::Run(string) + IL_0075: pop + IL_0076: ldstr "Condition11.Test1" + IL_0077: call int32 TailcallVerify.Program::Run(string) + IL_0078: pop + IL_0079: ldstr "Condition11.Test2" + IL_007a: call int32 TailcallVerify.Program::Run(string) + IL_007b: pop + IL_007c: ldstr "Condition12.Test1" + IL_007d: call int32 TailcallVerify.Program::Run(string) + IL_007e: pop + IL_007f: ldstr "Condition13.Test1" + IL_0080: call int32 TailcallVerify.Program::Run(string) + IL_0081: pop + IL_0082: ldstr "Condition16.Test1" + IL_0083: call int32 TailcallVerify.Program::Run(string) + IL_0084: pop + IL_0085: ldstr "Condition17.Test1" + IL_0086: call int32 TailcallVerify.Program::Run(string) + IL_0087: pop + IL_0088: ldstr "Condition17.Test4" + IL_0089: call int32 TailcallVerify.Program::Run(string) + IL_008a: pop + IL_008b: ldstr "Condition18.Test1" + IL_008c: call int32 TailcallVerify.Program::Run(string) + IL_008d: pop + IL_0091: ldstr "Condition18.Test3" + IL_0092: call int32 TailcallVerify.Program::Run(string) + IL_0093: pop + IL_0094: ldstr "Condition19.Test1" + IL_0095: call int32 TailcallVerify.Program::Run(string) + IL_0096: pop + IL_0097: ldstr "Condition19.Test2" + IL_0098: call int32 TailcallVerify.Program::Run(string) + IL_0099: pop + IL_009a: ldstr "Condition20.Test1" + IL_009b: call int32 TailcallVerify.Program::Run(string) + IL_009c: pop + IL_00a6: ldstr "Condition22.Test2" + IL_00a7: call int32 TailcallVerify.Program::Run(string) + IL_00a8: pop + IL_00a9: ldstr "Condition22.Test4" + IL_00aa: call int32 TailcallVerify.Program::Run(string) + IL_00ba: ret + } // end of method Program::Main + + .method private hidebysig static void Usage() cil managed + { + // Code size 71 (0x47) + .maxstack 1 + IL_0000: ldstr "TailcallVerifyWithPrefix.exe ConditionX.TestX | /\? |" + + " /create" + IL_0005: call void [System.Console]System.Console::WriteLine(string) + IL_000a: ldstr "------------------ Available Switches ------------" + + "--------" + IL_000f: call void [System.Console]System.Console::WriteLine(string) + IL_0014: ldstr "No Arguments: Runs all contained testcases (better" + + " use the /create switch)" + IL_0019: call void [System.Console]System.Console::WriteLine(string) + IL_001e: ldstr "ConditionX.TestX: Runs one of the contained testca" + + "ses, e.g. Condtion1.Test1" + IL_0023: call void [System.Console]System.Console::WriteLine(string) + IL_0028: ldstr "/\?: This little help..." + IL_002d: call void [System.Console]System.Console::WriteLine(string) + IL_0032: ldstr "/Create: Creates a little RunTests.bat file in the" + + " same folder which runs all testcases " + IL_0037: call void [System.Console]System.Console::WriteLine(string) + IL_003c: ldstr "and opens a result.txt file containing the ERRORLE" + + "VEL for each." + IL_0041: call void [System.Console]System.Console::WriteLine(string) + IL_0046: ret + } // end of method Program::Usage + + .method public hidebysig specialname rtspecialname + instance void .ctor() cil managed + { + // Code size 7 (0x7) + .maxstack 8 + IL_0000: ldarg.0 + IL_0001: call instance void [mscorlib]System.Object::.ctor() + IL_0006: ret + } // end of method Program::.ctor + + .method private hidebysig specialname rtspecialname static + void .cctor() cil managed + { + // Code size 8 (0x8) + .maxstack 8 + IL_0000: ldc.i4.s 100 + IL_0002: stsfld int32 TailcallVerify.Program::result + IL_0007: ret + } // end of method Program::.cctor + + .property int32 Result() + { + .get int32 TailcallVerify.Program::get_Result() + .set void TailcallVerify.Program::set_Result(int32) + } // end of property Program::Result +} // end of class TailcallVerify.Program + +.class private auto ansi beforefieldinit TailcallVerify.Condition8 + extends [mscorlib]System.Object +{ + .field private static int32 modreq([mscorlib]System.Runtime.CompilerServices.IsVolatile) zero + .field private static int32 Result + .method public hidebysig static int32 Test1() cil managed nooptimization + { + // Code size 153 (0x99) + .maxstack 3 + .locals init ([0] class [mscorlib]System.Exception e) + IL_0000: ldstr "Executing Condition8.Test1 - Caller: Arguments: No" + + "ne - ReturnType: void; Callee: Arguments: varargs - ReturnType: void" + IL_0005: call void [System.Console]System.Console::WriteLine(string) + IL_000a: ldc.i4.s 100 + IL_000c: stsfld int32 TailcallVerify.Condition8::Result + .try + { + IL_0011: call void TailcallVerify.Condition8::Caller1() + IL_0016: leave.s IL_006f + + } // end .try + catch [mscorlib]System.Exception + { + IL_0018: stloc.0 + IL_0019: ldloc.0 + IL_001a: isinst [mscorlib]System.DivideByZeroException + IL_001f: brtrue.s IL_002a + + IL_0021: ldc.i4.s 101 + IL_0023: stsfld int32 TailcallVerify.Condition8::Result + IL_0028: rethrow + IL_002a: ldloc.0 + IL_002b: callvirt instance string [mscorlib]System.Exception::get_StackTrace() + IL_0030: ldstr "Caller" + IL_0035: callvirt instance int32 [mscorlib]System.String::IndexOf(string) + IL_003a: ldc.i4.m1 + IL_003b: beq.s IL_006d + + IL_003d: ldstr "FAILED: Found the word 'Caller' in the stacktrace." + IL_0042: call void [System.Console]System.Console::WriteLine(string) + IL_0047: ldstr "------------------------------------------------" + IL_004c: call void [System.Console]System.Console::WriteLine(string) + IL_0051: call void [System.Console]System.Console::WriteLine() + IL_0056: ldloc.0 + IL_0057: callvirt instance string [mscorlib]System.Exception::get_StackTrace() + IL_005c: call void [System.Console]System.Console::WriteLine(string) + IL_0061: call void [System.Console]System.Console::WriteLine() + IL_0066: ldc.i4.s 101 + IL_0068: stsfld int32 TailcallVerify.Condition8::Result + IL_006d: leave.s IL_006f + + } // end handler + IL_006f: ldstr "Execution finished - Test " + IL_0074: ldsfld int32 TailcallVerify.Condition8::Result + IL_0079: ldc.i4.s 100 + IL_007b: beq.s IL_0084 + + IL_007d: ldstr "FAILED" + IL_0082: br.s IL_0089 + + IL_0084: ldstr "PASSED" + IL_0089: call string [mscorlib]System.String::Concat(string, + string) + IL_008e: call void [System.Console]System.Console::WriteLine(string) + IL_0093: ldsfld int32 TailcallVerify.Condition8::Result + IL_0098: ret + } // end of method Condition8::Test1 + + .method private hidebysig static void Caller1() cil managed + { + // Code size 55 (0x37) + .maxstack 8 + IL_0000: ldc.i4.0 + IL_0001: newobj instance void [mscorlib]System.Diagnostics.StackFrame::.ctor(bool) + IL_0006: callvirt instance class [mscorlib]System.Reflection.MethodBase [mscorlib]System.Diagnostics.StackFrame::GetMethod() + IL_000b: callvirt instance string [mscorlib]System.Reflection.MemberInfo::get_Name() + IL_0010: ldstr "Caller" + IL_0015: callvirt instance int32 [mscorlib]System.String::IndexOf(string) + IL_001a: ldc.i4.m1 + IL_001b: bne.un.s IL_002e + + IL_001d: ldstr "Failed, Method was inlined..." + IL_0022: call void [System.Console]System.Console::WriteLine(string) + IL_0027: ldc.i4.s 101 + IL_0029: stsfld int32 TailcallVerify.Condition8::Result + IL_002e: ldc.i4.0 + IL_002f: ldc.i4.1 + IL_0030: ldc.i4.2 + IL_0031: tail. call vararg void TailcallVerify.Condition8::Callee1(..., + int32, + int32, + int32) + IL_0036: ret + } // end of method Condition8::Caller1 + + .method private hidebysig static vararg void + Callee1() cil managed noinlining + { + // Code size 11 (0xb) + .maxstack 8 + IL_0000: ldc.i4.1 + IL_0001: volatile. + IL_0003: ldsfld int32 modreq([mscorlib]System.Runtime.CompilerServices.IsVolatile) TailcallVerify.Condition8::zero + IL_0008: div + IL_0009: pop + IL_000a: ret + } // end of method Condition8::Callee1 + + .method public hidebysig static int32 Test2() cil managed nooptimization + { + // Code size 156 (0x9c) + .maxstack 3 + .locals init ([0] class [mscorlib]System.Exception e) + IL_0000: ldstr "Executing Condition8.Test2 - Caller: Arguments: va" + + "rargs - ReturnType: void; Callee: Arguments: None - ReturnType: void" + IL_0005: call void [System.Console]System.Console::WriteLine(string) + IL_000a: ldc.i4.s 100 + IL_000c: stsfld int32 TailcallVerify.Condition8::Result + .try + { + IL_0011: ldc.i4.0 + IL_0012: ldc.i4.1 + IL_0013: ldc.i4.2 + IL_0014: call vararg void TailcallVerify.Condition8::Caller2(..., + int32, + int32, + int32) + IL_0019: leave.s IL_0072 + + } // end .try + catch [mscorlib]System.Exception + { + IL_001b: stloc.0 + IL_001c: ldloc.0 + IL_001d: isinst [mscorlib]System.DivideByZeroException + IL_0022: brtrue.s IL_002d + + IL_0024: ldc.i4.s 101 + IL_0026: stsfld int32 TailcallVerify.Condition8::Result + IL_002b: rethrow + IL_002d: ldloc.0 + IL_002e: callvirt instance string [mscorlib]System.Exception::get_StackTrace() + IL_0033: ldstr "Caller" + IL_0038: callvirt instance int32 [mscorlib]System.String::IndexOf(string) + IL_003d: ldc.i4.m1 + IL_003e: beq.s IL_0070 + + IL_0040: ldstr "FAILED: Found the word 'Caller' in the stacktrace." + IL_0045: call void [System.Console]System.Console::WriteLine(string) + IL_004a: ldstr "------------------------------------------------" + IL_004f: call void [System.Console]System.Console::WriteLine(string) + IL_0054: call void [System.Console]System.Console::WriteLine() + IL_0059: ldloc.0 + IL_005a: callvirt instance string [mscorlib]System.Exception::get_StackTrace() + IL_005f: call void [System.Console]System.Console::WriteLine(string) + IL_0064: call void [System.Console]System.Console::WriteLine() + IL_0069: ldc.i4.s 101 + IL_006b: stsfld int32 TailcallVerify.Condition8::Result + IL_0070: leave.s IL_0072 + + } // end handler + IL_0072: ldstr "Execution finished - Test " + IL_0077: ldsfld int32 TailcallVerify.Condition8::Result + IL_007c: ldc.i4.s 100 + IL_007e: beq.s IL_0087 + + IL_0080: ldstr "FAILED" + IL_0085: br.s IL_008c + + IL_0087: ldstr "PASSED" + IL_008c: call string [mscorlib]System.String::Concat(string, + string) + IL_0091: call void [System.Console]System.Console::WriteLine(string) + IL_0096: ldsfld int32 TailcallVerify.Condition8::Result + IL_009b: ret + } // end of method Condition8::Test2 + + .method private hidebysig static vararg void + Caller2() cil managed + { + // Code size 52 (0x34) + .maxstack 8 + IL_0000: ldc.i4.0 + IL_0001: newobj instance void [mscorlib]System.Diagnostics.StackFrame::.ctor(bool) + IL_0006: callvirt instance class [mscorlib]System.Reflection.MethodBase [mscorlib]System.Diagnostics.StackFrame::GetMethod() + IL_000b: callvirt instance string [mscorlib]System.Reflection.MemberInfo::get_Name() + IL_0010: ldstr "Caller" + IL_0015: callvirt instance int32 [mscorlib]System.String::IndexOf(string) + IL_001a: ldc.i4.m1 + IL_001b: bne.un.s IL_002e + + IL_001d: ldstr "Failed, Method was inlined..." + IL_0022: call void [System.Console]System.Console::WriteLine(string) + IL_0027: ldc.i4.s 101 + IL_0029: stsfld int32 TailcallVerify.Condition8::Result + IL_002e: tail. call void TailcallVerify.Condition8::Callee2() + IL_0033: ret + } // end of method Condition8::Caller2 + + .method private hidebysig static void Callee2() cil managed noinlining + { + // Code size 11 (0xb) + .maxstack 8 + IL_0000: ldc.i4.1 + IL_0001: volatile. + IL_0003: ldsfld int32 modreq([mscorlib]System.Runtime.CompilerServices.IsVolatile) TailcallVerify.Condition8::zero + IL_0008: div + IL_0009: pop + IL_000a: ret + } // end of method Condition8::Callee2 + + .method public hidebysig static int32 Test3() cil managed nooptimization + { + // Code size 156 (0x9c) + .maxstack 3 + .locals init ([0] class [mscorlib]System.Exception e) + IL_0000: ldstr "Executing Condition8.Test3 - Caller: Arguments: va" + + "rarg - ReturnType: void; Callee: Arguments: vararg - ReturnType: void" + IL_0005: call void [System.Console]System.Console::WriteLine(string) + IL_000a: ldc.i4.s 100 + IL_000c: stsfld int32 TailcallVerify.Condition8::Result + .try + { + IL_0011: ldc.i4.0 + IL_0012: ldc.i4.1 + IL_0013: ldc.i4.2 + IL_0014: call vararg void TailcallVerify.Condition8::Caller3(..., + int32, + int32, + int32) + IL_0019: leave.s IL_0072 + + } // end .try + catch [mscorlib]System.Exception + { + IL_001b: stloc.0 + IL_001c: ldloc.0 + IL_001d: isinst [mscorlib]System.DivideByZeroException + IL_0022: brtrue.s IL_002d + + IL_0024: ldc.i4.s 101 + IL_0026: stsfld int32 TailcallVerify.Condition8::Result + IL_002b: rethrow + IL_002d: ldloc.0 + IL_002e: callvirt instance string [mscorlib]System.Exception::get_StackTrace() + IL_0033: ldstr "Caller" + IL_0038: callvirt instance int32 [mscorlib]System.String::IndexOf(string) + IL_003d: ldc.i4.m1 + IL_003e: beq.s IL_0070 + + IL_0040: ldstr "FAILED: Found the word 'Caller' in the stacktrace." + IL_0045: call void [System.Console]System.Console::WriteLine(string) + IL_004a: ldstr "------------------------------------------------" + IL_004f: call void [System.Console]System.Console::WriteLine(string) + IL_0054: call void [System.Console]System.Console::WriteLine() + IL_0059: ldloc.0 + IL_005a: callvirt instance string [mscorlib]System.Exception::get_StackTrace() + IL_005f: call void [System.Console]System.Console::WriteLine(string) + IL_0064: call void [System.Console]System.Console::WriteLine() + IL_0069: ldc.i4.s 101 + IL_006b: stsfld int32 TailcallVerify.Condition8::Result + IL_0070: leave.s IL_0072 + + } // end handler + IL_0072: ldstr "Execution finished - Test " + IL_0077: ldsfld int32 TailcallVerify.Condition8::Result + IL_007c: ldc.i4.s 100 + IL_007e: beq.s IL_0087 + + IL_0080: ldstr "FAILED" + IL_0085: br.s IL_008c + + IL_0087: ldstr "PASSED" + IL_008c: call string [mscorlib]System.String::Concat(string, + string) + IL_0091: call void [System.Console]System.Console::WriteLine(string) + IL_0096: ldsfld int32 TailcallVerify.Condition8::Result + IL_009b: ret + } // end of method Condition8::Test3 + + .method private hidebysig static vararg void + Caller3() cil managed + { + // Code size 55 (0x37) + .maxstack 8 + IL_0000: ldc.i4.0 + IL_0001: newobj instance void [mscorlib]System.Diagnostics.StackFrame::.ctor(bool) + IL_0006: callvirt instance class [mscorlib]System.Reflection.MethodBase [mscorlib]System.Diagnostics.StackFrame::GetMethod() + IL_000b: callvirt instance string [mscorlib]System.Reflection.MemberInfo::get_Name() + IL_0010: ldstr "Caller" + IL_0015: callvirt instance int32 [mscorlib]System.String::IndexOf(string) + IL_001a: ldc.i4.m1 + IL_001b: bne.un.s IL_002e + + IL_001d: ldstr "Failed, Method was inlined..." + IL_0022: call void [System.Console]System.Console::WriteLine(string) + IL_0027: ldc.i4.s 101 + IL_0029: stsfld int32 TailcallVerify.Condition8::Result + IL_002e: ldc.i4.0 + IL_002f: ldc.i4.1 + IL_0030: ldc.i4.2 + IL_0031: tail. call vararg void TailcallVerify.Condition8::Callee3(..., + int32, + int32, + int32) + IL_0036: ret + } // end of method Condition8::Caller3 + + .method private hidebysig static vararg void + Callee3() cil managed noinlining + { + // Code size 11 (0xb) + .maxstack 8 + IL_0000: ldc.i4.1 + IL_0001: volatile. + IL_0003: ldsfld int32 modreq([mscorlib]System.Runtime.CompilerServices.IsVolatile) TailcallVerify.Condition8::zero + IL_0008: div + IL_0009: pop + IL_000a: ret + } // end of method Condition8::Callee3 + + .method public hidebysig specialname rtspecialname + instance void .ctor() cil managed + { + // Code size 7 (0x7) + .maxstack 8 + IL_0000: ldarg.0 + IL_0001: call instance void [mscorlib]System.Object::.ctor() + IL_0006: ret + } // end of method Condition8::.ctor + + .method private hidebysig specialname rtspecialname static + void .cctor() cil managed + { + // Code size 16 (0x10) + .maxstack 8 + IL_0000: ldc.i4.0 + IL_0001: volatile. + IL_0003: stsfld int32 modreq([mscorlib]System.Runtime.CompilerServices.IsVolatile) TailcallVerify.Condition8::zero + IL_0008: ldc.i4.s 100 + IL_000a: stsfld int32 TailcallVerify.Condition8::Result + IL_000f: ret + } // end of method Condition8::.cctor + +} // end of class TailcallVerify.Condition8 + +.class private auto ansi beforefieldinit TailcallVerify.Condition21 + extends [mscorlib]System.Object +{ + .field private static int32 modreq([mscorlib]System.Runtime.CompilerServices.IsVolatile) zero + .field private static int32 Result + .field private static class [mscorlib]System.Collections.Generic.List`1 evenList + .field private static class [mscorlib]System.Collections.Generic.List`1 oddList + .field assembly class [mscorlib]System.Collections.Generic.List`1 threadList + .field private static int32 counterE4 + .field private static int32 counterO4 + .field private int32 counterE5 + .field private int32 counterO5 + .method public hidebysig static int32 Test1() cil managed nooptimization + { + // Code size 368 (0x170) + .maxstack 3 + .locals init ([0] class [mscorlib]System.Exception e, + [1] int64 l, + [2] int64 V_2, + [3] valuetype [mscorlib]System.Collections.Generic.List`1/Enumerator CS$5$0000, + [4] valuetype [mscorlib]System.Collections.Generic.List`1/Enumerator CS$5$0001) + IL_0000: ldstr "Executing Condition21.Test1 - Caller: Arguments: N" + + "one - ReturnType: void; CalleeIsOdd1: Arguments: int, int, int, int, 3 " + + "byte struct - ReturnType: 3 byte struct; CalleeIsEven1: Arguments: int," + + " int, int, int, 3 byte struct - ReturnType: 3 byte struct;" + IL_0005: call void [System.Console]System.Console::WriteLine(string) + IL_000a: ldc.i4.s 100 + IL_000c: stsfld int32 TailcallVerify.Condition21::Result + IL_0011: ldsfld class [mscorlib]System.Collections.Generic.List`1 TailcallVerify.Condition21::evenList + IL_0016: callvirt instance void class [mscorlib]System.Collections.Generic.List`1::Clear() + IL_001b: ldsfld class [mscorlib]System.Collections.Generic.List`1 TailcallVerify.Condition21::oddList + IL_0020: callvirt instance void class [mscorlib]System.Collections.Generic.List`1::Clear() + .try + { + IL_0025: call void TailcallVerify.Condition21::Caller1() + IL_002a: leave.s IL_0083 + + } // end .try + catch [mscorlib]System.Exception + { + IL_002c: stloc.0 + IL_002d: ldloc.0 + IL_002e: isinst [mscorlib]System.DivideByZeroException + IL_0033: brtrue.s IL_003e + + IL_0035: ldc.i4.s 101 + IL_0037: stsfld int32 TailcallVerify.Condition21::Result + IL_003c: rethrow + IL_003e: ldloc.0 + IL_003f: callvirt instance string [mscorlib]System.Exception::get_StackTrace() + IL_0044: ldstr "Caller" + IL_0049: callvirt instance int32 [mscorlib]System.String::IndexOf(string) + IL_004e: ldc.i4.m1 + IL_004f: beq.s IL_0081 + + IL_0051: ldstr "FAILED: Found the word 'Caller' in the stacktrace." + IL_0056: call void [System.Console]System.Console::WriteLine(string) + IL_005b: ldstr "------------------------------------------------" + IL_0060: call void [System.Console]System.Console::WriteLine(string) + IL_0065: call void [System.Console]System.Console::WriteLine() + IL_006a: ldloc.0 + IL_006b: callvirt instance string [mscorlib]System.Exception::get_StackTrace() + IL_0070: call void [System.Console]System.Console::WriteLine(string) + IL_0075: call void [System.Console]System.Console::WriteLine() + IL_007a: ldc.i4.s 101 + IL_007c: stsfld int32 TailcallVerify.Condition21::Result + IL_0081: leave.s IL_0083 + + } // end handler + IL_0083: ldsfld class [mscorlib]System.Collections.Generic.List`1 TailcallVerify.Condition21::evenList + IL_0088: call class [mscorlib]System.Collections.Generic.IEnumerable`1 [System.Linq]System.Linq.Enumerable::Distinct(class [mscorlib]System.Collections.Generic.IEnumerable`1) + IL_008d: call int32 [System.Linq]System.Linq.Enumerable::Count(class [mscorlib]System.Collections.Generic.IEnumerable`1) + IL_0092: ldc.i4.1 + IL_0093: beq.s IL_00e4 + + IL_0095: ldstr "FAILED: The local on the stack for CalleeIsEven3 s" + + "hifted. (should have always the same address)" + IL_009a: call void [System.Console]System.Console::WriteLine(string) + IL_009f: ldsfld class [mscorlib]System.Collections.Generic.List`1 TailcallVerify.Condition21::evenList + IL_00a4: callvirt instance valuetype [mscorlib]System.Collections.Generic.List`1/Enumerator class [mscorlib]System.Collections.Generic.List`1::GetEnumerator() + IL_00a9: stloc.3 + .try + { + IL_00aa: br.s IL_00c4 + + IL_00ac: ldloca.s CS$5$0000 + IL_00ae: call instance !0 valuetype [mscorlib]System.Collections.Generic.List`1/Enumerator::get_Current() + IL_00b3: stloc.1 + IL_00b4: ldstr "0x{0:x8}" + IL_00b9: ldloc.1 + IL_00ba: box [mscorlib]System.Int64 + IL_00bf: call void [System.Console]System.Console::WriteLine(string, + object) + IL_00c4: ldloca.s CS$5$0000 + IL_00c6: call instance bool valuetype [mscorlib]System.Collections.Generic.List`1/Enumerator::MoveNext() + IL_00cb: brtrue.s IL_00ac + + IL_00cd: leave.s IL_00dd + + } // end .try + finally + { + IL_00cf: ldloca.s CS$5$0000 + IL_00d1: constrained. valuetype [mscorlib]System.Collections.Generic.List`1/Enumerator + IL_00d7: callvirt instance void [mscorlib]System.IDisposable::Dispose() + IL_00dc: endfinally + } // end handler + IL_00dd: ldc.i4.s 101 + IL_00df: stsfld int32 TailcallVerify.Condition21::Result + IL_00e4: ldsfld class [mscorlib]System.Collections.Generic.List`1 TailcallVerify.Condition21::oddList + IL_00e9: call class [mscorlib]System.Collections.Generic.IEnumerable`1 [System.Linq]System.Linq.Enumerable::Distinct(class [mscorlib]System.Collections.Generic.IEnumerable`1) + IL_00ee: call int32 [System.Linq]System.Linq.Enumerable::Count(class [mscorlib]System.Collections.Generic.IEnumerable`1) + IL_00f3: ldc.i4.1 + IL_00f4: beq.s IL_0146 + + IL_00f6: ldstr "FAILED: The local on the stack for CalleeIsOdd3 sh" + + "ifted. (should have always the same address)" + IL_00fb: call void [System.Console]System.Console::WriteLine(string) + IL_0100: ldsfld class [mscorlib]System.Collections.Generic.List`1 TailcallVerify.Condition21::oddList + IL_0105: callvirt instance valuetype [mscorlib]System.Collections.Generic.List`1/Enumerator class [mscorlib]System.Collections.Generic.List`1::GetEnumerator() + IL_010a: stloc.s CS$5$0001 + .try + { + IL_010c: br.s IL_0126 + + IL_010e: ldloca.s CS$5$0001 + IL_0110: call instance !0 valuetype [mscorlib]System.Collections.Generic.List`1/Enumerator::get_Current() + IL_0115: stloc.2 + IL_0116: ldstr "0x{0:x8}" + IL_011b: ldloc.2 + IL_011c: box [mscorlib]System.Int64 + IL_0121: call void [System.Console]System.Console::WriteLine(string, + object) + IL_0126: ldloca.s CS$5$0001 + IL_0128: call instance bool valuetype [mscorlib]System.Collections.Generic.List`1/Enumerator::MoveNext() + IL_012d: brtrue.s IL_010e + + IL_012f: leave.s IL_013f + + } // end .try + finally + { + IL_0131: ldloca.s CS$5$0001 + IL_0133: constrained. valuetype [mscorlib]System.Collections.Generic.List`1/Enumerator + IL_0139: callvirt instance void [mscorlib]System.IDisposable::Dispose() + IL_013e: endfinally + } // end handler + IL_013f: ldc.i4.s 101 + IL_0141: stsfld int32 TailcallVerify.Condition21::Result + IL_0146: ldstr "Execution finished - Test " + IL_014b: ldsfld int32 TailcallVerify.Condition21::Result + IL_0150: ldc.i4.s 100 + IL_0152: beq.s IL_015b + + IL_0154: ldstr "FAILED" + IL_0159: br.s IL_0160 + + IL_015b: ldstr "PASSED" + IL_0160: call string [mscorlib]System.String::Concat(string, + string) + IL_0165: call void [System.Console]System.Console::WriteLine(string) + IL_016a: ldsfld int32 TailcallVerify.Condition21::Result + IL_016f: ret + } // end of method Condition21::Test1 + + .method private hidebysig static void Caller1() cil managed + { + // Code size 96 (0x60) + .maxstack 6 + .locals init ([0] valuetype TailcallVerify.ValueType3Bytes v, + [1] valuetype TailcallVerify.ValueType3Bytes '<>g__initLocal0', + [2] valuetype TailcallVerify.ValueType3Bytes CS$0$0000) + IL_0000: ldc.i4.0 + IL_0001: newobj instance void [mscorlib]System.Diagnostics.StackFrame::.ctor(bool) + IL_0006: callvirt instance class [mscorlib]System.Reflection.MethodBase [mscorlib]System.Diagnostics.StackFrame::GetMethod() + IL_000b: callvirt instance string [mscorlib]System.Reflection.MemberInfo::get_Name() + IL_0010: ldstr "Caller" + IL_0015: callvirt instance int32 [mscorlib]System.String::IndexOf(string) + IL_001a: ldc.i4.m1 + IL_001b: bne.un.s IL_002e + + IL_001d: ldstr "FAILED: Caller3 was inlined..." + IL_0022: call void [System.Console]System.Console::WriteLine(string) + IL_0027: ldc.i4.s 101 + IL_0029: stsfld int32 TailcallVerify.Condition21::Result + IL_002e: ldloca.s CS$0$0000 + IL_0030: initobj TailcallVerify.ValueType3Bytes + IL_0036: ldloc.2 + IL_0037: stloc.1 + IL_0038: ldloca.s '<>g__initLocal0' + IL_003a: ldc.i4 0xff + IL_003f: stfld uint8 TailcallVerify.ValueType3Bytes::i1 + IL_0044: ldloca.s '<>g__initLocal0' + IL_0046: ldc.i4 0xffff8000 + IL_004b: stfld int16 TailcallVerify.ValueType3Bytes::i2 + IL_0050: ldloc.1 + IL_0051: stloc.0 + IL_0052: ldc.i4.s 20 + IL_0054: ldc.i4.1 + IL_0055: ldc.i4.2 + IL_0056: ldc.i4.3 + IL_0057: ldc.i4.4 + IL_0058: ldloc.0 + IL_0059: tail. call valuetype TailcallVerify.ValueType3Bytes TailcallVerify.Condition21::CalleeIsOdd1(int32, + int32, + int32, + int32, + int32, + valuetype TailcallVerify.ValueType3Bytes) + IL_005e: pop + IL_005f: ret + } // end of method Condition21::Caller1 + + .method private hidebysig static valuetype TailcallVerify.ValueType3Bytes + CalleeIsOdd1(int32 i, + int32 i2, + int32 i3, + int32 i4, + int32 i5, + valuetype TailcallVerify.ValueType3Bytes v3) cil managed + { + // Code size 171 (0xab) + .maxstack 6 + .locals init ([0] int32 data, + [1] int32* pData, + [2] native int p, + [3] valuetype TailcallVerify.ValueType3Bytes CS$0$0000) + IL_0000: ldloca.s data + IL_0002: conv.u + IL_0003: stloc.1 + IL_0004: ldloca.s p + IL_0006: ldloc.1 + IL_0007: call instance void [mscorlib]System.IntPtr::.ctor(void*) + IL_000c: ldsfld class [mscorlib]System.Collections.Generic.List`1 TailcallVerify.Condition21::oddList + IL_0011: ldloca.s p + IL_0013: call instance int64 [mscorlib]System.IntPtr::ToInt64() + IL_0018: callvirt instance void class [mscorlib]System.Collections.Generic.List`1::Add(!0) + IL_001d: ldarg.1 + IL_001e: ldc.i4.1 + IL_001f: bne.un.s IL_004a + + IL_0021: ldarg.2 + IL_0022: ldc.i4.2 + IL_0023: bne.un.s IL_004a + + IL_0025: ldarg.3 + IL_0026: ldc.i4.3 + IL_0027: bne.un.s IL_004a + + IL_0029: ldarg.s i5 + IL_002b: ldc.i4.4 + IL_002c: bne.un.s IL_004a + + IL_002e: ldarga.s v3 + IL_0030: ldfld uint8 TailcallVerify.ValueType3Bytes::i1 + IL_0035: ldc.i4 0xff + IL_003a: bne.un.s IL_004a + + IL_003c: ldarga.s v3 + IL_003e: ldfld int16 TailcallVerify.ValueType3Bytes::i2 + IL_0043: ldc.i4 0xffff8000 + IL_0048: beq.s IL_005b + + IL_004a: ldstr "FAILED: Passed in arguments are wrong..." + IL_004f: call void [System.Console]System.Console::WriteLine(string) + IL_0054: ldc.i4.s 101 + IL_0056: stsfld int32 TailcallVerify.Condition21::Result + IL_005b: ldc.i4.0 + IL_005c: newobj instance void [mscorlib]System.Diagnostics.StackFrame::.ctor(bool) + IL_0061: callvirt instance class [mscorlib]System.Reflection.MethodBase [mscorlib]System.Diagnostics.StackFrame::GetMethod() + IL_0066: callvirt instance string [mscorlib]System.Reflection.MemberInfo::get_Name() + IL_006b: ldstr "Callee" + IL_0070: callvirt instance int32 [mscorlib]System.String::IndexOf(string) + IL_0075: ldc.i4.m1 + IL_0076: bne.un.s IL_0089 + + IL_0078: ldstr "FAILED: CalleeIsOdd3 was inlined..." + IL_007d: call void [System.Console]System.Console::WriteLine(string) + IL_0082: ldc.i4.s 101 + IL_0084: stsfld int32 TailcallVerify.Condition21::Result + IL_0089: ldarg.0 + IL_008a: brtrue.s IL_009b + + IL_008c: ldc.i4.1 + IL_008d: ldarg.0 + IL_008e: div + IL_008f: starg.s i + IL_0091: ldloca.s CS$0$0000 + IL_0093: initobj TailcallVerify.ValueType3Bytes + IL_0099: ldloc.3 + IL_009a: ret + + IL_009b: ldarg.0 + IL_009c: ldc.i4.1 + IL_009d: sub + IL_009e: ldarg.1 + IL_009f: ldarg.2 + IL_00a0: ldarg.3 + IL_00a1: ldarg.s i5 + IL_00a3: ldarg.s v3 + IL_00a5: tail. call valuetype TailcallVerify.ValueType3Bytes TailcallVerify.Condition21::CalleeIsEven1(int32, + int32, + int32, + int32, + int32, + valuetype TailcallVerify.ValueType3Bytes) + IL_00aa: ret + } // end of method Condition21::CalleeIsOdd1 + + .method private hidebysig static valuetype TailcallVerify.ValueType3Bytes + CalleeIsEven1(int32 i, + int32 i2, + int32 i3, + int32 i4, + int32 i5, + valuetype TailcallVerify.ValueType3Bytes v3) cil managed + { + // Code size 171 (0xab) + .maxstack 6 + .locals init ([0] int32 data, + [1] int32* pData, + [2] native int p, + [3] valuetype TailcallVerify.ValueType3Bytes CS$0$0000) + IL_0000: ldloca.s data + IL_0002: conv.u + IL_0003: stloc.1 + IL_0004: ldloca.s p + IL_0006: ldloc.1 + IL_0007: call instance void [mscorlib]System.IntPtr::.ctor(void*) + IL_000c: ldsfld class [mscorlib]System.Collections.Generic.List`1 TailcallVerify.Condition21::evenList + IL_0011: ldloca.s p + IL_0013: call instance int64 [mscorlib]System.IntPtr::ToInt64() + IL_0018: callvirt instance void class [mscorlib]System.Collections.Generic.List`1::Add(!0) + IL_001d: ldarg.1 + IL_001e: ldc.i4.1 + IL_001f: bne.un.s IL_004a + + IL_0021: ldarg.2 + IL_0022: ldc.i4.2 + IL_0023: bne.un.s IL_004a + + IL_0025: ldarg.3 + IL_0026: ldc.i4.3 + IL_0027: bne.un.s IL_004a + + IL_0029: ldarg.s i5 + IL_002b: ldc.i4.4 + IL_002c: bne.un.s IL_004a + + IL_002e: ldarga.s v3 + IL_0030: ldfld uint8 TailcallVerify.ValueType3Bytes::i1 + IL_0035: ldc.i4 0xff + IL_003a: bne.un.s IL_004a + + IL_003c: ldarga.s v3 + IL_003e: ldfld int16 TailcallVerify.ValueType3Bytes::i2 + IL_0043: ldc.i4 0xffff8000 + IL_0048: beq.s IL_005b + + IL_004a: ldstr "FAILED: Passed in arguments are wrong..." + IL_004f: call void [System.Console]System.Console::WriteLine(string) + IL_0054: ldc.i4.s 101 + IL_0056: stsfld int32 TailcallVerify.Condition21::Result + IL_005b: ldc.i4.0 + IL_005c: newobj instance void [mscorlib]System.Diagnostics.StackFrame::.ctor(bool) + IL_0061: callvirt instance class [mscorlib]System.Reflection.MethodBase [mscorlib]System.Diagnostics.StackFrame::GetMethod() + IL_0066: callvirt instance string [mscorlib]System.Reflection.MemberInfo::get_Name() + IL_006b: ldstr "Callee" + IL_0070: callvirt instance int32 [mscorlib]System.String::IndexOf(string) + IL_0075: ldc.i4.m1 + IL_0076: bne.un.s IL_0089 + + IL_0078: ldstr "FAILED: CalleeIsEven3 was inlined..." + IL_007d: call void [System.Console]System.Console::WriteLine(string) + IL_0082: ldc.i4.s 101 + IL_0084: stsfld int32 TailcallVerify.Condition21::Result + IL_0089: ldarg.0 + IL_008a: brtrue.s IL_009b + + IL_008c: ldc.i4.1 + IL_008d: ldarg.0 + IL_008e: div + IL_008f: starg.s i + IL_0091: ldloca.s CS$0$0000 + IL_0093: initobj TailcallVerify.ValueType3Bytes + IL_0099: ldloc.3 + IL_009a: ret + + IL_009b: ldarg.0 + IL_009c: ldc.i4.1 + IL_009d: sub + IL_009e: ldarg.1 + IL_009f: ldarg.2 + IL_00a0: ldarg.3 + IL_00a1: ldarg.s i5 + IL_00a3: ldarg.s v3 + IL_00a5: tail. call valuetype TailcallVerify.ValueType3Bytes TailcallVerify.Condition21::CalleeIsOdd1(int32, + int32, + int32, + int32, + int32, + valuetype TailcallVerify.ValueType3Bytes) + IL_00aa: ret + } // end of method Condition21::CalleeIsEven1 + + .method public hidebysig static int32 Test2() cil managed nooptimization + { + // Code size 368 (0x170) + .maxstack 3 + .locals init ([0] class [mscorlib]System.Exception e, + [1] int64 l, + [2] int64 V_2, + [3] valuetype [mscorlib]System.Collections.Generic.List`1/Enumerator CS$5$0000, + [4] valuetype [mscorlib]System.Collections.Generic.List`1/Enumerator CS$5$0001) + IL_0000: ldstr "Executing Condition21.Test2 - Caller: Arguments: N" + + "one - ReturnType: void; CalleeIsOdd3: Arguments: int, int, int, int, 3 " + + "byte struct - ReturnType: 3 byte struct; CalleeIsEven3: Arguments: int," + + " int, int, int, 3 byte struct - ReturnType: 3 byte struct;" + IL_0005: call void [System.Console]System.Console::WriteLine(string) + IL_000a: ldc.i4.s 100 + IL_000c: stsfld int32 TailcallVerify.Condition21::Result + IL_0011: ldsfld class [mscorlib]System.Collections.Generic.List`1 TailcallVerify.Condition21::evenList + IL_0016: callvirt instance void class [mscorlib]System.Collections.Generic.List`1::Clear() + IL_001b: ldsfld class [mscorlib]System.Collections.Generic.List`1 TailcallVerify.Condition21::oddList + IL_0020: callvirt instance void class [mscorlib]System.Collections.Generic.List`1::Clear() + .try + { + IL_0025: call void TailcallVerify.Condition21::Caller2() + IL_002a: leave.s IL_0083 + + } // end .try + catch [mscorlib]System.Exception + { + IL_002c: stloc.0 + IL_002d: ldloc.0 + IL_002e: isinst [mscorlib]System.DivideByZeroException + IL_0033: brtrue.s IL_003e + + IL_0035: ldc.i4.s 101 + IL_0037: stsfld int32 TailcallVerify.Condition21::Result + IL_003c: rethrow + IL_003e: ldloc.0 + IL_003f: callvirt instance string [mscorlib]System.Exception::get_StackTrace() + IL_0044: ldstr "Caller" + IL_0049: callvirt instance int32 [mscorlib]System.String::IndexOf(string) + IL_004e: ldc.i4.m1 + IL_004f: beq.s IL_0081 + + IL_0051: ldstr "FAILED: Found the word 'Caller' in the stacktrace." + IL_0056: call void [System.Console]System.Console::WriteLine(string) + IL_005b: ldstr "------------------------------------------------" + IL_0060: call void [System.Console]System.Console::WriteLine(string) + IL_0065: call void [System.Console]System.Console::WriteLine() + IL_006a: ldloc.0 + IL_006b: callvirt instance string [mscorlib]System.Exception::get_StackTrace() + IL_0070: call void [System.Console]System.Console::WriteLine(string) + IL_0075: call void [System.Console]System.Console::WriteLine() + IL_007a: ldc.i4.s 101 + IL_007c: stsfld int32 TailcallVerify.Condition21::Result + IL_0081: leave.s IL_0083 + + } // end handler + IL_0083: ldsfld class [mscorlib]System.Collections.Generic.List`1 TailcallVerify.Condition21::evenList + IL_0088: call class [mscorlib]System.Collections.Generic.IEnumerable`1 [System.Linq]System.Linq.Enumerable::Distinct(class [mscorlib]System.Collections.Generic.IEnumerable`1) + IL_008d: call int32 [System.Linq]System.Linq.Enumerable::Count(class [mscorlib]System.Collections.Generic.IEnumerable`1) + IL_0092: ldc.i4.2 + IL_0093: beq.s IL_00e4 + + IL_0095: ldstr "FAILED: The local on the stack for CalleeIsEven3 s" + + "hifted. (should have always the same address except for the first one.)" + IL_009a: call void [System.Console]System.Console::WriteLine(string) + IL_009f: ldsfld class [mscorlib]System.Collections.Generic.List`1 TailcallVerify.Condition21::evenList + IL_00a4: callvirt instance valuetype [mscorlib]System.Collections.Generic.List`1/Enumerator class [mscorlib]System.Collections.Generic.List`1::GetEnumerator() + IL_00a9: stloc.3 + .try + { + IL_00aa: br.s IL_00c4 + + IL_00ac: ldloca.s CS$5$0000 + IL_00ae: call instance !0 valuetype [mscorlib]System.Collections.Generic.List`1/Enumerator::get_Current() + IL_00b3: stloc.1 + IL_00b4: ldstr "0x{0:x8}" + IL_00b9: ldloc.1 + IL_00ba: box [mscorlib]System.Int64 + IL_00bf: call void [System.Console]System.Console::WriteLine(string, + object) + IL_00c4: ldloca.s CS$5$0000 + IL_00c6: call instance bool valuetype [mscorlib]System.Collections.Generic.List`1/Enumerator::MoveNext() + IL_00cb: brtrue.s IL_00ac + + IL_00cd: leave.s IL_00dd + + } // end .try + finally + { + IL_00cf: ldloca.s CS$5$0000 + IL_00d1: constrained. valuetype [mscorlib]System.Collections.Generic.List`1/Enumerator + IL_00d7: callvirt instance void [mscorlib]System.IDisposable::Dispose() + IL_00dc: endfinally + } // end handler + IL_00dd: ldc.i4.s 101 + IL_00df: stsfld int32 TailcallVerify.Condition21::Result + IL_00e4: ldsfld class [mscorlib]System.Collections.Generic.List`1 TailcallVerify.Condition21::oddList + IL_00e9: call class [mscorlib]System.Collections.Generic.IEnumerable`1 [System.Linq]System.Linq.Enumerable::Distinct(class [mscorlib]System.Collections.Generic.IEnumerable`1) + IL_00ee: call int32 [System.Linq]System.Linq.Enumerable::Count(class [mscorlib]System.Collections.Generic.IEnumerable`1) + IL_00f3: ldc.i4.1 + IL_00f4: beq.s IL_0146 + + IL_00f6: ldstr "FAILED: The local on the stack for CalleeIsOdd3 sh" + + "ifted. (should have always the same address)" + IL_00fb: call void [System.Console]System.Console::WriteLine(string) + IL_0100: ldsfld class [mscorlib]System.Collections.Generic.List`1 TailcallVerify.Condition21::oddList + IL_0105: callvirt instance valuetype [mscorlib]System.Collections.Generic.List`1/Enumerator class [mscorlib]System.Collections.Generic.List`1::GetEnumerator() + IL_010a: stloc.s CS$5$0001 + .try + { + IL_010c: br.s IL_0126 + + IL_010e: ldloca.s CS$5$0001 + IL_0110: call instance !0 valuetype [mscorlib]System.Collections.Generic.List`1/Enumerator::get_Current() + IL_0115: stloc.2 + IL_0116: ldstr "0x{0:x8}" + IL_011b: ldloc.2 + IL_011c: box [mscorlib]System.Int64 + IL_0121: call void [System.Console]System.Console::WriteLine(string, + object) + IL_0126: ldloca.s CS$5$0001 + IL_0128: call instance bool valuetype [mscorlib]System.Collections.Generic.List`1/Enumerator::MoveNext() + IL_012d: brtrue.s IL_010e + + IL_012f: leave.s IL_013f + + } // end .try + finally + { + IL_0131: ldloca.s CS$5$0001 + IL_0133: constrained. valuetype [mscorlib]System.Collections.Generic.List`1/Enumerator + IL_0139: callvirt instance void [mscorlib]System.IDisposable::Dispose() + IL_013e: endfinally + } // end handler + IL_013f: ldc.i4.s 101 + IL_0141: stsfld int32 TailcallVerify.Condition21::Result + IL_0146: ldstr "Execution finished - Test " + IL_014b: ldsfld int32 TailcallVerify.Condition21::Result + IL_0150: ldc.i4.s 100 + IL_0152: beq.s IL_015b + + IL_0154: ldstr "FAILED" + IL_0159: br.s IL_0160 + + IL_015b: ldstr "PASSED" + IL_0160: call string [mscorlib]System.String::Concat(string, + string) + IL_0165: call void [System.Console]System.Console::WriteLine(string) + IL_016a: ldsfld int32 TailcallVerify.Condition21::Result + IL_016f: ret + } // end of method Condition21::Test2 + + .method private hidebysig static void Caller2() cil managed + { + // Code size 66 (0x42) + .maxstack 4 + .locals init ([0] valuetype TailcallVerify.ValueType3Bytes CS$0$0000) + IL_0000: ldc.i4.0 + IL_0001: newobj instance void [mscorlib]System.Diagnostics.StackFrame::.ctor(bool) + IL_0006: callvirt instance class [mscorlib]System.Reflection.MethodBase [mscorlib]System.Diagnostics.StackFrame::GetMethod() + IL_000b: callvirt instance string [mscorlib]System.Reflection.MemberInfo::get_Name() + IL_0010: ldstr "Caller" + IL_0015: callvirt instance int32 [mscorlib]System.String::IndexOf(string) + IL_001a: ldc.i4.m1 + IL_001b: bne.un.s IL_002e + + IL_001d: ldstr "FAILED: Caller3 was inlined..." + IL_0022: call void [System.Console]System.Console::WriteLine(string) + IL_0027: ldc.i4.s 101 + IL_0029: stsfld int32 TailcallVerify.Condition21::Result + IL_002e: ldc.i4.s 20 + IL_0030: ldc.i4.1 + IL_0031: ldc.i4.2 + IL_0032: ldloca.s CS$0$0000 + IL_0034: initobj TailcallVerify.ValueType3Bytes + IL_003a: ldloc.0 + IL_003b: tail. call valuetype TailcallVerify.ValueType3Bytes TailcallVerify.Condition21::CalleeIsEven2(int32, + int32, + int32, + valuetype TailcallVerify.ValueType3Bytes) + IL_0040: pop + IL_0041: ret + } // end of method Condition21::Caller2 + + .method private hidebysig static valuetype TailcallVerify.ValueType3Bytes + CalleeIsOdd2(int32 i, + int32 i2, + int32 i3, + int32 i4, + int32 i5, + valuetype TailcallVerify.ValueType3Bytes v3, + int32 i6, + int32 i7, + int32 i8, + int32 i9, + int32 i10, + int32 i11, + int32 i12) cil managed + { + // Code size 116 (0x74) + .maxstack 4 + .locals init ([0] int32 data, + [1] int32* pData, + [2] native int p, + [3] valuetype TailcallVerify.ValueType3Bytes CS$0$0000) + IL_0000: ldloca.s data + IL_0002: conv.u + IL_0003: stloc.1 + IL_0004: ldloca.s p + IL_0006: ldloc.1 + IL_0007: call instance void [mscorlib]System.IntPtr::.ctor(void*) + IL_000c: ldsfld class [mscorlib]System.Collections.Generic.List`1 TailcallVerify.Condition21::oddList + IL_0011: ldloca.s p + IL_0013: call instance int64 [mscorlib]System.IntPtr::ToInt64() + IL_0018: callvirt instance void class [mscorlib]System.Collections.Generic.List`1::Add(!0) + IL_001d: ldc.i4.0 + IL_001e: newobj instance void [mscorlib]System.Diagnostics.StackFrame::.ctor(bool) + IL_0023: callvirt instance class [mscorlib]System.Reflection.MethodBase [mscorlib]System.Diagnostics.StackFrame::GetMethod() + IL_0028: callvirt instance string [mscorlib]System.Reflection.MemberInfo::get_Name() + IL_002d: ldstr "Callee" + IL_0032: callvirt instance int32 [mscorlib]System.String::IndexOf(string) + IL_0037: ldc.i4.m1 + IL_0038: bne.un.s IL_004b + + IL_003a: ldstr "FAILED: CalleeIsOdd3 was inlined..." + IL_003f: call void [System.Console]System.Console::WriteLine(string) + IL_0044: ldc.i4.s 101 + IL_0046: stsfld int32 TailcallVerify.Condition21::Result + IL_004b: ldarg.0 + IL_004c: brtrue.s IL_0067 + + IL_004e: ldstr "IsOdd" + IL_0053: call void [System.Console]System.Console::WriteLine(string) + IL_0058: ldc.i4.1 + IL_0059: ldarg.0 + IL_005a: div + IL_005b: starg.s i + IL_005d: ldloca.s CS$0$0000 + IL_005f: initobj TailcallVerify.ValueType3Bytes + IL_0065: ldloc.3 + IL_0066: ret + + IL_0067: ldarg.0 + IL_0068: ldc.i4.1 + IL_0069: sub + IL_006a: ldarg.1 + IL_006b: ldarg.2 + IL_006c: ldarg.s v3 + IL_006e: tail. call valuetype TailcallVerify.ValueType3Bytes TailcallVerify.Condition21::CalleeIsEven2(int32, + int32, + int32, + valuetype TailcallVerify.ValueType3Bytes) + IL_0073: ret + } // end of method Condition21::CalleeIsOdd2 + + .method private hidebysig static valuetype TailcallVerify.ValueType3Bytes + CalleeIsEven2(int32 i, + int32 i2, + int32 i3, + valuetype TailcallVerify.ValueType3Bytes v3) cil managed + { + // Code size 124 (0x7c) + .maxstack 13 + .locals init ([0] int32 data, + [1] int32* pData, + [2] native int p, + [3] valuetype TailcallVerify.ValueType3Bytes CS$0$0000) + IL_0000: ldloca.s data + IL_0002: conv.u + IL_0003: stloc.1 + IL_0004: ldloca.s p + IL_0006: ldloc.1 + IL_0007: call instance void [mscorlib]System.IntPtr::.ctor(void*) + IL_000c: ldsfld class [mscorlib]System.Collections.Generic.List`1 TailcallVerify.Condition21::evenList + IL_0011: ldloca.s p + IL_0013: call instance int64 [mscorlib]System.IntPtr::ToInt64() + IL_0018: callvirt instance void class [mscorlib]System.Collections.Generic.List`1::Add(!0) + IL_001d: ldc.i4.0 + IL_001e: newobj instance void [mscorlib]System.Diagnostics.StackFrame::.ctor(bool) + IL_0023: callvirt instance class [mscorlib]System.Reflection.MethodBase [mscorlib]System.Diagnostics.StackFrame::GetMethod() + IL_0028: callvirt instance string [mscorlib]System.Reflection.MemberInfo::get_Name() + IL_002d: ldstr "Callee" + IL_0032: callvirt instance int32 [mscorlib]System.String::IndexOf(string) + IL_0037: ldc.i4.m1 + IL_0038: bne.un.s IL_004b + + IL_003a: ldstr "FAILED: CalleeIsEven3 was inlined..." + IL_003f: call void [System.Console]System.Console::WriteLine(string) + IL_0044: ldc.i4.s 101 + IL_0046: stsfld int32 TailcallVerify.Condition21::Result + IL_004b: ldarg.0 + IL_004c: brtrue.s IL_0067 + + IL_004e: ldstr "IsEven" + IL_0053: call void [System.Console]System.Console::WriteLine(string) + IL_0058: ldc.i4.1 + IL_0059: ldarg.0 + IL_005a: div + IL_005b: starg.s i + IL_005d: ldloca.s CS$0$0000 + IL_005f: initobj TailcallVerify.ValueType3Bytes + IL_0065: ldloc.3 + IL_0066: ret + + IL_0067: ldarg.0 + IL_0068: ldc.i4.1 + IL_0069: sub + IL_006a: ldarg.1 + IL_006b: ldarg.2 + IL_006c: ldarg.2 + IL_006d: ldarg.1 + IL_006e: ldarg.3 + IL_006f: ldarg.2 + IL_0070: ldarg.1 + IL_0071: ldarg.0 + IL_0072: ldc.i4.3 + IL_0073: ldc.i4.4 + IL_0074: ldc.i4.5 + IL_0075: ldc.i4.6 + IL_0076: tail. call valuetype TailcallVerify.ValueType3Bytes TailcallVerify.Condition21::CalleeIsOdd2(int32, + int32, + int32, + int32, + int32, + valuetype TailcallVerify.ValueType3Bytes, + int32, + int32, + int32, + int32, + int32, + int32, + int32) + IL_007b: ret + } // end of method Condition21::CalleeIsEven2 + + .method public hidebysig static int32 Test3() cil managed nooptimization + { + // Code size 394 (0x18a) + .maxstack 3 + .locals init ([0] class [mscorlib]System.Threading.Thread t1, + [1] class [mscorlib]System.Exception e, + [2] int64 l, + [3] int64 V_3, + [4] valuetype [mscorlib]System.Collections.Generic.List`1/Enumerator CS$5$0000, + [5] valuetype [mscorlib]System.Collections.Generic.List`1/Enumerator CS$5$0001) + IL_0000: ldstr "Executing Condition21.Test3 - Caller: Arguments: N" + + "one - ReturnType: void; CalleeIsOdd3: Arguments: int, int, int, int, 3 " + + "byte struct - ReturnType: 3 byte struct; CalleeIsEven3: Arguments: int," + + " int, int, int, 3 byte struct - ReturnType: 3 byte struct;" + IL_0005: call void [System.Console]System.Console::WriteLine(string) + IL_000a: ldc.i4.s 100 + IL_000c: stsfld int32 TailcallVerify.Condition21::Result + IL_0011: ldsfld class [mscorlib]System.Collections.Generic.List`1 TailcallVerify.Condition21::evenList + IL_0016: callvirt instance void class [mscorlib]System.Collections.Generic.List`1::Clear() + IL_001b: ldsfld class [mscorlib]System.Collections.Generic.List`1 TailcallVerify.Condition21::oddList + IL_0020: callvirt instance void class [mscorlib]System.Collections.Generic.List`1::Clear() + .try + { + IL_0025: ldnull + IL_0026: ldftn void TailcallVerify.Condition21::Caller3() + IL_002c: newobj instance void [mscorlib]System.Threading.ThreadStart::.ctor(object, + native int) + IL_0031: newobj instance void [mscorlib]System.Threading.Thread::.ctor(class [mscorlib]System.Threading.ThreadStart) + IL_0036: stloc.0 + IL_0037: ldloc.0 + IL_0038: callvirt instance void [mscorlib]System.Threading.Thread::Start() + IL_003d: ldloc.0 + IL_003e: callvirt instance void [mscorlib]System.Threading.Thread::Join() + IL_0043: leave.s IL_009c + + } // end .try + catch [mscorlib]System.Exception + { + IL_0045: stloc.1 + IL_0046: ldloc.1 + IL_0047: isinst [mscorlib]System.DivideByZeroException + IL_004c: brtrue.s IL_0057 + + IL_004e: ldc.i4.s 101 + IL_0050: stsfld int32 TailcallVerify.Condition21::Result + IL_0055: rethrow + IL_0057: ldloc.1 + IL_0058: callvirt instance string [mscorlib]System.Exception::get_StackTrace() + IL_005d: ldstr "Caller" + IL_0062: callvirt instance int32 [mscorlib]System.String::IndexOf(string) + IL_0067: ldc.i4.m1 + IL_0068: beq.s IL_009a + + IL_006a: ldstr "FAILED: Found the word 'Caller' in the stacktrace." + IL_006f: call void [System.Console]System.Console::WriteLine(string) + IL_0074: ldstr "------------------------------------------------" + IL_0079: call void [System.Console]System.Console::WriteLine(string) + IL_007e: call void [System.Console]System.Console::WriteLine() + IL_0083: ldloc.1 + IL_0084: callvirt instance string [mscorlib]System.Exception::get_StackTrace() + IL_0089: call void [System.Console]System.Console::WriteLine(string) + IL_008e: call void [System.Console]System.Console::WriteLine() + IL_0093: ldc.i4.s 101 + IL_0095: stsfld int32 TailcallVerify.Condition21::Result + IL_009a: leave.s IL_009c + + } // end handler + IL_009c: ldsfld class [mscorlib]System.Collections.Generic.List`1 TailcallVerify.Condition21::evenList + IL_00a1: call class [mscorlib]System.Collections.Generic.IEnumerable`1 [System.Linq]System.Linq.Enumerable::Distinct(class [mscorlib]System.Collections.Generic.IEnumerable`1) + IL_00a6: call int32 [System.Linq]System.Linq.Enumerable::Count(class [mscorlib]System.Collections.Generic.IEnumerable`1) + IL_00ab: ldc.i4.1 + IL_00ac: beq.s IL_00fe + + IL_00ae: ldstr "FAILED: The local on the stack for CalleeIsEven3 s" + + "hifted. (should have always the same address)" + IL_00b3: call void [System.Console]System.Console::WriteLine(string) + IL_00b8: ldsfld class [mscorlib]System.Collections.Generic.List`1 TailcallVerify.Condition21::evenList + IL_00bd: callvirt instance valuetype [mscorlib]System.Collections.Generic.List`1/Enumerator class [mscorlib]System.Collections.Generic.List`1::GetEnumerator() + IL_00c2: stloc.s CS$5$0000 + .try + { + IL_00c4: br.s IL_00de + + IL_00c6: ldloca.s CS$5$0000 + IL_00c8: call instance !0 valuetype [mscorlib]System.Collections.Generic.List`1/Enumerator::get_Current() + IL_00cd: stloc.2 + IL_00ce: ldstr "0x{0:x8}" + IL_00d3: ldloc.2 + IL_00d4: box [mscorlib]System.Int64 + IL_00d9: call void [System.Console]System.Console::WriteLine(string, + object) + IL_00de: ldloca.s CS$5$0000 + IL_00e0: call instance bool valuetype [mscorlib]System.Collections.Generic.List`1/Enumerator::MoveNext() + IL_00e5: brtrue.s IL_00c6 + + IL_00e7: leave.s IL_00f7 + + } // end .try + finally + { + IL_00e9: ldloca.s CS$5$0000 + IL_00eb: constrained. valuetype [mscorlib]System.Collections.Generic.List`1/Enumerator + IL_00f1: callvirt instance void [mscorlib]System.IDisposable::Dispose() + IL_00f6: endfinally + } // end handler + IL_00f7: ldc.i4.s 101 + IL_00f9: stsfld int32 TailcallVerify.Condition21::Result + IL_00fe: ldsfld class [mscorlib]System.Collections.Generic.List`1 TailcallVerify.Condition21::oddList + IL_0103: call class [mscorlib]System.Collections.Generic.IEnumerable`1 [System.Linq]System.Linq.Enumerable::Distinct(class [mscorlib]System.Collections.Generic.IEnumerable`1) + IL_0108: call int32 [System.Linq]System.Linq.Enumerable::Count(class [mscorlib]System.Collections.Generic.IEnumerable`1) + IL_010d: ldc.i4.1 + IL_010e: beq.s IL_0160 + + IL_0110: ldstr "FAILED: The local on the stack for CalleeIsOdd3 sh" + + "ifted. (should have always the same address)" + IL_0115: call void [System.Console]System.Console::WriteLine(string) + IL_011a: ldsfld class [mscorlib]System.Collections.Generic.List`1 TailcallVerify.Condition21::oddList + IL_011f: callvirt instance valuetype [mscorlib]System.Collections.Generic.List`1/Enumerator class [mscorlib]System.Collections.Generic.List`1::GetEnumerator() + IL_0124: stloc.s CS$5$0001 + .try + { + IL_0126: br.s IL_0140 + + IL_0128: ldloca.s CS$5$0001 + IL_012a: call instance !0 valuetype [mscorlib]System.Collections.Generic.List`1/Enumerator::get_Current() + IL_012f: stloc.3 + IL_0130: ldstr "0x{0:x8}" + IL_0135: ldloc.3 + IL_0136: box [mscorlib]System.Int64 + IL_013b: call void [System.Console]System.Console::WriteLine(string, + object) + IL_0140: ldloca.s CS$5$0001 + IL_0142: call instance bool valuetype [mscorlib]System.Collections.Generic.List`1/Enumerator::MoveNext() + IL_0147: brtrue.s IL_0128 + + IL_0149: leave.s IL_0159 + + } // end .try + finally + { + IL_014b: ldloca.s CS$5$0001 + IL_014d: constrained. valuetype [mscorlib]System.Collections.Generic.List`1/Enumerator + IL_0153: callvirt instance void [mscorlib]System.IDisposable::Dispose() + IL_0158: endfinally + } // end handler + IL_0159: ldc.i4.s 101 + IL_015b: stsfld int32 TailcallVerify.Condition21::Result + IL_0160: ldstr "Execution finished - Test " + IL_0165: ldsfld int32 TailcallVerify.Condition21::Result + IL_016a: ldc.i4.s 100 + IL_016c: beq.s IL_0175 + + IL_016e: ldstr "FAILED" + IL_0173: br.s IL_017a + + IL_0175: ldstr "PASSED" + IL_017a: call string [mscorlib]System.String::Concat(string, + string) + IL_017f: call void [System.Console]System.Console::WriteLine(string) + IL_0184: ldsfld int32 TailcallVerify.Condition21::Result + IL_0189: ret + } // end of method Condition21::Test3 + + .method private hidebysig static void Caller3() cil managed + { + // Code size 73 (0x49) + .maxstack 6 + .locals init ([0] valuetype TailcallVerify.ValueType3Bytes CS$0$0000) + IL_0000: ldc.i4.0 + IL_0001: newobj instance void [mscorlib]System.Diagnostics.StackFrame::.ctor(bool) + IL_0006: callvirt instance class [mscorlib]System.Reflection.MethodBase [mscorlib]System.Diagnostics.StackFrame::GetMethod() + IL_000b: callvirt instance string [mscorlib]System.Reflection.MemberInfo::get_Name() + IL_0010: ldstr "Caller" + IL_0015: callvirt instance int32 [mscorlib]System.String::IndexOf(string) + IL_001a: ldc.i4.m1 + IL_001b: bne.un.s IL_002e + + IL_001d: ldstr "FAILED: Caller3 was inlined..." + IL_0022: call void [System.Console]System.Console::WriteLine(string) + IL_0027: ldc.i4.s 101 + IL_0029: stsfld int32 TailcallVerify.Condition21::Result + .try + { + IL_002e: ldc.i4.s 20 + IL_0030: ldc.i4.1 + IL_0031: ldc.i4.2 + IL_0032: ldc.i4.3 + IL_0033: ldc.i4.4 + IL_0034: ldloca.s CS$0$0000 + IL_0036: initobj TailcallVerify.ValueType3Bytes + IL_003c: ldloc.0 + IL_003d: call valuetype TailcallVerify.ValueType3Bytes TailcallVerify.Condition21::CallerIsOdd3(int32, + int32, + int32, + int32, + int32, + valuetype TailcallVerify.ValueType3Bytes) + IL_0042: pop + IL_0043: leave.s IL_0048 + + } // end .try + catch [mscorlib]System.DivideByZeroException + { + IL_0045: pop + IL_0046: leave.s IL_0048 + + } // end handler + IL_0048: ret + } // end of method Condition21::Caller3 + + .method private hidebysig static valuetype TailcallVerify.ValueType3Bytes + CallerIsOdd3(int32 i, + int32 i2, + int32 i3, + int32 i4, + int32 i5, + valuetype TailcallVerify.ValueType3Bytes v3) cil managed + { + // Code size 14 (0xe) + .maxstack 8 + IL_0000: ldarg.0 + IL_0001: ldarg.1 + IL_0002: ldarg.2 + IL_0003: ldarg.3 + IL_0004: ldarg.s i5 + IL_0006: ldarg.s v3 + IL_0008: tail. call valuetype TailcallVerify.ValueType3Bytes TailcallVerify.Condition21::CalleeIsOdd3(int32, + int32, + int32, + int32, + int32, + valuetype TailcallVerify.ValueType3Bytes) + IL_000d: ret + } // end of method Condition21::CallerIsOdd3 + + .method private hidebysig static valuetype TailcallVerify.ValueType3Bytes + CalleeIsOdd3(int32 i, + int32 i2, + int32 i3, + int32 i4, + int32 i5, + valuetype TailcallVerify.ValueType3Bytes v3) cil managed + { + // Code size 109 (0x6d) + .maxstack 6 + .locals init ([0] int32 data, + [1] int32* pData, + [2] native int p, + [3] valuetype TailcallVerify.ValueType3Bytes CS$0$0000) + IL_0000: ldloca.s data + IL_0002: conv.u + IL_0003: stloc.1 + IL_0004: ldloca.s p + IL_0006: ldloc.1 + IL_0007: call instance void [mscorlib]System.IntPtr::.ctor(void*) + IL_000c: ldsfld class [mscorlib]System.Collections.Generic.List`1 TailcallVerify.Condition21::oddList + IL_0011: ldloca.s p + IL_0013: call instance int64 [mscorlib]System.IntPtr::ToInt64() + IL_0018: callvirt instance void class [mscorlib]System.Collections.Generic.List`1::Add(!0) + IL_001d: ldc.i4.0 + IL_001e: newobj instance void [mscorlib]System.Diagnostics.StackFrame::.ctor(bool) + IL_0023: callvirt instance class [mscorlib]System.Reflection.MethodBase [mscorlib]System.Diagnostics.StackFrame::GetMethod() + IL_0028: callvirt instance string [mscorlib]System.Reflection.MemberInfo::get_Name() + IL_002d: ldstr "Callee" + IL_0032: callvirt instance int32 [mscorlib]System.String::IndexOf(string) + IL_0037: ldc.i4.m1 + IL_0038: bne.un.s IL_004b + + IL_003a: ldstr "FAILED: CalleeIsOdd3 was inlined..." + IL_003f: call void [System.Console]System.Console::WriteLine(string) + IL_0044: ldc.i4.s 101 + IL_0046: stsfld int32 TailcallVerify.Condition21::Result + IL_004b: ldarg.0 + IL_004c: brtrue.s IL_005d + + IL_004e: ldc.i4.1 + IL_004f: ldarg.0 + IL_0050: div + IL_0051: starg.s i + IL_0053: ldloca.s CS$0$0000 + IL_0055: initobj TailcallVerify.ValueType3Bytes + IL_005b: ldloc.3 + IL_005c: ret + + IL_005d: ldarg.0 + IL_005e: ldc.i4.1 + IL_005f: sub + IL_0060: ldarg.1 + IL_0061: ldarg.2 + IL_0062: ldarg.3 + IL_0063: ldarg.s i5 + IL_0065: ldarg.s v3 + IL_0067: tail. call valuetype TailcallVerify.ValueType3Bytes TailcallVerify.Condition21::CalleeIsEven3(int32, + int32, + int32, + int32, + int32, + valuetype TailcallVerify.ValueType3Bytes) + IL_006c: ret + } // end of method Condition21::CalleeIsOdd3 + + .method private hidebysig static valuetype TailcallVerify.ValueType3Bytes + CalleeIsEven3(int32 i, + int32 i2, + int32 i3, + int32 i4, + int32 i5, + valuetype TailcallVerify.ValueType3Bytes v3) cil managed + { + // Code size 109 (0x6d) + .maxstack 6 + .locals init ([0] int32 data, + [1] int32* pData, + [2] native int p, + [3] valuetype TailcallVerify.ValueType3Bytes CS$0$0000) + IL_0000: ldloca.s data + IL_0002: conv.u + IL_0003: stloc.1 + IL_0004: ldloca.s p + IL_0006: ldloc.1 + IL_0007: call instance void [mscorlib]System.IntPtr::.ctor(void*) + IL_000c: ldsfld class [mscorlib]System.Collections.Generic.List`1 TailcallVerify.Condition21::evenList + IL_0011: ldloca.s p + IL_0013: call instance int64 [mscorlib]System.IntPtr::ToInt64() + IL_0018: callvirt instance void class [mscorlib]System.Collections.Generic.List`1::Add(!0) + IL_001d: ldc.i4.0 + IL_001e: newobj instance void [mscorlib]System.Diagnostics.StackFrame::.ctor(bool) + IL_0023: callvirt instance class [mscorlib]System.Reflection.MethodBase [mscorlib]System.Diagnostics.StackFrame::GetMethod() + IL_0028: callvirt instance string [mscorlib]System.Reflection.MemberInfo::get_Name() + IL_002d: ldstr "Callee" + IL_0032: callvirt instance int32 [mscorlib]System.String::IndexOf(string) + IL_0037: ldc.i4.m1 + IL_0038: bne.un.s IL_004b + + IL_003a: ldstr "FAILED: CalleeIsEven3 was inlined..." + IL_003f: call void [System.Console]System.Console::WriteLine(string) + IL_0044: ldc.i4.s 101 + IL_0046: stsfld int32 TailcallVerify.Condition21::Result + IL_004b: ldarg.0 + IL_004c: brtrue.s IL_005d + + IL_004e: ldc.i4.1 + IL_004f: ldarg.0 + IL_0050: div + IL_0051: starg.s i + IL_0053: ldloca.s CS$0$0000 + IL_0055: initobj TailcallVerify.ValueType3Bytes + IL_005b: ldloc.3 + IL_005c: ret + + IL_005d: ldarg.0 + IL_005e: ldc.i4.1 + IL_005f: sub + IL_0060: ldarg.1 + IL_0061: ldarg.2 + IL_0062: ldarg.3 + IL_0063: ldarg.s i5 + IL_0065: ldarg.s v3 + IL_0067: tail. call valuetype TailcallVerify.ValueType3Bytes TailcallVerify.Condition21::CalleeIsOdd3(int32, + int32, + int32, + int32, + int32, + valuetype TailcallVerify.ValueType3Bytes) + IL_006c: ret + } // end of method Condition21::CalleeIsEven3 + + .method public hidebysig static int32 Test4() cil managed nooptimization + { + // Code size 269 (0x10d) + .maxstack 4 + .locals init ([0] int32 i, + [1] int32 V_1) + IL_0000: ldstr "Executing Condition21.Test4 - Verifying helper fra" + + "me location on the stack." + IL_0005: call void [System.Console]System.Console::WriteLine(string) + IL_000a: ldc.i4.s 100 + IL_000c: stsfld int32 TailcallVerify.Condition21::Result + IL_0011: ldsfld class [mscorlib]System.Collections.Generic.List`1 TailcallVerify.Condition21::oddList + IL_0016: callvirt instance void class [mscorlib]System.Collections.Generic.List`1::Clear() + .try + { + IL_001b: call void TailcallVerify.Condition21::Caller4() + IL_0020: leave.s IL_0025 + + } // end .try + catch [mscorlib]System.Exception + { + IL_0022: pop + IL_0023: leave.s IL_0025 + + } // end handler + IL_0025: ldc.i4.0 + IL_0026: stloc.0 + IL_0027: br.s IL_006a + + IL_0029: ldsfld class [mscorlib]System.Collections.Generic.List`1 TailcallVerify.Condition21::oddList + IL_002e: ldloc.0 + IL_002f: callvirt instance !0 class [mscorlib]System.Collections.Generic.List`1::get_Item(int32) + IL_0034: ldsfld class [mscorlib]System.Collections.Generic.List`1 TailcallVerify.Condition21::oddList + IL_0039: ldloc.0 + IL_003a: ldc.i4.1 + IL_003b: add + IL_003c: callvirt instance !0 class [mscorlib]System.Collections.Generic.List`1::get_Item(int32) + IL_0041: bne.un.s IL_005f + + IL_0043: ldsfld class [mscorlib]System.Collections.Generic.List`1 TailcallVerify.Condition21::oddList + IL_0048: ldloc.0 + IL_0049: ldc.i4.1 + IL_004a: add + IL_004b: callvirt instance !0 class [mscorlib]System.Collections.Generic.List`1::get_Item(int32) + IL_0050: ldsfld class [mscorlib]System.Collections.Generic.List`1 TailcallVerify.Condition21::oddList + IL_0055: ldloc.0 + IL_0056: ldc.i4.2 + IL_0057: add + IL_0058: callvirt instance !0 class [mscorlib]System.Collections.Generic.List`1::get_Item(int32) + IL_005d: beq.s IL_0066 + + IL_005f: ldc.i4.s 101 + IL_0061: stsfld int32 TailcallVerify.Condition21::Result + IL_0066: ldloc.0 + IL_0067: ldc.i4.3 + IL_0068: add + IL_0069: stloc.0 + IL_006a: ldloc.0 + IL_006b: ldc.i4.2 + IL_006c: add + IL_006d: ldsfld class [mscorlib]System.Collections.Generic.List`1 TailcallVerify.Condition21::oddList + IL_0072: callvirt instance int32 class [mscorlib]System.Collections.Generic.List`1::get_Count() + IL_0077: blt.s IL_0029 + + IL_0079: ldsfld int32 TailcallVerify.Condition21::Result + IL_007e: ldc.i4.s 100 + IL_0080: beq.s IL_00e3 + + IL_0082: ldstr "The following shows a list of stack addresses of a" + + " local on the stack." + IL_0087: call void [System.Console]System.Console::WriteLine(string) + IL_008c: ldstr "You should see the same address three times before" + + " it decreases and repeats again." + IL_0091: call void [System.Console]System.Console::WriteLine(string) + IL_0096: ldstr "This happens because the call chain looks like thi" + + "s E->E->E->E->O->O->O->E->E->E->E->O->O->O" + IL_009b: call void [System.Console]System.Console::WriteLine(string) + IL_00a0: ldstr "where E is a method where tailcalls are not allowe" + + "d (it's synchronized) and O is a" + IL_00a5: call void [System.Console]System.Console::WriteLine(string) + IL_00aa: ldstr "method that gets tailcall'ed." + IL_00af: call void [System.Console]System.Console::WriteLine(string) + IL_00b4: ldc.i4.0 + IL_00b5: stloc.1 + IL_00b6: br.s IL_00d6 + + IL_00b8: ldstr "0x{0:x8}" + IL_00bd: ldsfld class [mscorlib]System.Collections.Generic.List`1 TailcallVerify.Condition21::oddList + IL_00c2: ldloc.1 + IL_00c3: callvirt instance !0 class [mscorlib]System.Collections.Generic.List`1::get_Item(int32) + IL_00c8: box [mscorlib]System.Int64 + IL_00cd: call void [System.Console]System.Console::WriteLine(string, + object) + IL_00d2: ldloc.1 + IL_00d3: ldc.i4.1 + IL_00d4: add + IL_00d5: stloc.1 + IL_00d6: ldloc.1 + IL_00d7: ldsfld class [mscorlib]System.Collections.Generic.List`1 TailcallVerify.Condition21::oddList + IL_00dc: callvirt instance int32 class [mscorlib]System.Collections.Generic.List`1::get_Count() + IL_00e1: blt.s IL_00b8 + + IL_00e3: ldstr "Execution finished - Test " + IL_00e8: ldsfld int32 TailcallVerify.Condition21::Result + IL_00ed: ldc.i4.s 100 + IL_00ef: beq.s IL_00f8 + + IL_00f1: ldstr "FAILED" + IL_00f6: br.s IL_00fd + + IL_00f8: ldstr "PASSED" + IL_00fd: call string [mscorlib]System.String::Concat(string, + string) + IL_0102: call void [System.Console]System.Console::WriteLine(string) + IL_0107: ldsfld int32 TailcallVerify.Condition21::Result + IL_010c: ret + } // end of method Condition21::Test4 + + .method private hidebysig static void Caller4() cil managed + { + // Code size 71 (0x47) + .maxstack 6 + .locals init ([0] valuetype TailcallVerify.ValueType3Bytes CS$0$0000) + IL_0000: ldc.i4.0 + IL_0001: newobj instance void [mscorlib]System.Diagnostics.StackFrame::.ctor(bool) + IL_0006: callvirt instance class [mscorlib]System.Reflection.MethodBase [mscorlib]System.Diagnostics.StackFrame::GetMethod() + IL_000b: callvirt instance string [mscorlib]System.Reflection.MemberInfo::get_Name() + IL_0010: ldstr "Caller" + IL_0015: callvirt instance int32 [mscorlib]System.String::IndexOf(string) + IL_001a: ldc.i4.m1 + IL_001b: bne.un.s IL_002e + + IL_001d: ldstr "FAILED: Caller4 was inlined..." + IL_0022: call void [System.Console]System.Console::WriteLine(string) + IL_0027: ldc.i4.s 101 + IL_0029: stsfld int32 TailcallVerify.Condition21::Result + IL_002e: ldc.i4 0xc8 + IL_0033: ldc.i4.1 + IL_0034: ldc.i4.2 + IL_0035: ldc.i4.3 + IL_0036: ldc.i4.4 + IL_0037: ldloca.s CS$0$0000 + IL_0039: initobj TailcallVerify.ValueType3Bytes + IL_003f: ldloc.0 + IL_0040: tail. call valuetype TailcallVerify.ValueType3Bytes TailcallVerify.Condition21::CalleeE4(int32, + int32, + int32, + int32, + int32, + valuetype TailcallVerify.ValueType3Bytes) + IL_0045: pop + IL_0046: ret + } // end of method Condition21::Caller4 + + .method private hidebysig static valuetype TailcallVerify.ValueType3Bytes + CalleeE4(int32 i, + int32 i2, + int32 i3, + int32 i4, + int32 i5, + valuetype TailcallVerify.ValueType3Bytes v3) cil managed synchronized noinlining + { + // Code size 128 (0x80) + .maxstack 6 + .locals init ([0] valuetype TailcallVerify.ValueType3Bytes CS$0$0000) + IL_0000: ldc.i4.0 + IL_0001: newobj instance void [mscorlib]System.Diagnostics.StackFrame::.ctor(bool) + IL_0006: callvirt instance class [mscorlib]System.Reflection.MethodBase [mscorlib]System.Diagnostics.StackFrame::GetMethod() + IL_000b: callvirt instance string [mscorlib]System.Reflection.MemberInfo::get_Name() + IL_0010: ldstr "Callee" + IL_0015: callvirt instance int32 [mscorlib]System.String::IndexOf(string) + IL_001a: ldc.i4.m1 + IL_001b: bne.un.s IL_002e + + IL_001d: ldstr "FAILED: CalleeE4 was inlined..." + IL_0022: call void [System.Console]System.Console::WriteLine(string) + IL_0027: ldc.i4.s 101 + IL_0029: stsfld int32 TailcallVerify.Condition21::Result + IL_002e: ldarg.0 + IL_002f: brtrue.s IL_0046 + + IL_0031: ldarg.0 + IL_0032: volatile. + IL_0034: ldsfld int32 modreq([mscorlib]System.Runtime.CompilerServices.IsVolatile) TailcallVerify.Condition21::zero + IL_0039: div + IL_003a: starg.s i + IL_003c: ldloca.s CS$0$0000 + IL_003e: initobj TailcallVerify.ValueType3Bytes + IL_0044: ldloc.0 + IL_0045: ret + + IL_0046: ldsfld int32 TailcallVerify.Condition21::counterE4 + IL_004b: ldc.i4.0 + IL_004c: ble.s IL_006a + + IL_004e: ldsfld int32 TailcallVerify.Condition21::counterE4 + IL_0053: ldc.i4.1 + IL_0054: sub + IL_0055: stsfld int32 TailcallVerify.Condition21::counterE4 + IL_005a: ldarg.0 + IL_005b: ldc.i4.1 + IL_005c: sub + IL_005d: ldarg.1 + IL_005e: ldarg.2 + IL_005f: ldarg.3 + IL_0060: ldarg.s i5 + IL_0062: ldarg.s v3 + IL_0064: tail. call valuetype TailcallVerify.ValueType3Bytes TailcallVerify.Condition21::CalleeE4(int32, + int32, + int32, + int32, + int32, + valuetype TailcallVerify.ValueType3Bytes) + IL_0069: ret + + IL_006a: ldc.i4.3 + IL_006b: stsfld int32 TailcallVerify.Condition21::counterE4 + IL_0070: ldarg.0 + IL_0071: ldc.i4.1 + IL_0072: sub + IL_0073: ldarg.1 + IL_0074: ldarg.2 + IL_0075: ldarg.3 + IL_0076: ldarg.s i5 + IL_0078: ldarg.s v3 + IL_007a: tail. call valuetype TailcallVerify.ValueType3Bytes TailcallVerify.Condition21::CalleeO4(int32, + int32, + int32, + int32, + int32, + valuetype TailcallVerify.ValueType3Bytes) + IL_007f: ret + } // end of method Condition21::CalleeE4 + + .method private hidebysig static valuetype TailcallVerify.ValueType3Bytes + CalleeO4(int32 i, + int32 i2, + int32 i3, + int32 i4, + int32 i5, + valuetype TailcallVerify.ValueType3Bytes v3) cil managed + { + // Code size 157 (0x9d) + .maxstack 6 + .locals init ([0] int32 data, + [1] int32* pData, + [2] native int p, + [3] valuetype TailcallVerify.ValueType3Bytes CS$0$0000) + IL_0000: ldloca.s data + IL_0002: conv.u + IL_0003: stloc.1 + IL_0004: ldloca.s p + IL_0006: ldloc.1 + IL_0007: call instance void [mscorlib]System.IntPtr::.ctor(void*) + IL_000c: ldsfld class [mscorlib]System.Collections.Generic.List`1 TailcallVerify.Condition21::oddList + IL_0011: ldloca.s p + IL_0013: call instance int64 [mscorlib]System.IntPtr::ToInt64() + IL_0018: callvirt instance void class [mscorlib]System.Collections.Generic.List`1::Add(!0) + IL_001d: ldc.i4.0 + IL_001e: newobj instance void [mscorlib]System.Diagnostics.StackFrame::.ctor(bool) + IL_0023: callvirt instance class [mscorlib]System.Reflection.MethodBase [mscorlib]System.Diagnostics.StackFrame::GetMethod() + IL_0028: callvirt instance string [mscorlib]System.Reflection.MemberInfo::get_Name() + IL_002d: ldstr "Callee" + IL_0032: callvirt instance int32 [mscorlib]System.String::IndexOf(string) + IL_0037: ldc.i4.m1 + IL_0038: bne.un.s IL_004b + + IL_003a: ldstr "FAILED: CalleeO4 was inlined..." + IL_003f: call void [System.Console]System.Console::WriteLine(string) + IL_0044: ldc.i4.s 101 + IL_0046: stsfld int32 TailcallVerify.Condition21::Result + IL_004b: ldarg.0 + IL_004c: brtrue.s IL_0063 + + IL_004e: ldarg.0 + IL_004f: volatile. + IL_0051: ldsfld int32 modreq([mscorlib]System.Runtime.CompilerServices.IsVolatile) TailcallVerify.Condition21::zero + IL_0056: div + IL_0057: starg.s i + IL_0059: ldloca.s CS$0$0000 + IL_005b: initobj TailcallVerify.ValueType3Bytes + IL_0061: ldloc.3 + IL_0062: ret + + IL_0063: ldsfld int32 TailcallVerify.Condition21::counterO4 + IL_0068: ldc.i4.0 + IL_0069: ble.s IL_0087 + + IL_006b: ldsfld int32 TailcallVerify.Condition21::counterO4 + IL_0070: ldc.i4.1 + IL_0071: sub + IL_0072: stsfld int32 TailcallVerify.Condition21::counterO4 + IL_0077: ldarg.0 + IL_0078: ldc.i4.1 + IL_0079: sub + IL_007a: ldarg.1 + IL_007b: ldarg.2 + IL_007c: ldarg.3 + IL_007d: ldarg.s i5 + IL_007f: ldarg.s v3 + IL_0081: tail. call valuetype TailcallVerify.ValueType3Bytes TailcallVerify.Condition21::CalleeO4(int32, + int32, + int32, + int32, + int32, + valuetype TailcallVerify.ValueType3Bytes) + IL_0086: ret + + IL_0087: ldc.i4.2 + IL_0088: stsfld int32 TailcallVerify.Condition21::counterO4 + IL_008d: ldarg.0 + IL_008e: ldc.i4.1 + IL_008f: sub + IL_0090: ldarg.1 + IL_0091: ldarg.2 + IL_0092: ldarg.3 + IL_0093: ldarg.s i5 + IL_0095: ldarg.s v3 + IL_0097: tail. call valuetype TailcallVerify.ValueType3Bytes TailcallVerify.Condition21::CalleeE4(int32, + int32, + int32, + int32, + int32, + valuetype TailcallVerify.ValueType3Bytes) + IL_009c: ret + } // end of method Condition21::CalleeO4 + + .method public hidebysig static int32 Test5() cil managed nooptimization + { + // Code size 387 (0x183) + .maxstack 3 + .locals init ([0] class TailcallVerify.Condition21 con1, + [1] class TailcallVerify.Condition21 con2, + [2] class [mscorlib]System.Threading.Thread t1, + [3] class [mscorlib]System.Threading.Thread t2, + [4] class [mscorlib]System.Exception ex, + [5] int32 i, + [6] int32 V_6) + IL_0000: ldstr "Executing Condition21.Test5 - Verifying helper fra" + + "me location on the stack while using multiple threads." + IL_0005: call void [System.Console]System.Console::WriteLine(string) + IL_000a: ldc.i4.s 100 + IL_000c: stsfld int32 TailcallVerify.Condition21::Result + IL_0011: newobj instance void TailcallVerify.Condition21::.ctor() + IL_0016: stloc.0 + IL_0017: newobj instance void TailcallVerify.Condition21::.ctor() + IL_001c: stloc.1 + IL_001d: ldloc.0 + IL_001e: ldftn instance void TailcallVerify.Condition21::Caller5() + IL_0024: newobj instance void [mscorlib]System.Threading.ThreadStart::.ctor(object, + native int) + IL_0029: newobj instance void [mscorlib]System.Threading.Thread::.ctor(class [mscorlib]System.Threading.ThreadStart) + IL_002e: stloc.2 + IL_002f: ldloc.1 + IL_0030: ldftn instance void TailcallVerify.Condition21::Caller5() + IL_0036: newobj instance void [mscorlib]System.Threading.ThreadStart::.ctor(object, + native int) + IL_003b: newobj instance void [mscorlib]System.Threading.Thread::.ctor(class [mscorlib]System.Threading.ThreadStart) + IL_0040: stloc.3 + .try + { + IL_0041: ldloc.2 + IL_0042: callvirt instance void [mscorlib]System.Threading.Thread::Start() + IL_0047: ldloc.3 + IL_0048: callvirt instance void [mscorlib]System.Threading.Thread::Start() + IL_004d: ldloc.2 + IL_004e: callvirt instance void [mscorlib]System.Threading.Thread::Join() + IL_0053: ldloc.3 + IL_0054: callvirt instance void [mscorlib]System.Threading.Thread::Join() + IL_0059: leave.s IL_007c + + } // end .try + catch [mscorlib]System.Exception + { + IL_005b: stloc.s ex + IL_005d: ldstr "FAILED: This exception was NOT expected: " + IL_0062: ldloc.s ex + IL_0064: callvirt instance string [mscorlib]System.Exception::get_Message() + IL_0069: call string [mscorlib]System.String::Concat(string, + string) + IL_006e: call void [System.Console]System.Console::WriteLine(string) + IL_0073: ldc.i4.s 101 + IL_0075: stsfld int32 TailcallVerify.Condition21::Result + IL_007a: leave.s IL_007c + + } // end handler + IL_007c: ldloc.0 + IL_007d: callvirt instance void TailcallVerify.Condition21::VerifyThreadList() + IL_0082: ldsfld int32 TailcallVerify.Condition21::Result + IL_0087: ldc.i4.s 100 + IL_0089: bne.un.s IL_0091 + + IL_008b: ldloc.1 + IL_008c: callvirt instance void TailcallVerify.Condition21::VerifyThreadList() + IL_0091: ldsfld int32 TailcallVerify.Condition21::Result + IL_0096: ldc.i4.s 100 + IL_0098: beq IL_0159 + + IL_009d: ldstr "The following shows a list of stack addresses of a" + + " local on the stack." + IL_00a2: call void [System.Console]System.Console::WriteLine(string) + IL_00a7: ldstr "You should see the same address three times before" + + " it decreases and repeats again." + IL_00ac: call void [System.Console]System.Console::WriteLine(string) + IL_00b1: ldstr "This happens because the call chain looks like thi" + + "s E->E->E->E->O->O->O->E->E->E->E->O->O->O" + IL_00b6: call void [System.Console]System.Console::WriteLine(string) + IL_00bb: ldstr "where E is a method where tailcalls are not allowe" + + "d (it's synchronized) and O is a" + IL_00c0: call void [System.Console]System.Console::WriteLine(string) + IL_00c5: ldstr "method that gets tailcall'ed." + IL_00ca: call void [System.Console]System.Console::WriteLine(string) + IL_00cf: call void [System.Console]System.Console::WriteLine() + IL_00d4: ldstr "------ Stack addresses for thread 1. ---------" + IL_00d9: call void [System.Console]System.Console::WriteLine(string) + IL_00de: ldc.i4.0 + IL_00df: stloc.s i + IL_00e1: br.s IL_0105 + + IL_00e3: ldstr "0x{0:x8}" + IL_00e8: ldloc.0 + IL_00e9: ldfld class [mscorlib]System.Collections.Generic.List`1 TailcallVerify.Condition21::threadList + IL_00ee: ldloc.s i + IL_00f0: callvirt instance !0 class [mscorlib]System.Collections.Generic.List`1::get_Item(int32) + IL_00f5: box [mscorlib]System.Int64 + IL_00fa: call void [System.Console]System.Console::WriteLine(string, + object) + IL_00ff: ldloc.s i + IL_0101: ldc.i4.1 + IL_0102: add + IL_0103: stloc.s i + IL_0105: ldloc.s i + IL_0107: ldloc.0 + IL_0108: ldfld class [mscorlib]System.Collections.Generic.List`1 TailcallVerify.Condition21::threadList + IL_010d: callvirt instance int32 class [mscorlib]System.Collections.Generic.List`1::get_Count() + IL_0112: blt.s IL_00e3 + + IL_0114: call void [System.Console]System.Console::WriteLine() + IL_0119: ldstr "------ Stack addresses for thread 2. ---------" + IL_011e: call void [System.Console]System.Console::WriteLine(string) + IL_0123: ldc.i4.0 + IL_0124: stloc.s V_6 + IL_0126: br.s IL_014a + + IL_0128: ldstr "0x{0:x8}" + IL_012d: ldloc.1 + IL_012e: ldfld class [mscorlib]System.Collections.Generic.List`1 TailcallVerify.Condition21::threadList + IL_0133: ldloc.s V_6 + IL_0135: callvirt instance !0 class [mscorlib]System.Collections.Generic.List`1::get_Item(int32) + IL_013a: box [mscorlib]System.Int64 + IL_013f: call void [System.Console]System.Console::WriteLine(string, + object) + IL_0144: ldloc.s V_6 + IL_0146: ldc.i4.1 + IL_0147: add + IL_0148: stloc.s V_6 + IL_014a: ldloc.s V_6 + IL_014c: ldloc.1 + IL_014d: ldfld class [mscorlib]System.Collections.Generic.List`1 TailcallVerify.Condition21::threadList + IL_0152: callvirt instance int32 class [mscorlib]System.Collections.Generic.List`1::get_Count() + IL_0157: blt.s IL_0128 + + IL_0159: ldstr "Execution finished - Test " + IL_015e: ldsfld int32 TailcallVerify.Condition21::Result + IL_0163: ldc.i4.s 100 + IL_0165: beq.s IL_016e + + IL_0167: ldstr "FAILED" + IL_016c: br.s IL_0173 + + IL_016e: ldstr "PASSED" + IL_0173: call string [mscorlib]System.String::Concat(string, + string) + IL_0178: call void [System.Console]System.Console::WriteLine(string) + IL_017d: ldsfld int32 TailcallVerify.Condition21::Result + IL_0182: ret + } // end of method Condition21::Test5 + + .method assembly hidebysig instance void + VerifyThreadList() cil managed + { + // Code size 90 (0x5a) + .maxstack 4 + .locals init ([0] int32 i) + IL_0000: ldc.i4.0 + IL_0001: stloc.0 + IL_0002: br.s IL_0049 + + IL_0004: ldarg.0 + IL_0005: ldfld class [mscorlib]System.Collections.Generic.List`1 TailcallVerify.Condition21::threadList + IL_000a: ldloc.0 + IL_000b: callvirt instance !0 class [mscorlib]System.Collections.Generic.List`1::get_Item(int32) + IL_0010: ldarg.0 + IL_0011: ldfld class [mscorlib]System.Collections.Generic.List`1 TailcallVerify.Condition21::threadList + IL_0016: ldloc.0 + IL_0017: ldc.i4.1 + IL_0018: add + IL_0019: callvirt instance !0 class [mscorlib]System.Collections.Generic.List`1::get_Item(int32) + IL_001e: bne.un.s IL_003e + + IL_0020: ldarg.0 + IL_0021: ldfld class [mscorlib]System.Collections.Generic.List`1 TailcallVerify.Condition21::threadList + IL_0026: ldloc.0 + IL_0027: ldc.i4.1 + IL_0028: add + IL_0029: callvirt instance !0 class [mscorlib]System.Collections.Generic.List`1::get_Item(int32) + IL_002e: ldarg.0 + IL_002f: ldfld class [mscorlib]System.Collections.Generic.List`1 TailcallVerify.Condition21::threadList + IL_0034: ldloc.0 + IL_0035: ldc.i4.2 + IL_0036: add + IL_0037: callvirt instance !0 class [mscorlib]System.Collections.Generic.List`1::get_Item(int32) + IL_003c: beq.s IL_0045 + + IL_003e: ldc.i4.s 101 + IL_0040: stsfld int32 TailcallVerify.Condition21::Result + IL_0045: ldloc.0 + IL_0046: ldc.i4.3 + IL_0047: add + IL_0048: stloc.0 + IL_0049: ldloc.0 + IL_004a: ldc.i4.2 + IL_004b: add + IL_004c: ldarg.0 + IL_004d: ldfld class [mscorlib]System.Collections.Generic.List`1 TailcallVerify.Condition21::threadList + IL_0052: callvirt instance int32 class [mscorlib]System.Collections.Generic.List`1::get_Count() + IL_0057: blt.s IL_0004 + + IL_0059: ret + } // end of method Condition21::VerifyThreadList + + .method private hidebysig instance void + Caller5() cil managed + { + // Code size 74 (0x4a) + .maxstack 7 + .locals init ([0] valuetype TailcallVerify.ValueType3Bytes CS$0$0000) + IL_0000: ldc.i4.0 + IL_0001: newobj instance void [mscorlib]System.Diagnostics.StackFrame::.ctor(bool) + IL_0006: callvirt instance class [mscorlib]System.Reflection.MethodBase [mscorlib]System.Diagnostics.StackFrame::GetMethod() + IL_000b: callvirt instance string [mscorlib]System.Reflection.MemberInfo::get_Name() + IL_0010: ldstr "Caller" + IL_0015: callvirt instance int32 [mscorlib]System.String::IndexOf(string) + IL_001a: ldc.i4.m1 + IL_001b: bne.un.s IL_002e + + IL_001d: ldstr "FAILED: Caller5 was inlined..." + IL_0022: call void [System.Console]System.Console::WriteLine(string) + IL_0027: ldc.i4.s 101 + IL_0029: stsfld int32 TailcallVerify.Condition21::Result + .try + { + IL_002e: ldarg.0 + IL_002f: ldc.i4.s 50 + IL_0031: ldc.i4.1 + IL_0032: ldc.i4.2 + IL_0033: ldc.i4.3 + IL_0034: ldc.i4.4 + IL_0035: ldloca.s CS$0$0000 + IL_0037: initobj TailcallVerify.ValueType3Bytes + IL_003d: ldloc.0 + IL_003e: call instance valuetype TailcallVerify.ValueType3Bytes TailcallVerify.Condition21::CallerE5(int32, + int32, + int32, + int32, + int32, + valuetype TailcallVerify.ValueType3Bytes) + IL_0043: pop + IL_0044: leave.s IL_0049 + + } // end .try + catch [mscorlib]System.DivideByZeroException + { + IL_0046: pop + IL_0047: leave.s IL_0049 + + } // end handler + IL_0049: ret + } // end of method Condition21::Caller5 + + .method private hidebysig instance valuetype TailcallVerify.ValueType3Bytes + CallerE5(int32 i, + int32 i2, + int32 i3, + int32 i4, + int32 i5, + valuetype TailcallVerify.ValueType3Bytes v3) cil managed noinlining + { + // Code size 16 (0x10) + .maxstack 8 + IL_0000: ldarg.0 + IL_0001: ldarg.1 + IL_0002: ldarg.2 + IL_0003: ldarg.3 + IL_0004: ldarg.s i4 + IL_0006: ldarg.s i5 + IL_0008: ldarg.s v3 + IL_000a: tail. call instance valuetype TailcallVerify.ValueType3Bytes TailcallVerify.Condition21::CalleeE5(int32, + int32, + int32, + int32, + int32, + valuetype TailcallVerify.ValueType3Bytes) + IL_000f: ret + } // end of method Condition21::CallerE5 + + .method private hidebysig instance valuetype TailcallVerify.ValueType3Bytes + CalleeE5(int32 i, + int32 i2, + int32 i3, + int32 i4, + int32 i5, + valuetype TailcallVerify.ValueType3Bytes v3) cil managed synchronized + { + // Code size 147 (0x93) + .maxstack 7 + .locals init ([0] int32 data, + [1] int32* pData, + [2] valuetype TailcallVerify.ValueType3Bytes CS$0$0000) + IL_0000: ldloca.s data + IL_0002: conv.u + IL_0003: stloc.1 + IL_0004: ldloc.1 + IL_0005: newobj instance void [mscorlib]System.IntPtr::.ctor(void*) + IL_000a: pop + IL_000b: ldc.i4.0 + IL_000c: newobj instance void [mscorlib]System.Diagnostics.StackFrame::.ctor(bool) + IL_0011: callvirt instance class [mscorlib]System.Reflection.MethodBase [mscorlib]System.Diagnostics.StackFrame::GetMethod() + IL_0016: callvirt instance string [mscorlib]System.Reflection.MemberInfo::get_Name() + IL_001b: ldstr "Callee" + IL_0020: callvirt instance int32 [mscorlib]System.String::IndexOf(string) + IL_0025: ldc.i4.m1 + IL_0026: bne.un.s IL_0039 + + IL_0028: ldstr "FAILED: CalleeE5 was inlined..." + IL_002d: call void [System.Console]System.Console::WriteLine(string) + IL_0032: ldc.i4.s 101 + IL_0034: stsfld int32 TailcallVerify.Condition21::Result + IL_0039: ldarg.1 + IL_003a: brtrue.s IL_0051 + + IL_003c: ldarg.1 + IL_003d: volatile. + IL_003f: ldsfld int32 modreq([mscorlib]System.Runtime.CompilerServices.IsVolatile) TailcallVerify.Condition21::zero + IL_0044: div + IL_0045: starg.s i + IL_0047: ldloca.s CS$0$0000 + IL_0049: initobj TailcallVerify.ValueType3Bytes + IL_004f: ldloc.2 + IL_0050: ret + + IL_0051: ldarg.0 + IL_0052: ldfld int32 TailcallVerify.Condition21::counterE5 + IL_0057: ldc.i4.0 + IL_0058: ble.s IL_007a + + IL_005a: ldarg.0 + IL_005b: dup + IL_005c: ldfld int32 TailcallVerify.Condition21::counterE5 + IL_0061: ldc.i4.1 + IL_0062: sub + IL_0063: stfld int32 TailcallVerify.Condition21::counterE5 + IL_0068: ldarg.0 + IL_0069: ldarg.1 + IL_006a: ldc.i4.1 + IL_006b: sub + IL_006c: ldarg.2 + IL_006d: ldarg.3 + IL_006e: ldarg.s i4 + IL_0070: ldarg.s i5 + IL_0072: ldarg.s v3 + IL_0074: tail. call instance valuetype TailcallVerify.ValueType3Bytes TailcallVerify.Condition21::CalleeE5(int32, + int32, + int32, + int32, + int32, + valuetype TailcallVerify.ValueType3Bytes) + IL_0079: ret + + IL_007a: ldarg.0 + IL_007b: ldc.i4.3 + IL_007c: stfld int32 TailcallVerify.Condition21::counterE5 + IL_0081: ldarg.0 + IL_0082: ldarg.1 + IL_0083: ldc.i4.1 + IL_0084: sub + IL_0085: ldarg.2 + IL_0086: ldarg.3 + IL_0087: ldarg.s i4 + IL_0089: ldarg.s i5 + IL_008b: ldarg.s v3 + IL_008d: tail. call instance valuetype TailcallVerify.ValueType3Bytes TailcallVerify.Condition21::CalleeO5(int32, + int32, + int32, + int32, + int32, + valuetype TailcallVerify.ValueType3Bytes) + IL_0092: ret + } // end of method Condition21::CalleeE5 + + .method private hidebysig instance valuetype TailcallVerify.ValueType3Bytes + CalleeO5(int32 i, + int32 i2, + int32 i3, + int32 i4, + int32 i5, + valuetype TailcallVerify.ValueType3Bytes v3) cil managed + { + // Code size 166 (0xa6) + .maxstack 7 + .locals init ([0] int32 data, + [1] int32* pData, + [2] native int p, + [3] valuetype TailcallVerify.ValueType3Bytes CS$0$0000) + IL_0000: ldloca.s data + IL_0002: conv.u + IL_0003: stloc.1 + IL_0004: ldloca.s p + IL_0006: ldloc.1 + IL_0007: call instance void [mscorlib]System.IntPtr::.ctor(void*) + IL_000c: ldarg.0 + IL_000d: ldfld class [mscorlib]System.Collections.Generic.List`1 TailcallVerify.Condition21::threadList + IL_0012: ldloca.s p + IL_0014: call instance int64 [mscorlib]System.IntPtr::ToInt64() + IL_0019: callvirt instance void class [mscorlib]System.Collections.Generic.List`1::Add(!0) + IL_001e: ldc.i4.0 + IL_001f: newobj instance void [mscorlib]System.Diagnostics.StackFrame::.ctor(bool) + IL_0024: callvirt instance class [mscorlib]System.Reflection.MethodBase [mscorlib]System.Diagnostics.StackFrame::GetMethod() + IL_0029: callvirt instance string [mscorlib]System.Reflection.MemberInfo::get_Name() + IL_002e: ldstr "Callee" + IL_0033: callvirt instance int32 [mscorlib]System.String::IndexOf(string) + IL_0038: ldc.i4.m1 + IL_0039: bne.un.s IL_004c + + IL_003b: ldstr "FAILED: CalleeO5 was inlined..." + IL_0040: call void [System.Console]System.Console::WriteLine(string) + IL_0045: ldc.i4.s 101 + IL_0047: stsfld int32 TailcallVerify.Condition21::Result + IL_004c: ldarg.1 + IL_004d: brtrue.s IL_0064 + + IL_004f: ldarg.1 + IL_0050: volatile. + IL_0052: ldsfld int32 modreq([mscorlib]System.Runtime.CompilerServices.IsVolatile) TailcallVerify.Condition21::zero + IL_0057: div + IL_0058: starg.s i + IL_005a: ldloca.s CS$0$0000 + IL_005c: initobj TailcallVerify.ValueType3Bytes + IL_0062: ldloc.3 + IL_0063: ret + + IL_0064: ldarg.0 + IL_0065: ldfld int32 TailcallVerify.Condition21::counterO5 + IL_006a: ldc.i4.0 + IL_006b: ble.s IL_008d + + IL_006d: ldarg.0 + IL_006e: dup + IL_006f: ldfld int32 TailcallVerify.Condition21::counterO5 + IL_0074: ldc.i4.1 + IL_0075: sub + IL_0076: stfld int32 TailcallVerify.Condition21::counterO5 + IL_007b: ldarg.0 + IL_007c: ldarg.1 + IL_007d: ldc.i4.1 + IL_007e: sub + IL_007f: ldarg.2 + IL_0080: ldarg.3 + IL_0081: ldarg.s i4 + IL_0083: ldarg.s i5 + IL_0085: ldarg.s v3 + IL_0087: tail. call instance valuetype TailcallVerify.ValueType3Bytes TailcallVerify.Condition21::CalleeO5(int32, + int32, + int32, + int32, + int32, + valuetype TailcallVerify.ValueType3Bytes) + IL_008c: ret + + IL_008d: ldarg.0 + IL_008e: ldc.i4.2 + IL_008f: stfld int32 TailcallVerify.Condition21::counterO5 + IL_0094: ldarg.0 + IL_0095: ldarg.1 + IL_0096: ldc.i4.1 + IL_0097: sub + IL_0098: ldarg.2 + IL_0099: ldarg.3 + IL_009a: ldarg.s i4 + IL_009c: ldarg.s i5 + IL_009e: ldarg.s v3 + IL_00a0: tail. call instance valuetype TailcallVerify.ValueType3Bytes TailcallVerify.Condition21::CalleeE5(int32, + int32, + int32, + int32, + int32, + valuetype TailcallVerify.ValueType3Bytes) + IL_00a5: ret + } // end of method Condition21::CalleeO5 + + .method public hidebysig static int32 Test6() cil managed nooptimization + { + // Code size 153 (0x99) + .maxstack 3 + .locals init ([0] class [mscorlib]System.Exception e) + IL_0000: ldstr "Executing Condition21.Test6 - Caller: Arguments: " + + "None - ReturnType: void; Callee: Arguments: None - ReturnType: void" + IL_0005: call void [System.Console]System.Console::WriteLine(string) + IL_000a: ldc.i4.s 100 + IL_000c: stsfld int32 TailcallVerify.Condition21::Result + .try + { + IL_0011: call void TailcallVerify.Condition21::Caller6() + IL_0016: leave.s IL_006f + + } // end .try + catch [mscorlib]System.Exception + { + IL_0018: stloc.0 + IL_0019: ldloc.0 + IL_001a: isinst [mscorlib]System.DivideByZeroException + IL_001f: brtrue.s IL_002a + + IL_0021: ldc.i4.s 101 + IL_0023: stsfld int32 TailcallVerify.Condition21::Result + IL_0028: rethrow + IL_002a: ldloc.0 + IL_002b: callvirt instance string [mscorlib]System.Exception::get_StackTrace() + IL_0030: ldstr "Caller" + IL_0035: callvirt instance int32 [mscorlib]System.String::IndexOf(string) + IL_003a: ldc.i4.m1 + IL_003b: beq.s IL_006d + + IL_003d: ldstr "FAILED: Found the word 'Caller' in the stacktrace." + IL_0042: call void [System.Console]System.Console::WriteLine(string) + IL_0047: ldstr "------------------------------------------------" + IL_004c: call void [System.Console]System.Console::WriteLine(string) + IL_0051: call void [System.Console]System.Console::WriteLine() + IL_0056: ldloc.0 + IL_0057: callvirt instance string [mscorlib]System.Exception::get_StackTrace() + IL_005c: call void [System.Console]System.Console::WriteLine(string) + IL_0061: call void [System.Console]System.Console::WriteLine() + IL_0066: ldc.i4.s 101 + IL_0068: stsfld int32 TailcallVerify.Condition21::Result + IL_006d: leave.s IL_006f + + } // end handler + IL_006f: ldstr "Execution finished - Test " + IL_0074: ldsfld int32 TailcallVerify.Condition21::Result + IL_0079: ldc.i4.s 100 + IL_007b: beq.s IL_0084 + + IL_007d: ldstr "FAILED" + IL_0082: br.s IL_0089 + + IL_0084: ldstr "PASSED" + IL_0089: call string [mscorlib]System.String::Concat(string, + string) + IL_008e: call void [System.Console]System.Console::WriteLine(string) + IL_0093: ldsfld int32 TailcallVerify.Condition21::Result + IL_0098: ret + } // end of method Condition21::Test6 + + .method private hidebysig static void Caller6() cil managed + { + // Code size 52 (0x34) + .maxstack 8 + IL_0000: ldc.i4.0 + IL_0001: newobj instance void [mscorlib]System.Diagnostics.StackFrame::.ctor(bool) + IL_0006: callvirt instance class [mscorlib]System.Reflection.MethodBase [mscorlib]System.Diagnostics.StackFrame::GetMethod() + IL_000b: callvirt instance string [mscorlib]System.Reflection.MemberInfo::get_Name() + IL_0010: ldstr "Caller" + IL_0015: callvirt instance int32 [mscorlib]System.String::IndexOf(string) + IL_001a: ldc.i4.m1 + IL_001b: bne.un.s IL_002e + + IL_001d: ldstr "Failed, Method was inlined..." + IL_0022: call void [System.Console]System.Console::WriteLine(string) + IL_0027: ldc.i4.s 101 + IL_0029: stsfld int32 TailcallVerify.Condition21::Result + IL_002e: ldftn void TailcallVerify.Condition21::Callee6() + tail. calli void() + IL_0033: ret + } // end of method Condition21::Caller6 + + .method private hidebysig static void Callee6() cil managed noinlining + { + // Code size 11 (0xb) + .maxstack 8 + IL_0000: ldc.i4.1 + IL_0001: volatile. + IL_0003: ldsfld int32 modreq([mscorlib]System.Runtime.CompilerServices.IsVolatile) TailcallVerify.Condition21::zero + IL_0008: div + IL_0009: pop + IL_000a: ret + } // end of method Condition21::Callee6 + + .method public hidebysig static int32 Test7() cil managed nooptimization + { + // Code size 155 (0x9b) + .maxstack 3 + .locals init ([0] class [mscorlib]System.Exception e) + IL_0000: ldstr "Executing Condition21.Test7 - Caller: Arguments: " + + "Int32 - ReturnType: Int32; Callee: Arguments: Int32 - ReturnType: Int32" + IL_0005: call void [System.Console]System.Console::WriteLine(string) + IL_000a: ldc.i4.s 100 + IL_000c: stsfld int32 TailcallVerify.Condition21::Result + .try + { + IL_0011: ldc.i4.0 + IL_0012: call int32 TailcallVerify.Condition21::Caller7(int32) + IL_0017: pop + IL_0018: leave.s IL_0071 + + } // end .try + catch [mscorlib]System.Exception + { + IL_001a: stloc.0 + IL_001b: ldloc.0 + IL_001c: isinst [mscorlib]System.DivideByZeroException + IL_0021: brtrue.s IL_002c + + IL_0023: ldc.i4.s 101 + IL_0025: stsfld int32 TailcallVerify.Condition21::Result + IL_002a: rethrow + IL_002c: ldloc.0 + IL_002d: callvirt instance string [mscorlib]System.Exception::get_StackTrace() + IL_0032: ldstr "Caller" + IL_0037: callvirt instance int32 [mscorlib]System.String::IndexOf(string) + IL_003c: ldc.i4.m1 + IL_003d: beq.s IL_006f + + IL_003f: ldstr "FAILED: Found the word 'Caller' in the stacktrace." + IL_0044: call void [System.Console]System.Console::WriteLine(string) + IL_0049: ldstr "------------------------------------------------" + IL_004e: call void [System.Console]System.Console::WriteLine(string) + IL_0053: call void [System.Console]System.Console::WriteLine() + IL_0058: ldloc.0 + IL_0059: callvirt instance string [mscorlib]System.Exception::get_StackTrace() + IL_005e: call void [System.Console]System.Console::WriteLine(string) + IL_0063: call void [System.Console]System.Console::WriteLine() + IL_0068: ldc.i4.s 101 + IL_006a: stsfld int32 TailcallVerify.Condition21::Result + IL_006f: leave.s IL_0071 + + } // end handler + IL_0071: ldstr "Execution finished - Test " + IL_0076: ldsfld int32 TailcallVerify.Condition21::Result + IL_007b: ldc.i4.s 100 + IL_007d: beq.s IL_0086 + + IL_007f: ldstr "FAILED" + IL_0084: br.s IL_008b + + IL_0086: ldstr "PASSED" + IL_008b: call string [mscorlib]System.String::Concat(string, + string) + IL_0090: call void [System.Console]System.Console::WriteLine(string) + IL_0095: ldsfld int32 TailcallVerify.Condition21::Result + IL_009a: ret + } // end of method Condition21::Test7 + + .method private hidebysig static int32 + Caller7(int32 i1) cil managed + { + // Code size 53 (0x35) + .maxstack 8 + IL_0000: ldc.i4.0 + IL_0001: newobj instance void [mscorlib]System.Diagnostics.StackFrame::.ctor(bool) + IL_0006: callvirt instance class [mscorlib]System.Reflection.MethodBase [mscorlib]System.Diagnostics.StackFrame::GetMethod() + IL_000b: callvirt instance string [mscorlib]System.Reflection.MemberInfo::get_Name() + IL_0010: ldstr "Caller" + IL_0015: callvirt instance int32 [mscorlib]System.String::IndexOf(string) + IL_001a: ldc.i4.m1 + IL_001b: bne.un.s IL_002e + + IL_001d: ldstr "Failed, Method was inlined..." + IL_0022: call void [System.Console]System.Console::WriteLine(string) + IL_0027: ldc.i4.s 101 + IL_0029: stsfld int32 TailcallVerify.Condition21::Result + IL_002e: ldarg.0 + IL_002f: ldftn int32 TailcallVerify.Condition21::Callee7(int32) + tail. calli int32(int32) + IL_0034: ret + } // end of method Condition21::Caller7 + + .method private hidebysig static int32 + Callee7(int32 i1) cil managed noinlining + { + // Code size 12 (0xc) + .maxstack 8 + IL_0000: ldc.i4.1 + IL_0001: volatile. + IL_0003: ldsfld int32 modreq([mscorlib]System.Runtime.CompilerServices.IsVolatile) TailcallVerify.Condition21::zero + IL_0008: div + IL_0009: pop + IL_000a: ldarg.0 + IL_000b: ret + } // end of method Condition21::Callee7 + + .method public hidebysig specialname rtspecialname + instance void .ctor() cil managed + { + // Code size 32 (0x20) + .maxstack 8 + IL_0000: ldarg.0 + IL_0001: newobj instance void class [mscorlib]System.Collections.Generic.List`1::.ctor() + IL_0006: stfld class [mscorlib]System.Collections.Generic.List`1 TailcallVerify.Condition21::threadList + IL_000b: ldarg.0 + IL_000c: ldc.i4.3 + IL_000d: stfld int32 TailcallVerify.Condition21::counterE5 + IL_0012: ldarg.0 + IL_0013: ldc.i4.2 + IL_0014: stfld int32 TailcallVerify.Condition21::counterO5 + IL_0019: ldarg.0 + IL_001a: call instance void [mscorlib]System.Object::.ctor() + IL_001f: ret + } // end of method Condition21::.ctor + + .method private hidebysig specialname rtspecialname static + void .cctor() cil managed + { + // Code size 48 (0x30) + .maxstack 8 + IL_0000: ldc.i4.0 + IL_0001: volatile. + IL_0003: stsfld int32 modreq([mscorlib]System.Runtime.CompilerServices.IsVolatile) TailcallVerify.Condition21::zero + IL_0008: ldc.i4.s 100 + IL_000a: stsfld int32 TailcallVerify.Condition21::Result + IL_000f: newobj instance void class [mscorlib]System.Collections.Generic.List`1::.ctor() + IL_0014: stsfld class [mscorlib]System.Collections.Generic.List`1 TailcallVerify.Condition21::evenList + IL_0019: newobj instance void class [mscorlib]System.Collections.Generic.List`1::.ctor() + IL_001e: stsfld class [mscorlib]System.Collections.Generic.List`1 TailcallVerify.Condition21::oddList + IL_0023: ldc.i4.3 + IL_0024: stsfld int32 TailcallVerify.Condition21::counterE4 + IL_0029: ldc.i4.2 + IL_002a: stsfld int32 TailcallVerify.Condition21::counterO4 + IL_002f: ret + } // end of method Condition21::.cctor + +} // end of class TailcallVerify.Condition21 + +.class private auto ansi beforefieldinit TailcallVerify.Condition10 + extends [mscorlib]System.Object +{ + .class auto ansi nested private beforefieldinit Foo1`2 + extends [mscorlib]System.Object + { + .field private int32 zero + .method public hidebysig instance void + Test1() cil managed nooptimization + { + // Code size 91 (0x5b) + .maxstack 2 + .locals init ([0] class [mscorlib]System.Exception e) + .try + { + IL_0000: ldarg.0 + IL_0001: call instance void class TailcallVerify.Condition10/Foo1`2::Caller1() + IL_0006: leave.s IL_005a + + } // end .try + catch [mscorlib]System.Exception + { + IL_0008: stloc.0 + IL_0009: ldloc.0 + IL_000a: isinst [mscorlib]System.DivideByZeroException + IL_000f: brtrue.s IL_001a + + IL_0011: ldc.i4.s 101 + IL_0013: stsfld int32 TailcallVerify.Condition10::Result + IL_0018: rethrow + IL_001a: ldloc.0 + IL_001b: callvirt instance string [mscorlib]System.Exception::get_StackTrace() + IL_0020: ldstr "Caller" + IL_0025: callvirt instance int32 [mscorlib]System.String::IndexOf(string) + IL_002a: ldc.i4.m1 + IL_002b: beq.s IL_0058 + + IL_002d: ldstr "FAILED: Found the word 'Caller' in the stacktrace." + IL_0032: call void [System.Console]System.Console::WriteLine(string) + IL_0037: ldstr "------------------------------------------------" + IL_003c: call void [System.Console]System.Console::WriteLine(string) + IL_0041: call void [System.Console]System.Console::WriteLine() + IL_0046: ldloc.0 + IL_0047: callvirt instance string [mscorlib]System.Exception::get_StackTrace() + IL_004c: call void [System.Console]System.Console::WriteLine(string) + IL_0051: call void [System.Console]System.Console::WriteLine() + IL_0056: rethrow + IL_0058: leave.s IL_005a + + } // end handler + IL_005a: ret + } // end of method Foo1`2::Test1 + + .method public hidebysig instance void + Test1Recursive() cil managed nooptimization + { + // Code size 91 (0x5b) + .maxstack 2 + .locals init ([0] class [mscorlib]System.Exception e) + .try + { + IL_0000: ldarg.0 + IL_0001: call instance void class TailcallVerify.Condition10/Foo1`2::Caller1Recursive() + IL_0006: leave.s IL_005a + + } // end .try + catch [mscorlib]System.Exception + { + IL_0008: stloc.0 + IL_0009: ldloc.0 + IL_000a: isinst [mscorlib]System.DivideByZeroException + IL_000f: brtrue.s IL_001a + + IL_0011: ldc.i4.s 101 + IL_0013: stsfld int32 TailcallVerify.Condition10::Result + IL_0018: rethrow + IL_001a: ldloc.0 + IL_001b: callvirt instance string [mscorlib]System.Exception::get_StackTrace() + IL_0020: ldstr "Caller" + IL_0025: callvirt instance int32 [mscorlib]System.String::IndexOf(string) + IL_002a: ldc.i4.m1 + IL_002b: beq.s IL_0058 + + IL_002d: ldstr "FAILED: Found the word 'Caller' in the stacktrace." + IL_0032: call void [System.Console]System.Console::WriteLine(string) + IL_0037: ldstr "------------------------------------------------" + IL_003c: call void [System.Console]System.Console::WriteLine(string) + IL_0041: call void [System.Console]System.Console::WriteLine() + IL_0046: ldloc.0 + IL_0047: callvirt instance string [mscorlib]System.Exception::get_StackTrace() + IL_004c: call void [System.Console]System.Console::WriteLine(string) + IL_0051: call void [System.Console]System.Console::WriteLine() + IL_0056: rethrow + IL_0058: leave.s IL_005a + + } // end handler + IL_005a: ret + } // end of method Foo1`2::Test1Recursive + + .method public hidebysig instance void + Caller1() cil managed + { + // Code size 53 (0x35) + .maxstack 8 + IL_0000: ldc.i4.0 + IL_0001: newobj instance void [mscorlib]System.Diagnostics.StackFrame::.ctor(bool) + IL_0006: callvirt instance class [mscorlib]System.Reflection.MethodBase [mscorlib]System.Diagnostics.StackFrame::GetMethod() + IL_000b: callvirt instance string [mscorlib]System.Reflection.MemberInfo::get_Name() + IL_0010: ldstr "Caller" + IL_0015: callvirt instance int32 [mscorlib]System.String::IndexOf(string) + IL_001a: ldc.i4.m1 + IL_001b: bne.un.s IL_002e + + IL_001d: ldstr "Failed, Method was inlined..." + IL_0022: call void [System.Console]System.Console::WriteLine(string) + IL_0027: ldc.i4.s 101 + IL_0029: stsfld int32 TailcallVerify.Condition10::Result + IL_002e: ldarg.0 + IL_002f: call instance void class TailcallVerify.Condition10/Foo1`2::Callee1() + IL_0034: ret + } // end of method Foo1`2::Caller1 + + .method public hidebysig instance void + Caller1Recursive() cil managed + { + // Code size 55 (0x37) + .maxstack 8 + IL_0000: ldc.i4.0 + IL_0001: newobj instance void [mscorlib]System.Diagnostics.StackFrame::.ctor(bool) + IL_0006: callvirt instance class [mscorlib]System.Reflection.MethodBase [mscorlib]System.Diagnostics.StackFrame::GetMethod() + IL_000b: callvirt instance string [mscorlib]System.Reflection.MemberInfo::get_Name() + IL_0010: ldstr "Caller" + IL_0015: callvirt instance int32 [mscorlib]System.String::IndexOf(string) + IL_001a: ldc.i4.m1 + IL_001b: bne.un.s IL_002e + + IL_001d: ldstr "Failed, Method was inlined..." + IL_0022: call void [System.Console]System.Console::WriteLine(string) + IL_0027: ldc.i4.s 101 + IL_0029: stsfld int32 TailcallVerify.Condition10::Result + IL_002e: ldarg.0 + IL_002f: ldc.i4.s 20 + IL_0031: call instance void class TailcallVerify.Condition10/Foo1`2::Callee1Recursive(int32) + IL_0036: ret + } // end of method Foo1`2::Caller1Recursive + + .method private hidebysig instance void + Callee1() cil managed noinlining + { + // Code size 10 (0xa) + .maxstack 8 + IL_0000: ldc.i4.1 + IL_0001: ldarg.0 + IL_0002: ldfld int32 class TailcallVerify.Condition10/Foo1`2::zero + IL_0007: div + IL_0008: pop + IL_0009: ret + } // end of method Foo1`2::Callee1 + + .method private hidebysig instance void + Callee1Recursive(int32 i) cil managed + { + // Code size 93 (0x5d) + .maxstack 3 + .locals init ([0] string stackTrace, + [1] int32 count, + [2] int32 idx) + IL_0000: newobj instance void [mscorlib]System.Diagnostics.StackTrace::.ctor() + IL_0005: callvirt instance string [mscorlib]System.Object::ToString() + IL_000a: stloc.0 + IL_000b: ldc.i4.0 + IL_000c: stloc.1 + IL_000d: ldc.i4.0 + IL_000e: stloc.2 + IL_000f: br.s IL_0019 + + IL_0011: ldloc.2 + IL_0012: ldc.i4.1 + IL_0013: add + IL_0014: stloc.2 + IL_0015: ldloc.1 + IL_0016: ldc.i4.1 + IL_0017: add + IL_0018: stloc.1 + IL_0019: ldloc.0 + IL_001a: ldstr "Callee" + IL_001f: ldloc.2 + IL_0020: callvirt instance int32 [mscorlib]System.String::IndexOf(string, + int32) + IL_0025: dup + IL_0026: stloc.2 + IL_0027: ldc.i4.m1 + IL_0028: bne.un.s IL_0011 + + IL_002a: ldloc.1 + IL_002b: ldc.i4.1 + IL_002c: beq.s IL_0045 + + IL_002e: ldstr "FAILED: Callee1Recursive was not tailcall'ed..." + IL_0033: call void [System.Console]System.Console::WriteLine(string) + IL_0038: ldloc.0 + IL_0039: call void [System.Console]System.Console::WriteLine(string) + IL_003e: ldc.i4.s 101 + IL_0040: stsfld int32 TailcallVerify.Condition10::Result + IL_0045: ldarg.1 + IL_0046: brtrue.s IL_0053 + + IL_0048: ldarg.1 + IL_0049: ldarg.0 + IL_004a: ldfld int32 class TailcallVerify.Condition10/Foo1`2::zero + IL_004f: div + IL_0050: starg.s i + IL_0052: ret + + IL_0053: ldarg.0 + IL_0054: ldarg.1 + IL_0055: ldc.i4.1 + IL_0056: sub + IL_0057: call instance void class TailcallVerify.Condition10/Foo1`2::Callee1Recursive(int32) + IL_005c: ret + } // end of method Foo1`2::Callee1Recursive + + .method public hidebysig specialname rtspecialname + instance void .ctor() cil managed + { + // Code size 7 (0x7) + .maxstack 8 + IL_0000: ldarg.0 + IL_0001: call instance void [mscorlib]System.Object::.ctor() + IL_0006: ret + } // end of method Foo1`2::.ctor + + } // end of class Foo1`2 + + .class auto ansi nested private beforefieldinit Foo2`2 + extends [mscorlib]System.Object + { + .field private int32 zero + .method public hidebysig instance void + Test1() cil managed nooptimization + { + // Code size 109 (0x6d) + .maxstack 3 + .locals init ([0] !V arg1, + [1] !K arg2, + [2] class [mscorlib]System.Exception e) + .try + { + IL_0000: ldloca.s arg1 + IL_0002: initobj !V + IL_0008: ldloca.s arg2 + IL_000a: initobj !K + IL_0010: ldarg.0 + IL_0011: ldloc.0 + IL_0012: ldloc.1 + IL_0013: call instance void class TailcallVerify.Condition10/Foo2`2::Caller1(!0, + !1) + IL_0018: leave.s IL_006c + + } // end .try + catch [mscorlib]System.Exception + { + IL_001a: stloc.2 + IL_001b: ldloc.2 + IL_001c: isinst [mscorlib]System.DivideByZeroException + IL_0021: brtrue.s IL_002c + + IL_0023: ldc.i4.s 101 + IL_0025: stsfld int32 TailcallVerify.Condition10::Result + IL_002a: rethrow + IL_002c: ldloc.2 + IL_002d: callvirt instance string [mscorlib]System.Exception::get_StackTrace() + IL_0032: ldstr "Caller" + IL_0037: callvirt instance int32 [mscorlib]System.String::IndexOf(string) + IL_003c: ldc.i4.m1 + IL_003d: beq.s IL_006a + + IL_003f: ldstr "FAILED: Found the word 'Caller' in the stacktrace." + IL_0044: call void [System.Console]System.Console::WriteLine(string) + IL_0049: ldstr "------------------------------------------------" + IL_004e: call void [System.Console]System.Console::WriteLine(string) + IL_0053: call void [System.Console]System.Console::WriteLine() + IL_0058: ldloc.2 + IL_0059: callvirt instance string [mscorlib]System.Exception::get_StackTrace() + IL_005e: call void [System.Console]System.Console::WriteLine(string) + IL_0063: call void [System.Console]System.Console::WriteLine() + IL_0068: rethrow + IL_006a: leave.s IL_006c + + } // end handler + IL_006c: ret + } // end of method Foo2`2::Test1 + + .method public hidebysig instance void + Caller1(!V arg1, + !K arg2) cil managed + { + // Code size 54 (0x36) + .maxstack 8 + IL_0000: ldc.i4.0 + IL_0001: newobj instance void [mscorlib]System.Diagnostics.StackFrame::.ctor(bool) + IL_0006: callvirt instance class [mscorlib]System.Reflection.MethodBase [mscorlib]System.Diagnostics.StackFrame::GetMethod() + IL_000b: callvirt instance string [mscorlib]System.Reflection.MemberInfo::get_Name() + IL_0010: ldstr "Caller" + IL_0015: callvirt instance int32 [mscorlib]System.String::IndexOf(string) + IL_001a: ldc.i4.m1 + IL_001b: bne.un.s IL_002e + + IL_001d: ldstr "Failed, Method was inlined..." + IL_0022: call void [System.Console]System.Console::WriteLine(string) + IL_0027: ldc.i4.s 101 + IL_0029: stsfld int32 TailcallVerify.Condition10::Result + IL_002e: ldarg.0 + IL_002f: ldarg.1 + IL_0030: call instance void class TailcallVerify.Condition10/Foo2`2::Callee1(!0) + IL_0035: ret + } // end of method Foo2`2::Caller1 + + .method private hidebysig instance void + Callee1(!V arg1) cil managed noinlining + { + // Code size 10 (0xa) + .maxstack 8 + IL_0000: ldc.i4.1 + IL_0001: ldarg.0 + IL_0002: ldfld int32 class TailcallVerify.Condition10/Foo2`2::zero + IL_0007: div + IL_0008: pop + IL_0009: ret + } // end of method Foo2`2::Callee1 + + .method public hidebysig specialname rtspecialname + instance void .ctor() cil managed + { + // Code size 7 (0x7) + .maxstack 8 + IL_0000: ldarg.0 + IL_0001: call instance void [mscorlib]System.Object::.ctor() + IL_0006: ret + } // end of method Foo2`2::.ctor + + } // end of class Foo2`2 + + .field private static int32 modreq([mscorlib]System.Runtime.CompilerServices.IsVolatile) zero + .field private static int32 Result + .method public hidebysig static int32 Test1() cil managed nooptimization + { + // Code size 153 (0x99) + .maxstack 3 + .locals init ([0] class [mscorlib]System.Exception e) + IL_0000: ldstr "Executing Condition10.Test1 - Caller: Argu" + + "ments: None - ReturnType: void; Callee: Arguments: None - ReturnType: v" + + "oid" + IL_0005: call void [System.Console]System.Console::WriteLine(string) + IL_000a: ldc.i4.s 100 + IL_000c: stsfld int32 TailcallVerify.Condition10::Result + .try + { + IL_0011: call void TailcallVerify.Condition10::Caller1() + IL_0016: leave.s IL_006f + + } // end .try + catch [mscorlib]System.Exception + { + IL_0018: stloc.0 + IL_0019: ldloc.0 + IL_001a: isinst [mscorlib]System.DivideByZeroException + IL_001f: brtrue.s IL_002a + + IL_0021: ldc.i4.s 101 + IL_0023: stsfld int32 TailcallVerify.Condition10::Result + IL_0028: rethrow + IL_002a: ldloc.0 + IL_002b: callvirt instance string [mscorlib]System.Exception::get_StackTrace() + IL_0030: ldstr "Caller" + IL_0035: callvirt instance int32 [mscorlib]System.String::IndexOf(string) + IL_003a: ldc.i4.m1 + IL_003b: beq.s IL_006d + + IL_003d: ldstr "FAILED: Found the word 'Caller' in the stacktrace." + IL_0042: call void [System.Console]System.Console::WriteLine(string) + IL_0047: ldstr "------------------------------------------------" + IL_004c: call void [System.Console]System.Console::WriteLine(string) + IL_0051: call void [System.Console]System.Console::WriteLine() + IL_0056: ldloc.0 + IL_0057: callvirt instance string [mscorlib]System.Exception::get_StackTrace() + IL_005c: call void [System.Console]System.Console::WriteLine(string) + IL_0061: call void [System.Console]System.Console::WriteLine() + IL_0066: ldc.i4.s 101 + IL_0068: stsfld int32 TailcallVerify.Condition10::Result + IL_006d: leave.s IL_006f + + } // end handler + IL_006f: ldstr "Execution finished - Test " + IL_0074: ldsfld int32 TailcallVerify.Condition10::Result + IL_0079: ldc.i4.s 100 + IL_007b: beq.s IL_0084 + + IL_007d: ldstr "FAILED" + IL_0082: br.s IL_0089 + + IL_0084: ldstr "PASSED" + IL_0089: call string [mscorlib]System.String::Concat(string, + string) + IL_008e: call void [System.Console]System.Console::WriteLine(string) + IL_0093: ldsfld int32 TailcallVerify.Condition10::Result + IL_0098: ret + } // end of method Condition10::Test1 + + .method private hidebysig static void Caller1() cil managed + { + // Code size 52 (0x34) + .maxstack 8 + IL_0000: ldc.i4.0 + IL_0001: newobj instance void [mscorlib]System.Diagnostics.StackFrame::.ctor(bool) + IL_0006: callvirt instance class [mscorlib]System.Reflection.MethodBase [mscorlib]System.Diagnostics.StackFrame::GetMethod() + IL_000b: callvirt instance string [mscorlib]System.Reflection.MemberInfo::get_Name() + IL_0010: ldstr "Caller" + IL_0015: callvirt instance int32 [mscorlib]System.String::IndexOf(string) + IL_001a: ldc.i4.m1 + IL_001b: bne.un.s IL_002e + + IL_001d: ldstr "Failed, Method was inlined..." + IL_0022: call void [System.Console]System.Console::WriteLine(string) + IL_0027: ldc.i4.s 101 + IL_0029: stsfld int32 TailcallVerify.Condition10::Result + IL_002e: tail. call void TailcallVerify.Condition10::Callee1() + IL_0033: ret + } // end of method Condition10::Caller1 + + .method private hidebysig static void Callee1() cil managed noinlining + { + // Code size 11 (0xb) + .maxstack 8 + IL_0000: ldc.i4.1 + IL_0001: volatile. + IL_0003: ldsfld int32 modreq([mscorlib]System.Runtime.CompilerServices.IsVolatile) TailcallVerify.Condition10::zero + IL_0008: div + IL_0009: pop + IL_000a: ret + } // end of method Condition10::Callee1 + + .method public hidebysig static int32 Test2() cil managed nooptimization + { + // Code size 153 (0x99) + .maxstack 3 + .locals init ([0] class [mscorlib]System.Exception e) + IL_0000: ldstr "Executing Condition10.Test2 - Caller: Arguments: N" + + "one - ReturnType: void; Callee: Arguments: None - ReturnType: v" + + "oid" + IL_0005: call void [System.Console]System.Console::WriteLine(string) + IL_000a: ldc.i4.s 100 + IL_000c: stsfld int32 TailcallVerify.Condition10::Result + .try + { + IL_0011: call void TailcallVerify.Condition10::Caller2() + IL_0016: leave.s IL_006f + + } // end .try + catch [mscorlib]System.Exception + { + IL_0018: stloc.0 + IL_0019: ldloc.0 + IL_001a: isinst [mscorlib]System.DivideByZeroException + IL_001f: brtrue.s IL_002a + + IL_0021: ldc.i4.s 101 + IL_0023: stsfld int32 TailcallVerify.Condition10::Result + IL_0028: rethrow + IL_002a: ldloc.0 + IL_002b: callvirt instance string [mscorlib]System.Exception::get_StackTrace() + IL_0030: ldstr "Caller" + IL_0035: callvirt instance int32 [mscorlib]System.String::IndexOf(string) + IL_003a: ldc.i4.m1 + IL_003b: beq.s IL_006d + + IL_003d: ldstr "FAILED: Found the word 'Caller' in the stacktrace." + IL_0042: call void [System.Console]System.Console::WriteLine(string) + IL_0047: ldstr "------------------------------------------------" + IL_004c: call void [System.Console]System.Console::WriteLine(string) + IL_0051: call void [System.Console]System.Console::WriteLine() + IL_0056: ldloc.0 + IL_0057: callvirt instance string [mscorlib]System.Exception::get_StackTrace() + IL_005c: call void [System.Console]System.Console::WriteLine(string) + IL_0061: call void [System.Console]System.Console::WriteLine() + IL_0066: ldc.i4.s 101 + IL_0068: stsfld int32 TailcallVerify.Condition10::Result + IL_006d: leave.s IL_006f + + } // end handler + IL_006f: ldstr "Execution finished - Test " + IL_0074: ldsfld int32 TailcallVerify.Condition10::Result + IL_0079: ldc.i4.s 100 + IL_007b: beq.s IL_0084 + + IL_007d: ldstr "FAILED" + IL_0082: br.s IL_0089 + + IL_0084: ldstr "PASSED" + IL_0089: call string [mscorlib]System.String::Concat(string, + string) + IL_008e: call void [System.Console]System.Console::WriteLine(string) + IL_0093: ldsfld int32 TailcallVerify.Condition10::Result + IL_0098: ret + } // end of method Condition10::Test2 + + .method private hidebysig static void Caller2() cil managed + { + // Code size 52 (0x34) + .maxstack 8 + IL_0000: ldc.i4.0 + IL_0001: newobj instance void [mscorlib]System.Diagnostics.StackFrame::.ctor(bool) + IL_0006: callvirt instance class [mscorlib]System.Reflection.MethodBase [mscorlib]System.Diagnostics.StackFrame::GetMethod() + IL_000b: callvirt instance string [mscorlib]System.Reflection.MemberInfo::get_Name() + IL_0010: ldstr "Caller" + IL_0015: callvirt instance int32 [mscorlib]System.String::IndexOf(string) + IL_001a: ldc.i4.m1 + IL_001b: bne.un.s IL_002e + + IL_001d: ldstr "Failed, Method was inlined..." + IL_0022: call void [System.Console]System.Console::WriteLine(string) + IL_0027: ldc.i4.s 101 + IL_0029: stsfld int32 TailcallVerify.Condition10::Result + IL_002e: call void TailcallVerify.Condition10::Callee2() + IL_0033: ret + } // end of method Condition10::Caller2 + + .method private hidebysig static void Callee2() cil managed noinlining + { + // Code size 11 (0xb) + .maxstack 8 + IL_0000: ldc.i4.1 + IL_0001: volatile. + IL_0003: ldsfld int32 modreq([mscorlib]System.Runtime.CompilerServices.IsVolatile) TailcallVerify.Condition10::zero + IL_0008: div + IL_0009: pop + IL_000a: ret + } // end of method Condition10::Callee2 + + .method public hidebysig static int32 Test3() cil managed nooptimization + { + // Code size 170 (0xaa) + .maxstack 3 + .locals init ([0] class TailcallVerify.Condition10/Foo1`2 foo1, + [1] class TailcallVerify.Condition10/Foo1`2 foo2, + [2] class TailcallVerify.Condition10/Foo1`2 foo3, + [3] class TailcallVerify.Condition10/Foo1`2 foo4, + [4] class [mscorlib]System.Exception e) + IL_0000: ldstr "Executing Condition10.Test3 - class Foo1: Caller: Arguments: None - ReturnType: void; Callee: Arguments: Non" + + "e - ReturnType: void" + IL_0005: call void [System.Console]System.Console::WriteLine(string) + IL_000a: ldstr " class Foo1: Caller: Arguments: None - ReturnType: void; Callee: Arguments: Non" + + "e - ReturnType: void" + IL_000f: call void [System.Console]System.Console::WriteLine(string) + IL_0014: ldstr " class Foo1: Caller: Arguments: None - ReturnType: void; Callee: Arguments: N" + + "one - ReturnType: void" + IL_0019: call void [System.Console]System.Console::WriteLine(string) + IL_001e: ldstr " class Foo1: Caller: Arguments: None - ReturnType: void; Callee: Ar" + + "guments: None - ReturnType: void" + IL_0023: call void [System.Console]System.Console::WriteLine(string) + IL_0028: ldc.i4.s 100 + IL_002a: stsfld int32 TailcallVerify.Condition10::Result + .try + { + IL_002f: newobj instance void class TailcallVerify.Condition10/Foo1`2::.ctor() + IL_0034: stloc.0 + IL_0035: newobj instance void class TailcallVerify.Condition10/Foo1`2::.ctor() + IL_003a: stloc.1 + IL_003b: newobj instance void class TailcallVerify.Condition10/Foo1`2::.ctor() + IL_0040: stloc.2 + IL_0041: newobj instance void class TailcallVerify.Condition10/Foo1`2::.ctor() + IL_0046: stloc.3 + IL_0047: ldloc.0 + IL_0048: callvirt instance void class TailcallVerify.Condition10/Foo1`2::Test1() + IL_004d: ldloc.1 + IL_004e: callvirt instance void class TailcallVerify.Condition10/Foo1`2::Test1() + IL_0053: ldloc.2 + IL_0054: callvirt instance void class TailcallVerify.Condition10/Foo1`2::Test1() + IL_0059: ldloc.3 + IL_005a: callvirt instance void class TailcallVerify.Condition10/Foo1`2::Test1() + IL_005f: leave.s IL_0080 + + } // end .try + catch [mscorlib]System.Exception + { + IL_0061: stloc.s e + IL_0063: ldloc.s e + IL_0065: callvirt instance string [mscorlib]System.Exception::get_StackTrace() + IL_006a: ldstr "Caller" + IL_006f: callvirt instance int32 [mscorlib]System.String::IndexOf(string) + IL_0074: ldc.i4.m1 + IL_0075: beq.s IL_007e + + IL_0077: ldc.i4.s 101 + IL_0079: stsfld int32 TailcallVerify.Condition10::Result + IL_007e: leave.s IL_0080 + + } // end handler + IL_0080: ldstr "Execution finished - Test " + IL_0085: ldsfld int32 TailcallVerify.Condition10::Result + IL_008a: ldc.i4.s 100 + IL_008c: beq.s IL_0095 + + IL_008e: ldstr "FAILED" + IL_0093: br.s IL_009a + + IL_0095: ldstr "PASSED" + IL_009a: call string [mscorlib]System.String::Concat(string, + string) + IL_009f: call void [System.Console]System.Console::WriteLine(string) + IL_00a4: ldsfld int32 TailcallVerify.Condition10::Result + IL_00a9: ret + } // end of method Condition10::Test3 + + .method public hidebysig static int32 Test4() cil managed nooptimization + { + // Code size 161 (0xa1) + .maxstack 3 + .locals init ([0] class TailcallVerify.Condition10/Foo2`2 foo1, + [1] class TailcallVerify.Condition10/Foo2`2 foo2, + [2] class TailcallVerify.Condition10/Foo2`2 foo3, + [3] class TailcallVerify.Condition10/Foo2`2 foo4, + [4] class [mscorlib]System.Exception e) + IL_0000: ldstr "Executing Condition10.Test4 - class Foo2: Caller: Arguments: string, int - ReturnType: void; Callee: Argumen" + + "ts: string - ReturnType: void" + IL_0005: call void [System.Console]System.Console::WriteLine(string) + IL_000a: ldstr " class Foo2: Caller: Arguments: string, int - ReturnType: void; Callee: Argumen" + + "ts: string - ReturnType: void" + IL_000f: call void [System.Console]System.Console::WriteLine(string) + IL_0014: ldstr " class Foo2: Caller: Arguments: string, short - ReturnType: void; Callee: Arg" + + "uments: string - ReturnType: void" + IL_0019: call void [System.Console]System.Console::WriteLine(string) + IL_001e: ldstr " class Foo2: Caller: Arguments: string, ValueType3Bytes - ReturnTyp" + + "e: void; Callee: Arguments: string - ReturnType: void" + IL_0023: call void [System.Console]System.Console::WriteLine(string) + IL_0028: ldc.i4.s 100 + IL_002a: stsfld int32 TailcallVerify.Condition10::Result + .try + { + IL_002f: newobj instance void class TailcallVerify.Condition10/Foo2`2::.ctor() + IL_0034: stloc.0 + IL_0035: newobj instance void class TailcallVerify.Condition10/Foo2`2::.ctor() + IL_003a: stloc.1 + IL_003b: newobj instance void class TailcallVerify.Condition10/Foo2`2::.ctor() + IL_0040: stloc.2 + IL_0041: newobj instance void class TailcallVerify.Condition10/Foo2`2::.ctor() + IL_0046: stloc.3 + IL_0047: ldloc.0 + IL_0048: callvirt instance void class TailcallVerify.Condition10/Foo2`2::Test1() + IL_004d: ldloc.1 + IL_004e: callvirt instance void class TailcallVerify.Condition10/Foo2`2::Test1() + IL_0053: ldloc.2 + IL_0054: callvirt instance void class TailcallVerify.Condition10/Foo2`2::Test1() + IL_0059: ldloc.3 + IL_005a: callvirt instance void class TailcallVerify.Condition10/Foo2`2::Test1() + IL_005f: leave.s IL_0077 + + } // end .try + catch [mscorlib]System.Exception + { + IL_0061: stloc.s e + IL_0063: ldc.i4.s 101 + IL_0065: stsfld int32 TailcallVerify.Condition10::Result + IL_006a: ldloc.s e + IL_006c: isinst [mscorlib]System.DivideByZeroException + IL_0071: brtrue.s IL_0075 + + IL_0073: rethrow + IL_0075: leave.s IL_0077 + + } // end handler + IL_0077: ldstr "Execution finished - Test " + IL_007c: ldsfld int32 TailcallVerify.Condition10::Result + IL_0081: ldc.i4.s 100 + IL_0083: beq.s IL_008c + + IL_0085: ldstr "FAILED" + IL_008a: br.s IL_0091 + + IL_008c: ldstr "PASSED" + IL_0091: call string [mscorlib]System.String::Concat(string, + string) + IL_0096: call void [System.Console]System.Console::WriteLine(string) + IL_009b: ldsfld int32 TailcallVerify.Condition10::Result + IL_00a0: ret + } // end of method Condition10::Test4 + + .method public hidebysig static int32 Test5() cil managed nooptimization + { + // Code size 200 (0xc8) + .maxstack 3 + .locals init ([0] class TailcallVerify.Condition10/Foo1`2 foo1, + [1] class TailcallVerify.Condition10/Foo1`2 foo2, + [2] class TailcallVerify.Condition10/Foo1`2 foo3, + [3] class TailcallVerify.Condition10/Foo1`2 foo4, + [4] class [mscorlib]System.Exception e) + IL_0000: ldstr "Executing Condition10.Test5 - Caller: Arguments: N" + + "one - ReturnType: void; Callee: Arguments: None - ReturnType: v" + + "oid" + IL_0005: call void [System.Console]System.Console::WriteLine(string) + IL_000a: ldc.i4.s 100 + IL_000c: stsfld int32 TailcallVerify.Condition10::Result + .try + { + IL_0011: newobj instance void class TailcallVerify.Condition10/Foo1`2::.ctor() + IL_0016: stloc.0 + IL_0017: newobj instance void class TailcallVerify.Condition10/Foo1`2::.ctor() + IL_001c: stloc.1 + IL_001d: newobj instance void class TailcallVerify.Condition10/Foo1`2::.ctor() + IL_0022: stloc.2 + IL_0023: newobj instance void class TailcallVerify.Condition10/Foo1`2::.ctor() + IL_0028: stloc.3 + IL_0029: ldloc.0 + IL_002a: callvirt instance void class TailcallVerify.Condition10/Foo1`2::Test1Recursive() + IL_002f: ldloc.1 + IL_0030: callvirt instance void class TailcallVerify.Condition10/Foo1`2::Test1Recursive() + IL_0035: ldloc.2 + IL_0036: callvirt instance void class TailcallVerify.Condition10/Foo1`2::Test1Recursive() + IL_003b: ldloc.3 + IL_003c: callvirt instance void class TailcallVerify.Condition10/Foo1`2::Test1Recursive() + IL_0041: leave.s IL_009e + + } // end .try + catch [mscorlib]System.Exception + { + IL_0043: stloc.s e + IL_0045: ldloc.s e + IL_0047: isinst [mscorlib]System.DivideByZeroException + IL_004c: brtrue.s IL_0057 + + IL_004e: ldc.i4.s 101 + IL_0050: stsfld int32 TailcallVerify.Condition10::Result + IL_0055: rethrow + IL_0057: ldloc.s e + IL_0059: callvirt instance string [mscorlib]System.Exception::get_StackTrace() + IL_005e: ldstr "Caller" + IL_0063: callvirt instance int32 [mscorlib]System.String::IndexOf(string) + IL_0068: ldc.i4.m1 + IL_0069: beq.s IL_009c + + IL_006b: ldstr "FAILED: Found the word 'Caller' in the stacktrace." + IL_0070: call void [System.Console]System.Console::WriteLine(string) + IL_0075: ldstr "------------------------------------------------" + IL_007a: call void [System.Console]System.Console::WriteLine(string) + IL_007f: call void [System.Console]System.Console::WriteLine() + IL_0084: ldloc.s e + IL_0086: callvirt instance string [mscorlib]System.Exception::get_StackTrace() + IL_008b: call void [System.Console]System.Console::WriteLine(string) + IL_0090: call void [System.Console]System.Console::WriteLine() + IL_0095: ldc.i4.s 101 + IL_0097: stsfld int32 TailcallVerify.Condition10::Result + IL_009c: leave.s IL_009e + + } // end handler + IL_009e: ldstr "Execution finished - Test " + IL_00a3: ldsfld int32 TailcallVerify.Condition10::Result + IL_00a8: ldc.i4.s 100 + IL_00aa: beq.s IL_00b3 + + IL_00ac: ldstr "FAILED" + IL_00b1: br.s IL_00b8 + + IL_00b3: ldstr "PASSED" + IL_00b8: call string [mscorlib]System.String::Concat(string, + string) + IL_00bd: call void [System.Console]System.Console::WriteLine(string) + IL_00c2: ldsfld int32 TailcallVerify.Condition10::Result + IL_00c7: ret + } // end of method Condition10::Test5 + + .method public hidebysig specialname rtspecialname + instance void .ctor() cil managed + { + // Code size 7 (0x7) + .maxstack 8 + IL_0000: ldarg.0 + IL_0001: call instance void [mscorlib]System.Object::.ctor() + IL_0006: ret + } // end of method Condition10::.ctor + + .method private hidebysig specialname rtspecialname static + void .cctor() cil managed + { + // Code size 16 (0x10) + .maxstack 8 + IL_0000: ldc.i4.0 + IL_0001: volatile. + IL_0003: stsfld int32 modreq([mscorlib]System.Runtime.CompilerServices.IsVolatile) TailcallVerify.Condition10::zero + IL_0008: ldc.i4.s 100 + IL_000a: stsfld int32 TailcallVerify.Condition10::Result + IL_000f: ret + } // end of method Condition10::.cctor + +} // end of class TailcallVerify.Condition10 + +.class private auto ansi beforefieldinit TailcallVerify.Condition7 + extends [mscorlib]System.Object +{ + .field private static int32 modreq([mscorlib]System.Runtime.CompilerServices.IsVolatile) zero + .field private static int32 Result + .method public hidebysig static int32 Test1() cil managed nooptimization + { + // Code size 153 (0x99) + .maxstack 3 + .locals init ([0] class [mscorlib]System.Exception e) + IL_0000: ldstr "Executing Condition7.Test1 - Caller: Arguments: No" + + "ne - ReturnType: void; Callee: Arguments: 10 x Int32 - ReturnType: void" + IL_0005: call void [System.Console]System.Console::WriteLine(string) + IL_000a: ldc.i4.s 100 + IL_000c: stsfld int32 TailcallVerify.Condition7::Result + .try + { + IL_0011: call void TailcallVerify.Condition7::Caller1() + IL_0016: leave.s IL_006f + + } // end .try + catch [mscorlib]System.Exception + { + IL_0018: stloc.0 + IL_0019: ldloc.0 + IL_001a: isinst [mscorlib]System.DivideByZeroException + IL_001f: brtrue.s IL_002a + + IL_0021: ldc.i4.s 101 + IL_0023: stsfld int32 TailcallVerify.Condition7::Result + IL_0028: rethrow + IL_002a: ldloc.0 + IL_002b: callvirt instance string [mscorlib]System.Exception::get_StackTrace() + IL_0030: ldstr "Caller" + IL_0035: callvirt instance int32 [mscorlib]System.String::IndexOf(string) + IL_003a: ldc.i4.m1 + IL_003b: beq.s IL_006d + + IL_003d: ldstr "FAILED: Found the word 'Caller' in the stacktrace." + IL_0042: call void [System.Console]System.Console::WriteLine(string) + IL_0047: ldstr "------------------------------------------------" + IL_004c: call void [System.Console]System.Console::WriteLine(string) + IL_0051: call void [System.Console]System.Console::WriteLine() + IL_0056: ldloc.0 + IL_0057: callvirt instance string [mscorlib]System.Exception::get_StackTrace() + IL_005c: call void [System.Console]System.Console::WriteLine(string) + IL_0061: call void [System.Console]System.Console::WriteLine() + IL_0066: ldc.i4.s 101 + IL_0068: stsfld int32 TailcallVerify.Condition7::Result + IL_006d: leave.s IL_006f + + } // end handler + IL_006f: ldstr "Execution finished - Test " + IL_0074: ldsfld int32 TailcallVerify.Condition7::Result + IL_0079: ldc.i4.s 100 + IL_007b: beq.s IL_0084 + + IL_007d: ldstr "FAILED" + IL_0082: br.s IL_0089 + + IL_0084: ldstr "PASSED" + IL_0089: call string [mscorlib]System.String::Concat(string, + string) + IL_008e: call void [System.Console]System.Console::WriteLine(string) + IL_0093: ldsfld int32 TailcallVerify.Condition7::Result + IL_0098: ret + } // end of method Condition7::Test1 + + .method private hidebysig static void Caller1() cil managed + { + // Code size 63 (0x3f) + .maxstack 10 + IL_0000: ldc.i4.0 + IL_0001: newobj instance void [mscorlib]System.Diagnostics.StackFrame::.ctor(bool) + IL_0006: callvirt instance class [mscorlib]System.Reflection.MethodBase [mscorlib]System.Diagnostics.StackFrame::GetMethod() + IL_000b: callvirt instance string [mscorlib]System.Reflection.MemberInfo::get_Name() + IL_0010: ldstr "Caller" + IL_0015: callvirt instance int32 [mscorlib]System.String::IndexOf(string) + IL_001a: ldc.i4.m1 + IL_001b: bne.un.s IL_002e + + IL_001d: ldstr "Failed, Method was inlined..." + IL_0022: call void [System.Console]System.Console::WriteLine(string) + IL_0027: ldc.i4.s 101 + IL_0029: stsfld int32 TailcallVerify.Condition7::Result + IL_002e: ldc.i4.0 + IL_002f: ldc.i4.1 + IL_0030: ldc.i4.2 + IL_0031: ldc.i4.3 + IL_0032: ldc.i4.4 + IL_0033: ldc.i4.5 + IL_0034: ldc.i4.6 + IL_0035: ldc.i4.7 + IL_0036: ldc.i4.8 + IL_0037: ldc.i4.s 9 + IL_0039: tail. call void TailcallVerify.Condition7::Callee1(int32, + int32, + int32, + int32, + int32, + int32, + int32, + int32, + int32, + int32) + IL_003e: ret + } // end of method Condition7::Caller1 + + .method private hidebysig static void Callee1(int32 i1, + int32 i2, + int32 i3, + int32 i4, + int32 i5, + int32 i6, + int32 i7, + int32 i8, + int32 i9, + int32 i10) cil managed noinlining + { + // Code size 11 (0xb) + .maxstack 8 + IL_0000: ldarg.0 + IL_0001: volatile. + IL_0003: ldsfld int32 modreq([mscorlib]System.Runtime.CompilerServices.IsVolatile) TailcallVerify.Condition7::zero + IL_0008: div + IL_0009: pop + IL_000a: ret + } // end of method Condition7::Callee1 + + .method public hidebysig static int32 Test2() cil managed nooptimization + { + // Code size 153 (0x99) + .maxstack 3 + .locals init ([0] class [mscorlib]System.Exception e) + IL_0000: ldstr "Executing Condition7.Test2 - Caller: Arguments: No" + + "ne - ReturnType: void; Callee: Arguments: i32,i64,mb3,i16,u8,f64,f32,mb" + + "5 - ReturnType: void" + IL_0005: call void [System.Console]System.Console::WriteLine(string) + IL_000a: ldc.i4.s 100 + IL_000c: stsfld int32 TailcallVerify.Condition7::Result + .try + { + IL_0011: call void TailcallVerify.Condition7::Caller2() + IL_0016: leave.s IL_006f + + } // end .try + catch [mscorlib]System.Exception + { + IL_0018: stloc.0 + IL_0019: ldloc.0 + IL_001a: isinst [mscorlib]System.DivideByZeroException + IL_001f: brtrue.s IL_002a + + IL_0021: ldc.i4.s 101 + IL_0023: stsfld int32 TailcallVerify.Condition7::Result + IL_0028: rethrow + IL_002a: ldloc.0 + IL_002b: callvirt instance string [mscorlib]System.Exception::get_StackTrace() + IL_0030: ldstr "Caller" + IL_0035: callvirt instance int32 [mscorlib]System.String::IndexOf(string) + IL_003a: ldc.i4.m1 + IL_003b: beq.s IL_006d + + IL_003d: ldstr "FAILED: Found the word 'Caller' in the stacktrace." + IL_0042: call void [System.Console]System.Console::WriteLine(string) + IL_0047: ldstr "------------------------------------------------" + IL_004c: call void [System.Console]System.Console::WriteLine(string) + IL_0051: call void [System.Console]System.Console::WriteLine() + IL_0056: ldloc.0 + IL_0057: callvirt instance string [mscorlib]System.Exception::get_StackTrace() + IL_005c: call void [System.Console]System.Console::WriteLine(string) + IL_0061: call void [System.Console]System.Console::WriteLine() + IL_0066: ldc.i4.s 101 + IL_0068: stsfld int32 TailcallVerify.Condition7::Result + IL_006d: leave.s IL_006f + + } // end handler + IL_006f: ldstr "Execution finished - Test " + IL_0074: ldsfld int32 TailcallVerify.Condition7::Result + IL_0079: ldc.i4.s 100 + IL_007b: beq.s IL_0084 + + IL_007d: ldstr "FAILED" + IL_0082: br.s IL_0089 + + IL_0084: ldstr "PASSED" + IL_0089: call string [mscorlib]System.String::Concat(string, + string) + IL_008e: call void [System.Console]System.Console::WriteLine(string) + IL_0093: ldsfld int32 TailcallVerify.Condition7::Result + IL_0098: ret + } // end of method Condition7::Test2 + + .method private hidebysig static void Caller2() cil managed + { + // Code size 174 (0xae) + .maxstack 8 + .locals init ([0] valuetype TailcallVerify.ValueType3Bytes v3, + [1] valuetype TailcallVerify.ValueType5Bytes v5, + [2] valuetype TailcallVerify.ValueType3Bytes '<>g__initLocal0', + [3] valuetype TailcallVerify.ValueType5Bytes '<>g__initLocal1', + [4] valuetype TailcallVerify.ValueType3Bytes CS$0$0000, + [5] valuetype TailcallVerify.ValueType5Bytes CS$0$0001) + IL_0000: ldc.i4.0 + IL_0001: newobj instance void [mscorlib]System.Diagnostics.StackFrame::.ctor(bool) + IL_0006: callvirt instance class [mscorlib]System.Reflection.MethodBase [mscorlib]System.Diagnostics.StackFrame::GetMethod() + IL_000b: callvirt instance string [mscorlib]System.Reflection.MemberInfo::get_Name() + IL_0010: ldstr "Caller" + IL_0015: callvirt instance int32 [mscorlib]System.String::IndexOf(string) + IL_001a: ldc.i4.m1 + IL_001b: bne.un.s IL_002e + + IL_001d: ldstr "Failed, Method was inlined..." + IL_0022: call void [System.Console]System.Console::WriteLine(string) + IL_0027: ldc.i4.s 101 + IL_0029: stsfld int32 TailcallVerify.Condition7::Result + IL_002e: ldloca.s CS$0$0000 + IL_0030: initobj TailcallVerify.ValueType3Bytes + IL_0036: ldloc.s CS$0$0000 + IL_0038: stloc.2 + IL_0039: ldloca.s '<>g__initLocal0' + IL_003b: ldc.i4.0 + IL_003c: stfld uint8 TailcallVerify.ValueType3Bytes::i1 + IL_0041: ldloca.s '<>g__initLocal0' + IL_0043: ldc.i4 0x7fff + IL_0048: stfld int16 TailcallVerify.ValueType3Bytes::i2 + IL_004d: ldloc.2 + IL_004e: stloc.0 + IL_004f: ldloca.s CS$0$0001 + IL_0051: initobj TailcallVerify.ValueType5Bytes + IL_0057: ldloc.s CS$0$0001 + IL_0059: stloc.3 + IL_005a: ldloca.s '<>g__initLocal1' + IL_005c: ldc.i4 0xff + IL_0061: stfld uint8 TailcallVerify.ValueType5Bytes::i1 + IL_0066: ldloca.s '<>g__initLocal1' + IL_0068: ldc.i4 0xffff8000 + IL_006d: stfld int16 TailcallVerify.ValueType5Bytes::i2 + IL_0072: ldloca.s '<>g__initLocal1' + IL_0074: ldc.i4 0x7fff + IL_0079: stfld int16 TailcallVerify.ValueType5Bytes::i3 + IL_007e: ldloc.3 + IL_007f: stloc.1 + IL_0080: ldc.i4 0x80000000 + IL_0085: ldc.i8 0x7fffffffffffffff + IL_008e: ldloc.0 + IL_008f: ldc.i4 0xffff8000 + IL_0094: ldc.i4 0xff + IL_0099: ldc.r8 -1.7976931348623157e+308 + IL_00a2: ldc.r4 3.4028235e+038 + IL_00a7: ldloc.1 + IL_00a8: tail. call void TailcallVerify.Condition7::Callee2(int32, + int64, + valuetype TailcallVerify.ValueType3Bytes, + int16, + uint8, + float64, + float32, + valuetype TailcallVerify.ValueType5Bytes) + IL_00ad: ret + } // end of method Condition7::Caller2 + + .method private hidebysig static void Callee2(int32 i1, + int64 i2, + valuetype TailcallVerify.ValueType3Bytes v3, + int16 i4, + uint8 b5, + float64 d6, + float32 f7, + valuetype TailcallVerify.ValueType5Bytes v8) cil managed noinlining + { + // Code size 308 (0x134) + .maxstack 4 + .locals init ([0] object[] CS$0$0000) + IL_0000: ldarg.0 + IL_0001: ldc.i4 0x80000000 + IL_0006: bne.un.s IL_007f + + IL_0008: ldarg.1 + IL_0009: ldc.i8 0x7fffffffffffffff + IL_0012: bne.un.s IL_007f + + IL_0014: ldarga.s v3 + IL_0016: ldfld uint8 TailcallVerify.ValueType3Bytes::i1 + IL_001b: brtrue.s IL_007f + + IL_001d: ldarga.s v3 + IL_001f: ldfld int16 TailcallVerify.ValueType3Bytes::i2 + IL_0024: ldc.i4 0x7fff + IL_0029: bne.un.s IL_007f + + IL_002b: ldarg.3 + IL_002c: ldc.i4 0xffff8000 + IL_0031: bne.un.s IL_007f + + IL_0033: ldarg.s b5 + IL_0035: ldc.i4 0xff + IL_003a: bne.un.s IL_007f + + IL_003c: ldarg.s d6 + IL_003e: ldc.r8 -1.7976931348623157e+308 + IL_0047: bne.un.s IL_007f + + IL_0049: ldarg.s f7 + IL_004b: ldc.r4 3.4028235e+038 + IL_0050: bne.un.s IL_007f + + IL_0052: ldarga.s v8 + IL_0054: ldfld uint8 TailcallVerify.ValueType5Bytes::i1 + IL_0059: ldc.i4 0xff + IL_005e: bne.un.s IL_007f + + IL_0060: ldarga.s v8 + IL_0062: ldfld int16 TailcallVerify.ValueType5Bytes::i2 + IL_0067: ldc.i4 0xffff8000 + IL_006c: bne.un.s IL_007f + + IL_006e: ldarga.s v8 + IL_0070: ldfld int16 TailcallVerify.ValueType5Bytes::i3 + IL_0075: ldc.i4 0x7fff + IL_007a: beq IL_0129 + + IL_007f: ldc.i4.s 101 + IL_0081: stsfld int32 TailcallVerify.Condition7::Result + IL_0086: ldstr "FAILED: Passed in arguments are invalid." + IL_008b: call void [System.Console]System.Console::WriteLine(string) + IL_0090: ldstr "i1:{0} != Int32.MinValue || i2:{1} != Int64.MaxVal" + + "ue || v3.i1:{2} != byte.MinValue || v3.i2:{3} != short.MaxValue || i4:{" + + "4} != Int16.MinValue || b5:{5} != byte.MaxValue || d6:{6} != double.Min" + + "Value || f7:{7} != float.MaxValue || v8.i1:{8} != byte.MaxValue || v8.i" + + "2:{9} != short.MinValue || v8.i3:{10} != short.MaxValue" + IL_0095: ldc.i4.s 11 + IL_0097: newarr [mscorlib]System.Object + IL_009c: stloc.0 + IL_009d: ldloc.0 + IL_009e: ldc.i4.0 + IL_009f: ldarg.0 + IL_00a0: box [mscorlib]System.Int32 + IL_00a5: stelem.ref + IL_00a6: ldloc.0 + IL_00a7: ldc.i4.1 + IL_00a8: ldarg.1 + IL_00a9: box [mscorlib]System.Int64 + IL_00ae: stelem.ref + IL_00af: ldloc.0 + IL_00b0: ldc.i4.2 + IL_00b1: ldarga.s v3 + IL_00b3: ldfld uint8 TailcallVerify.ValueType3Bytes::i1 + IL_00b8: box [mscorlib]System.Byte + IL_00bd: stelem.ref + IL_00be: ldloc.0 + IL_00bf: ldc.i4.3 + IL_00c0: ldarga.s v3 + IL_00c2: ldfld int16 TailcallVerify.ValueType3Bytes::i2 + IL_00c7: box [mscorlib]System.Int16 + IL_00cc: stelem.ref + IL_00cd: ldloc.0 + IL_00ce: ldc.i4.4 + IL_00cf: ldarg.3 + IL_00d0: box [mscorlib]System.Int16 + IL_00d5: stelem.ref + IL_00d6: ldloc.0 + IL_00d7: ldc.i4.5 + IL_00d8: ldarg.s b5 + IL_00da: box [mscorlib]System.Byte + IL_00df: stelem.ref + IL_00e0: ldloc.0 + IL_00e1: ldc.i4.6 + IL_00e2: ldarg.s d6 + IL_00e4: box [mscorlib]System.Double + IL_00e9: stelem.ref + IL_00ea: ldloc.0 + IL_00eb: ldc.i4.7 + IL_00ec: ldarg.s f7 + IL_00ee: box [mscorlib]System.Single + IL_00f3: stelem.ref + IL_00f4: ldloc.0 + IL_00f5: ldc.i4.8 + IL_00f6: ldarga.s v8 + IL_00f8: ldfld uint8 TailcallVerify.ValueType5Bytes::i1 + IL_00fd: box [mscorlib]System.Byte + IL_0102: stelem.ref + IL_0103: ldloc.0 + IL_0104: ldc.i4.s 9 + IL_0106: ldarga.s v8 + IL_0108: ldfld int16 TailcallVerify.ValueType5Bytes::i2 + IL_010d: box [mscorlib]System.Int16 + IL_0112: stelem.ref + IL_0113: ldloc.0 + IL_0114: ldc.i4.s 10 + IL_0116: ldarga.s v8 + IL_0118: ldfld int16 TailcallVerify.ValueType5Bytes::i3 + IL_011d: box [mscorlib]System.Int16 + IL_0122: stelem.ref + IL_0123: ldloc.0 + IL_0124: call void [System.Console]System.Console::WriteLine(string, + object[]) + IL_0129: ldc.i4.1 + IL_012a: volatile. + IL_012c: ldsfld int32 modreq([mscorlib]System.Runtime.CompilerServices.IsVolatile) TailcallVerify.Condition7::zero + IL_0131: div + IL_0132: pop + IL_0133: ret + } // end of method Condition7::Callee2 + + .method public hidebysig static int32 Test3() cil managed nooptimization + { + // Code size 193 (0xc1) + .maxstack 6 + .locals init ([0] class [mscorlib]System.Exception e, + [1] valuetype TailcallVerify.ValueType3Bytes CS$0$0000, + [2] valuetype TailcallVerify.ValueType5Bytes CS$0$0001, + [3] valuetype TailcallVerify.ValueTypeSingleInt64 CS$0$0002, + [4] valuetype TailcallVerify.ValueType3Bytes CS$0$0003, + [5] valuetype TailcallVerify.ValueType5Bytes CS$0$0004, + [6] valuetype TailcallVerify.ValueType3Bytes CS$0$0005) + IL_0000: ldstr "Executing Condition7.Test3 - Caller: Arguments: mb" + + "3,mb5,mb8,mb3,mb5,mb3 - ReturnType: void; Callee: Arguments: mb3,mb5,mb" + + "8,mb3,mb5,mb3 - ReturnType: void" + IL_0005: call void [System.Console]System.Console::WriteLine(string) + IL_000a: ldc.i4.s 100 + IL_000c: stsfld int32 TailcallVerify.Condition7::Result + .try + { + IL_0011: ldloca.s CS$0$0000 + IL_0013: initobj TailcallVerify.ValueType3Bytes + IL_0019: ldloc.1 + IL_001a: ldloca.s CS$0$0001 + IL_001c: initobj TailcallVerify.ValueType5Bytes + IL_0022: ldloc.2 + IL_0023: ldloca.s CS$0$0002 + IL_0025: initobj TailcallVerify.ValueTypeSingleInt64 + IL_002b: ldloc.3 + IL_002c: ldloca.s CS$0$0003 + IL_002e: initobj TailcallVerify.ValueType3Bytes + IL_0034: ldloc.s CS$0$0003 + IL_0036: ldloca.s CS$0$0004 + IL_0038: initobj TailcallVerify.ValueType5Bytes + IL_003e: ldloc.s CS$0$0004 + IL_0040: ldloca.s CS$0$0005 + IL_0042: initobj TailcallVerify.ValueType3Bytes + IL_0048: ldloc.s CS$0$0005 + IL_004a: call void TailcallVerify.Condition7::Caller3(valuetype TailcallVerify.ValueType3Bytes, + valuetype TailcallVerify.ValueType5Bytes, + valuetype TailcallVerify.ValueTypeSingleInt64, + valuetype TailcallVerify.ValueType3Bytes, + valuetype TailcallVerify.ValueType5Bytes, + valuetype TailcallVerify.ValueType3Bytes) + IL_004f: leave.s IL_0097 + + } // end .try + catch [mscorlib]System.Exception + { + IL_0051: stloc.0 + IL_0052: ldloc.0 + IL_0053: callvirt instance string [mscorlib]System.Exception::get_StackTrace() + IL_0058: ldstr "Caller" + IL_005d: callvirt instance int32 [mscorlib]System.String::IndexOf(string) + IL_0062: ldc.i4.m1 + IL_0063: beq.s IL_0095 + + IL_0065: ldstr "FAILED: Found the word 'Caller' in the stacktrace." + IL_006a: call void [System.Console]System.Console::WriteLine(string) + IL_006f: ldstr "------------------------------------------------" + IL_0074: call void [System.Console]System.Console::WriteLine(string) + IL_0079: call void [System.Console]System.Console::WriteLine() + IL_007e: ldloc.0 + IL_007f: callvirt instance string [mscorlib]System.Exception::get_StackTrace() + IL_0084: call void [System.Console]System.Console::WriteLine(string) + IL_0089: call void [System.Console]System.Console::WriteLine() + IL_008e: ldc.i4.s 101 + IL_0090: stsfld int32 TailcallVerify.Condition7::Result + IL_0095: leave.s IL_0097 + + } // end handler + IL_0097: ldstr "Execution finished - Test " + IL_009c: ldsfld int32 TailcallVerify.Condition7::Result + IL_00a1: ldc.i4.s 100 + IL_00a3: beq.s IL_00ac + + IL_00a5: ldstr "FAILED" + IL_00aa: br.s IL_00b1 + + IL_00ac: ldstr "PASSED" + IL_00b1: call string [mscorlib]System.String::Concat(string, + string) + IL_00b6: call void [System.Console]System.Console::WriteLine(string) + IL_00bb: ldsfld int32 TailcallVerify.Condition7::Result + IL_00c0: ret + } // end of method Condition7::Test3 + + .method private hidebysig static void Caller3(valuetype TailcallVerify.ValueType3Bytes v1, + valuetype TailcallVerify.ValueType5Bytes v2, + valuetype TailcallVerify.ValueTypeSingleInt64 v3, + valuetype TailcallVerify.ValueType3Bytes v4, + valuetype TailcallVerify.ValueType5Bytes v5, + valuetype TailcallVerify.ValueType3Bytes v6) cil managed + { + // Code size 60 (0x3c) + .maxstack 8 + IL_0000: ldc.i4.0 + IL_0001: newobj instance void [mscorlib]System.Diagnostics.StackFrame::.ctor(bool) + IL_0006: callvirt instance class [mscorlib]System.Reflection.MethodBase [mscorlib]System.Diagnostics.StackFrame::GetMethod() + IL_000b: callvirt instance string [mscorlib]System.Reflection.MemberInfo::get_Name() + IL_0010: ldstr "Caller" + IL_0015: callvirt instance int32 [mscorlib]System.String::IndexOf(string) + IL_001a: ldc.i4.m1 + IL_001b: bne.un.s IL_002e + + IL_001d: ldstr "Failed, Method was inlined..." + IL_0022: call void [System.Console]System.Console::WriteLine(string) + IL_0027: ldc.i4.s 101 + IL_0029: stsfld int32 TailcallVerify.Condition7::Result + IL_002e: ldarg.0 + IL_002f: ldarg.1 + IL_0030: ldarg.2 + IL_0031: ldarg.3 + IL_0032: ldarg.s v5 + IL_0034: ldarg.s v6 + IL_0036: tail. call void TailcallVerify.Condition7::Callee3(valuetype TailcallVerify.ValueType3Bytes, + valuetype TailcallVerify.ValueType5Bytes, + valuetype TailcallVerify.ValueTypeSingleInt64, + valuetype TailcallVerify.ValueType3Bytes, + valuetype TailcallVerify.ValueType5Bytes, + valuetype TailcallVerify.ValueType3Bytes) + IL_003b: ret + } // end of method Condition7::Caller3 + + .method private hidebysig static void Callee3(valuetype TailcallVerify.ValueType3Bytes v1, + valuetype TailcallVerify.ValueType5Bytes v2, + valuetype TailcallVerify.ValueTypeSingleInt64 v3, + valuetype TailcallVerify.ValueType3Bytes v4, + valuetype TailcallVerify.ValueType5Bytes v5, + valuetype TailcallVerify.ValueType3Bytes v6) cil managed noinlining + { + // Code size 18 (0x12) + .maxstack 8 + IL_0000: ldarga.s v1 + IL_0002: ldc.i4.1 + IL_0003: volatile. + IL_0005: ldsfld int32 modreq([mscorlib]System.Runtime.CompilerServices.IsVolatile) TailcallVerify.Condition7::zero + IL_000a: div + IL_000b: conv.i2 + IL_000c: stfld int16 TailcallVerify.ValueType3Bytes::i2 + IL_0011: ret + } // end of method Condition7::Callee3 + + .method public hidebysig static int32 Test4() cil managed nooptimization + { + // Code size 193 (0xc1) + .maxstack 6 + .locals init ([0] class [mscorlib]System.Exception e, + [1] valuetype TailcallVerify.ValueType3Bytes CS$0$0000, + [2] valuetype TailcallVerify.ValueType5Bytes CS$0$0001, + [3] valuetype TailcallVerify.ValueTypeSingleInt64 CS$0$0002, + [4] valuetype TailcallVerify.ValueType3Bytes CS$0$0003, + [5] valuetype TailcallVerify.ValueType5Bytes CS$0$0004, + [6] valuetype TailcallVerify.ValueType3Bytes CS$0$0005) + IL_0000: ldstr "Executing Condition7.Test4 - Caller: Arguments: mb" + + "3,mb5,mb8,mb3,mb5,mb3 - ReturnType: void; Callee: Arguments: mb3,mb5,mb" + + "8,mb3,mb5,mb3 - ReturnType: void" + IL_0005: call void [System.Console]System.Console::WriteLine(string) + IL_000a: ldc.i4.s 100 + IL_000c: stsfld int32 TailcallVerify.Condition7::Result + .try + { + IL_0011: ldloca.s CS$0$0000 + IL_0013: initobj TailcallVerify.ValueType3Bytes + IL_0019: ldloc.1 + IL_001a: ldloca.s CS$0$0001 + IL_001c: initobj TailcallVerify.ValueType5Bytes + IL_0022: ldloc.2 + IL_0023: ldloca.s CS$0$0002 + IL_0025: initobj TailcallVerify.ValueTypeSingleInt64 + IL_002b: ldloc.3 + IL_002c: ldloca.s CS$0$0003 + IL_002e: initobj TailcallVerify.ValueType3Bytes + IL_0034: ldloc.s CS$0$0003 + IL_0036: ldloca.s CS$0$0004 + IL_0038: initobj TailcallVerify.ValueType5Bytes + IL_003e: ldloc.s CS$0$0004 + IL_0040: ldloca.s CS$0$0005 + IL_0042: initobj TailcallVerify.ValueType3Bytes + IL_0048: ldloc.s CS$0$0005 + IL_004a: call void TailcallVerify.Condition7::Caller4(valuetype TailcallVerify.ValueType3Bytes, + valuetype TailcallVerify.ValueType5Bytes, + valuetype TailcallVerify.ValueTypeSingleInt64, + valuetype TailcallVerify.ValueType3Bytes, + valuetype TailcallVerify.ValueType5Bytes, + valuetype TailcallVerify.ValueType3Bytes) + IL_004f: leave.s IL_0097 + + } // end .try + catch [mscorlib]System.Exception + { + IL_0051: stloc.0 + IL_0052: ldloc.0 + IL_0053: callvirt instance string [mscorlib]System.Exception::get_StackTrace() + IL_0058: ldstr "Caller" + IL_005d: callvirt instance int32 [mscorlib]System.String::IndexOf(string) + IL_0062: ldc.i4.m1 + IL_0063: beq.s IL_0095 + + IL_0065: ldstr "FAILED: Found the word 'Caller' in the stacktrace." + IL_006a: call void [System.Console]System.Console::WriteLine(string) + IL_006f: ldstr "------------------------------------------------" + IL_0074: call void [System.Console]System.Console::WriteLine(string) + IL_0079: call void [System.Console]System.Console::WriteLine() + IL_007e: ldloc.0 + IL_007f: callvirt instance string [mscorlib]System.Exception::get_StackTrace() + IL_0084: call void [System.Console]System.Console::WriteLine(string) + IL_0089: call void [System.Console]System.Console::WriteLine() + IL_008e: ldc.i4.s 101 + IL_0090: stsfld int32 TailcallVerify.Condition7::Result + IL_0095: leave.s IL_0097 + + } // end handler + IL_0097: ldstr "Execution finished - Test " + IL_009c: ldsfld int32 TailcallVerify.Condition7::Result + IL_00a1: ldc.i4.s 100 + IL_00a3: beq.s IL_00ac + + IL_00a5: ldstr "FAILED" + IL_00aa: br.s IL_00b1 + + IL_00ac: ldstr "PASSED" + IL_00b1: call string [mscorlib]System.String::Concat(string, + string) + IL_00b6: call void [System.Console]System.Console::WriteLine(string) + IL_00bb: ldsfld int32 TailcallVerify.Condition7::Result + IL_00c0: ret + } // end of method Condition7::Test4 + + .method private hidebysig static void Caller4(valuetype TailcallVerify.ValueType3Bytes v1, + valuetype TailcallVerify.ValueType5Bytes v2, + valuetype TailcallVerify.ValueTypeSingleInt64 v3, + valuetype TailcallVerify.ValueType3Bytes v4, + valuetype TailcallVerify.ValueType5Bytes v5, + valuetype TailcallVerify.ValueType3Bytes v6) cil managed + { + // Code size 81 (0x51) + .maxstack 7 + .locals init ([0] int32[] a) + IL_0000: ldc.i4.0 + IL_0001: newobj instance void [mscorlib]System.Diagnostics.StackFrame::.ctor(bool) + IL_0006: callvirt instance class [mscorlib]System.Reflection.MethodBase [mscorlib]System.Diagnostics.StackFrame::GetMethod() + IL_000b: callvirt instance string [mscorlib]System.Reflection.MemberInfo::get_Name() + IL_0010: ldstr "Caller" + IL_0015: callvirt instance int32 [mscorlib]System.String::IndexOf(string) + IL_001a: ldc.i4.m1 + IL_001b: bne.un.s IL_002e + + IL_001d: ldstr "Failed, Method was inlined..." + IL_0022: call void [System.Console]System.Console::WriteLine(string) + IL_0027: ldc.i4.s 101 + IL_0029: stsfld int32 TailcallVerify.Condition7::Result + IL_002e: ldc.i4.5 + IL_002f: newarr [mscorlib]System.Int32 + IL_0034: dup + IL_0035: ldtoken field valuetype '{D1242658-CA16-4D11-A740-6635F112F4B5}'/'__StaticArrayInitTypeSize=20' '{D1242658-CA16-4D11-A740-6635F112F4B5}'::'$$method0x6000076-1' + IL_003a: call void [mscorlib]System.Runtime.CompilerServices.RuntimeHelpers::InitializeArray(class [mscorlib]System.Array, + valuetype [mscorlib]System.RuntimeFieldHandle) + IL_003f: stloc.0 + IL_0040: ldarg.0 + IL_0041: ldarg.1 + IL_0042: ldarg.2 + IL_0043: ldarg.3 + IL_0044: ldarg.s v5 + IL_0046: ldarg.s v6 + IL_0048: ldloc.0 + IL_0049: ldlen + IL_004a: conv.i4 + IL_004b: tail. call void TailcallVerify.Condition7::Callee4(valuetype TailcallVerify.ValueType3Bytes, + valuetype TailcallVerify.ValueType5Bytes, + valuetype TailcallVerify.ValueTypeSingleInt64, + valuetype TailcallVerify.ValueType3Bytes, + valuetype TailcallVerify.ValueType5Bytes, + valuetype TailcallVerify.ValueType3Bytes, + int32) + IL_0050: ret + } // end of method Condition7::Caller4 + + .method private hidebysig static void Callee4(valuetype TailcallVerify.ValueType3Bytes v1, + valuetype TailcallVerify.ValueType5Bytes v2, + valuetype TailcallVerify.ValueTypeSingleInt64 v3, + valuetype TailcallVerify.ValueType3Bytes v4, + valuetype TailcallVerify.ValueType5Bytes v5, + valuetype TailcallVerify.ValueType3Bytes v6, + int32 i7) cil managed noinlining + { + // Code size 18 (0x12) + .maxstack 8 + IL_0000: ldarga.s v1 + IL_0002: ldc.i4.1 + IL_0003: volatile. + IL_0005: ldsfld int32 modreq([mscorlib]System.Runtime.CompilerServices.IsVolatile) TailcallVerify.Condition7::zero + IL_000a: div + IL_000b: conv.i2 + IL_000c: stfld int16 TailcallVerify.ValueType3Bytes::i2 + IL_0011: ret + } // end of method Condition7::Callee4 + + .method public hidebysig specialname rtspecialname + instance void .ctor() cil managed + { + // Code size 7 (0x7) + .maxstack 8 + IL_0000: ldarg.0 + IL_0001: call instance void [mscorlib]System.Object::.ctor() + IL_0006: ret + } // end of method Condition7::.ctor + + .method private hidebysig specialname rtspecialname static + void .cctor() cil managed + { + // Code size 16 (0x10) + .maxstack 8 + IL_0000: ldc.i4.0 + IL_0001: volatile. + IL_0003: stsfld int32 modreq([mscorlib]System.Runtime.CompilerServices.IsVolatile) TailcallVerify.Condition7::zero + IL_0008: ldc.i4.s 100 + IL_000a: stsfld int32 TailcallVerify.Condition7::Result + IL_000f: ret + } // end of method Condition7::.cctor + +} // end of class TailcallVerify.Condition7 + +.class private auto ansi beforefieldinit TailcallVerify.Condition20 + extends [mscorlib]System.Object +{ + .field private static int32 Result + .method public hidebysig static int32 Test1() cil managed nooptimization + { + // Code size 158 (0x9e) + .maxstack 3 + .locals init ([0] class [mscorlib]System.Exception e) + IL_0000: ldstr "Executing Condition20.Test1 - Caller: Arguments: i" + + "nt - ReturnType: void; Callee: the same as Caller (called again)" + IL_0005: call void [System.Console]System.Console::WriteLine(string) + IL_000a: ldc.i4.s 100 + IL_000c: stsfld int32 TailcallVerify.Condition20::Result + .try + { + IL_0011: ldc.i4 0xc8 + IL_0016: call void TailcallVerify.Condition20::Caller1(int32) + IL_001b: leave.s IL_0074 + + } // end .try + catch [mscorlib]System.Exception + { + IL_001d: stloc.0 + IL_001e: ldloc.0 + IL_001f: isinst [mscorlib]System.DivideByZeroException + IL_0024: brtrue.s IL_002f + + IL_0026: ldc.i4.s 101 + IL_0028: stsfld int32 TailcallVerify.Condition20::Result + IL_002d: rethrow + IL_002f: ldloc.0 + IL_0030: callvirt instance string [mscorlib]System.Exception::get_StackTrace() + IL_0035: ldstr "Caller" + IL_003a: callvirt instance int32 [mscorlib]System.String::IndexOf(string) + IL_003f: ldc.i4.m1 + IL_0040: bne.un.s IL_0072 + + IL_0042: ldstr "FAILED: Did not find the word 'Caller' in the stac" + + "ktrace." + IL_0047: call void [System.Console]System.Console::WriteLine(string) + IL_004c: ldstr "------------------------------------------------" + IL_0051: call void [System.Console]System.Console::WriteLine(string) + IL_0056: call void [System.Console]System.Console::WriteLine() + IL_005b: ldloc.0 + IL_005c: callvirt instance string [mscorlib]System.Exception::get_StackTrace() + IL_0061: call void [System.Console]System.Console::WriteLine(string) + IL_0066: call void [System.Console]System.Console::WriteLine() + IL_006b: ldc.i4.s 101 + IL_006d: stsfld int32 TailcallVerify.Condition20::Result + IL_0072: leave.s IL_0074 + + } // end handler + IL_0074: ldstr "Execution finished - Test " + IL_0079: ldsfld int32 TailcallVerify.Condition20::Result + IL_007e: ldc.i4.s 100 + IL_0080: beq.s IL_0089 + + IL_0082: ldstr "FAILED" + IL_0087: br.s IL_008e + + IL_0089: ldstr "PASSED" + IL_008e: call string [mscorlib]System.String::Concat(string, + string) + IL_0093: call void [System.Console]System.Console::WriteLine(string) + IL_0098: ldsfld int32 TailcallVerify.Condition20::Result + IL_009d: ret + } // end of method Condition20::Test1 + + .method private hidebysig static void Caller1(int32 i) cil managed noinlining + { + // Code size 60 (0x3c) + .maxstack 8 + IL_0000: ldc.i4.0 + IL_0001: newobj instance void [mscorlib]System.Diagnostics.StackFrame::.ctor(bool) + IL_0006: callvirt instance class [mscorlib]System.Reflection.MethodBase [mscorlib]System.Diagnostics.StackFrame::GetMethod() + IL_000b: callvirt instance string [mscorlib]System.Reflection.MemberInfo::get_Name() + IL_0010: ldstr "Caller" + IL_0015: callvirt instance int32 [mscorlib]System.String::IndexOf(string) + IL_001a: ldc.i4.m1 + IL_001b: bne.un.s IL_002e + + IL_001d: ldstr "Failed, Method was inlined..." + IL_0022: call void [System.Console]System.Console::WriteLine(string) + IL_0027: ldc.i4.s 101 + IL_0029: stsfld int32 TailcallVerify.Condition20::Result + IL_002e: ldc.i4.s 10 + IL_0030: ldarg.0 + IL_0031: div + IL_0032: pop + IL_0033: ldarg.0 + IL_0034: ldc.i4.1 + IL_0035: sub + IL_0036: call void TailcallVerify.Condition20::Caller1(int32) + IL_003b: ret + } // end of method Condition20::Caller1 + + .method public hidebysig specialname rtspecialname + instance void .ctor() cil managed + { + // Code size 7 (0x7) + .maxstack 8 + IL_0000: ldarg.0 + IL_0001: call instance void [mscorlib]System.Object::.ctor() + IL_0006: ret + } // end of method Condition20::.ctor + + .method private hidebysig specialname rtspecialname static + void .cctor() cil managed + { + // Code size 8 (0x8) + .maxstack 8 + IL_0000: ldc.i4.s 100 + IL_0002: stsfld int32 TailcallVerify.Condition20::Result + IL_0007: ret + } // end of method Condition20::.cctor + +} // end of class TailcallVerify.Condition20 + +.class private auto ansi beforefieldinit TailcallVerify.Condition6 + extends [mscorlib]System.Object +{ + .field private static int32 modreq([mscorlib]System.Runtime.CompilerServices.IsVolatile) zero + .field private static int32 Result + .method public hidebysig static int32 Test1() cil managed nooptimization + { + // Code size 136 (0x88) + .maxstack 3 + .locals init ([0] class [mscorlib]System.Exception e) + IL_0000: ldstr "Executing Condition6.Test1 - Caller: Arguments: No" + + "ne - ReturnType: void; Callee: Arguments: 3 byte struct - ReturnType: v" + + "oid" + IL_0005: call void [System.Console]System.Console::WriteLine(string) + IL_000a: ldc.i4.s 100 + IL_000c: stsfld int32 TailcallVerify.Condition6::Result + .try + { + IL_0011: call void TailcallVerify.Condition6::Caller1() + IL_0016: leave.s IL_005e + + } // end .try + catch [mscorlib]System.Exception + { + IL_0018: stloc.0 + IL_0019: ldloc.0 + IL_001a: callvirt instance string [mscorlib]System.Exception::get_StackTrace() + IL_001f: ldstr "Caller" + IL_0024: callvirt instance int32 [mscorlib]System.String::IndexOf(string) + IL_0029: ldc.i4.m1 + IL_002a: beq.s IL_005c + + IL_002c: ldstr "FAILED: Found the word 'Caller' in the stacktrace." + IL_0031: call void [System.Console]System.Console::WriteLine(string) + IL_0036: ldstr "------------------------------------------------" + IL_003b: call void [System.Console]System.Console::WriteLine(string) + IL_0040: call void [System.Console]System.Console::WriteLine() + IL_0045: ldloc.0 + IL_0046: callvirt instance string [mscorlib]System.Exception::get_StackTrace() + IL_004b: call void [System.Console]System.Console::WriteLine(string) + IL_0050: call void [System.Console]System.Console::WriteLine() + IL_0055: ldc.i4.s 101 + IL_0057: stsfld int32 TailcallVerify.Condition6::Result + IL_005c: leave.s IL_005e + + } // end handler + IL_005e: ldstr "Execution finished - Test " + IL_0063: ldsfld int32 TailcallVerify.Condition6::Result + IL_0068: ldc.i4.s 100 + IL_006a: beq.s IL_0073 + + IL_006c: ldstr "FAILED" + IL_0071: br.s IL_0078 + + IL_0073: ldstr "PASSED" + IL_0078: call string [mscorlib]System.String::Concat(string, + string) + IL_007d: call void [System.Console]System.Console::WriteLine(string) + IL_0082: ldsfld int32 TailcallVerify.Condition6::Result + IL_0087: ret + } // end of method Condition6::Test1 + + .method private hidebysig static void Caller1() cil managed + { + // Code size 70 (0x46) + .maxstack 2 + .locals init ([0] valuetype TailcallVerify.ValueType3Bytes CS$0$0000, + [1] valuetype TailcallVerify.ValueType5Bytes CS$0$0001) + IL_0000: ldc.i4.0 + IL_0001: newobj instance void [mscorlib]System.Diagnostics.StackFrame::.ctor(bool) + IL_0006: callvirt instance class [mscorlib]System.Reflection.MethodBase [mscorlib]System.Diagnostics.StackFrame::GetMethod() + IL_000b: callvirt instance string [mscorlib]System.Reflection.MemberInfo::get_Name() + IL_0010: ldstr "Caller" + IL_0015: callvirt instance int32 [mscorlib]System.String::IndexOf(string) + IL_001a: ldc.i4.m1 + IL_001b: bne.un.s IL_002e + + IL_001d: ldstr "Failed, Method was inlined..." + IL_0022: call void [System.Console]System.Console::WriteLine(string) + IL_0027: ldc.i4.s 101 + IL_0029: stsfld int32 TailcallVerify.Condition6::Result + IL_002e: ldloca.s CS$0$0000 + IL_0030: initobj TailcallVerify.ValueType3Bytes + IL_0036: ldloc.0 + IL_0037: ldloca.s CS$0$0001 + IL_0039: initobj TailcallVerify.ValueType5Bytes + IL_003f: ldloc.1 + IL_0040: tail. call void TailcallVerify.Condition6::Callee1(valuetype TailcallVerify.ValueType3Bytes, + valuetype TailcallVerify.ValueType5Bytes) + IL_0045: ret + } // end of method Condition6::Caller1 + + .method private hidebysig static void Callee1(valuetype TailcallVerify.ValueType3Bytes v, + valuetype TailcallVerify.ValueType5Bytes v5) cil managed noinlining + { + // Code size 18 (0x12) + .maxstack 8 + IL_0000: ldarga.s v + IL_0002: ldc.i4.1 + IL_0003: volatile. + IL_0005: ldsfld int32 modreq([mscorlib]System.Runtime.CompilerServices.IsVolatile) TailcallVerify.Condition6::zero + IL_000a: div + IL_000b: conv.i2 + IL_000c: stfld int16 TailcallVerify.ValueType3Bytes::i2 + IL_0011: ret + } // end of method Condition6::Callee1 + + .method public hidebysig static int32 Test2() cil managed nooptimization + { + // Code size 136 (0x88) + .maxstack 3 + .locals init ([0] class [mscorlib]System.Exception e) + IL_0000: ldstr "Executing Condition6.Test2 - Caller: Arguments: No" + + "ne - ReturnType: void; Callee: Arguments: 3 byte struct - ReturnType: v" + + "oid" + IL_0005: call void [System.Console]System.Console::WriteLine(string) + IL_000a: ldc.i4.s 100 + IL_000c: stsfld int32 TailcallVerify.Condition6::Result + .try + { + IL_0011: call void TailcallVerify.Condition6::Caller2() + IL_0016: leave.s IL_005e + + } // end .try + catch [mscorlib]System.Exception + { + IL_0018: stloc.0 + IL_0019: ldloc.0 + IL_001a: callvirt instance string [mscorlib]System.Exception::get_StackTrace() + IL_001f: ldstr "Caller" + IL_0024: callvirt instance int32 [mscorlib]System.String::IndexOf(string) + IL_0029: ldc.i4.m1 + IL_002a: beq.s IL_005c + + IL_002c: ldstr "FAILED: Found the word 'Caller' in the stacktrace." + IL_0031: call void [System.Console]System.Console::WriteLine(string) + IL_0036: ldstr "------------------------------------------------" + IL_003b: call void [System.Console]System.Console::WriteLine(string) + IL_0040: call void [System.Console]System.Console::WriteLine() + IL_0045: ldloc.0 + IL_0046: callvirt instance string [mscorlib]System.Exception::get_StackTrace() + IL_004b: call void [System.Console]System.Console::WriteLine(string) + IL_0050: call void [System.Console]System.Console::WriteLine() + IL_0055: ldc.i4.s 101 + IL_0057: stsfld int32 TailcallVerify.Condition6::Result + IL_005c: leave.s IL_005e + + } // end handler + IL_005e: ldstr "Execution finished - Test " + IL_0063: ldsfld int32 TailcallVerify.Condition6::Result + IL_0068: ldc.i4.s 100 + IL_006a: beq.s IL_0073 + + IL_006c: ldstr "FAILED" + IL_0071: br.s IL_0078 + + IL_0073: ldstr "PASSED" + IL_0078: call string [mscorlib]System.String::Concat(string, + string) + IL_007d: call void [System.Console]System.Console::WriteLine(string) + IL_0082: ldsfld int32 TailcallVerify.Condition6::Result + IL_0087: ret + } // end of method Condition6::Test2 + + .method private hidebysig static void Caller2() cil managed + { + // Code size 79 (0x4f) + .maxstack 3 + .locals init ([0] valuetype TailcallVerify.ValueType3Bytes CS$0$0000, + [1] valuetype TailcallVerify.ValueType5Bytes CS$0$0001, + [2] valuetype TailcallVerify.ValueTypeSingleInt64 CS$0$0002) + IL_0000: ldc.i4.0 + IL_0001: newobj instance void [mscorlib]System.Diagnostics.StackFrame::.ctor(bool) + IL_0006: callvirt instance class [mscorlib]System.Reflection.MethodBase [mscorlib]System.Diagnostics.StackFrame::GetMethod() + IL_000b: callvirt instance string [mscorlib]System.Reflection.MemberInfo::get_Name() + IL_0010: ldstr "Caller" + IL_0015: callvirt instance int32 [mscorlib]System.String::IndexOf(string) + IL_001a: ldc.i4.m1 + IL_001b: bne.un.s IL_002e + + IL_001d: ldstr "Failed, Method was inlined..." + IL_0022: call void [System.Console]System.Console::WriteLine(string) + IL_0027: ldc.i4.s 101 + IL_0029: stsfld int32 TailcallVerify.Condition6::Result + IL_002e: ldloca.s CS$0$0000 + IL_0030: initobj TailcallVerify.ValueType3Bytes + IL_0036: ldloc.0 + IL_0037: ldloca.s CS$0$0001 + IL_0039: initobj TailcallVerify.ValueType5Bytes + IL_003f: ldloc.1 + IL_0040: ldloca.s CS$0$0002 + IL_0042: initobj TailcallVerify.ValueTypeSingleInt64 + IL_0048: ldloc.2 + IL_0049: tail. call void TailcallVerify.Condition6::Callee2(valuetype TailcallVerify.ValueType3Bytes, + valuetype TailcallVerify.ValueType5Bytes, + valuetype TailcallVerify.ValueTypeSingleInt64) + IL_004e: ret + } // end of method Condition6::Caller2 + + .method private hidebysig static void Callee2(valuetype TailcallVerify.ValueType3Bytes v1, + valuetype TailcallVerify.ValueType5Bytes v2, + valuetype TailcallVerify.ValueTypeSingleInt64 v3) cil managed noinlining + { + // Code size 18 (0x12) + .maxstack 8 + IL_0000: ldarga.s v1 + IL_0002: ldc.i4.1 + IL_0003: volatile. + IL_0005: ldsfld int32 modreq([mscorlib]System.Runtime.CompilerServices.IsVolatile) TailcallVerify.Condition6::zero + IL_000a: div + IL_000b: conv.i2 + IL_000c: stfld int16 TailcallVerify.ValueType3Bytes::i2 + IL_0011: ret + } // end of method Condition6::Callee2 + + .method public hidebysig static int32 Test3() cil managed nooptimization + { + // Code size 136 (0x88) + .maxstack 3 + .locals init ([0] class [mscorlib]System.Exception e) + IL_0000: ldstr "Executing Condition6.Test3 - Caller: Arguments: No" + + "ne - ReturnType: void; Callee: Arguments: 3 byte struct - ReturnType: v" + + "oid" + IL_0005: call void [System.Console]System.Console::WriteLine(string) + IL_000a: ldc.i4.s 100 + IL_000c: stsfld int32 TailcallVerify.Condition6::Result + .try + { + IL_0011: call void TailcallVerify.Condition6::Caller3() + IL_0016: leave.s IL_005e + + } // end .try + catch [mscorlib]System.Exception + { + IL_0018: stloc.0 + IL_0019: ldloc.0 + IL_001a: callvirt instance string [mscorlib]System.Exception::get_StackTrace() + IL_001f: ldstr "Caller" + IL_0024: callvirt instance int32 [mscorlib]System.String::IndexOf(string) + IL_0029: ldc.i4.m1 + IL_002a: beq.s IL_005c + + IL_002c: ldstr "FAILED: Found the word 'Caller' in the stacktrace." + IL_0031: call void [System.Console]System.Console::WriteLine(string) + IL_0036: ldstr "------------------------------------------------" + IL_003b: call void [System.Console]System.Console::WriteLine(string) + IL_0040: call void [System.Console]System.Console::WriteLine() + IL_0045: ldloc.0 + IL_0046: callvirt instance string [mscorlib]System.Exception::get_StackTrace() + IL_004b: call void [System.Console]System.Console::WriteLine(string) + IL_0050: call void [System.Console]System.Console::WriteLine() + IL_0055: ldc.i4.s 101 + IL_0057: stsfld int32 TailcallVerify.Condition6::Result + IL_005c: leave.s IL_005e + + } // end handler + IL_005e: ldstr "Execution finished - Test " + IL_0063: ldsfld int32 TailcallVerify.Condition6::Result + IL_0068: ldc.i4.s 100 + IL_006a: beq.s IL_0073 + + IL_006c: ldstr "FAILED" + IL_0071: br.s IL_0078 + + IL_0073: ldstr "PASSED" + IL_0078: call string [mscorlib]System.String::Concat(string, + string) + IL_007d: call void [System.Console]System.Console::WriteLine(string) + IL_0082: ldsfld int32 TailcallVerify.Condition6::Result + IL_0087: ret + } // end of method Condition6::Test3 + + .method private hidebysig static void Caller3() cil managed + { + // Code size 88 (0x58) + .maxstack 4 + .locals init ([0] valuetype TailcallVerify.ValueType3Bytes CS$0$0000, + [1] valuetype TailcallVerify.ValueType5Bytes CS$0$0001, + [2] valuetype TailcallVerify.ValueTypeSingleInt64 CS$0$0002, + [3] valuetype TailcallVerify.ValueType3Bytes CS$0$0003) + IL_0000: ldc.i4.0 + IL_0001: newobj instance void [mscorlib]System.Diagnostics.StackFrame::.ctor(bool) + IL_0006: callvirt instance class [mscorlib]System.Reflection.MethodBase [mscorlib]System.Diagnostics.StackFrame::GetMethod() + IL_000b: callvirt instance string [mscorlib]System.Reflection.MemberInfo::get_Name() + IL_0010: ldstr "Caller" + IL_0015: callvirt instance int32 [mscorlib]System.String::IndexOf(string) + IL_001a: ldc.i4.m1 + IL_001b: bne.un.s IL_002e + + IL_001d: ldstr "Failed, Method was inlined..." + IL_0022: call void [System.Console]System.Console::WriteLine(string) + IL_0027: ldc.i4.s 101 + IL_0029: stsfld int32 TailcallVerify.Condition6::Result + IL_002e: ldloca.s CS$0$0000 + IL_0030: initobj TailcallVerify.ValueType3Bytes + IL_0036: ldloc.0 + IL_0037: ldloca.s CS$0$0001 + IL_0039: initobj TailcallVerify.ValueType5Bytes + IL_003f: ldloc.1 + IL_0040: ldloca.s CS$0$0002 + IL_0042: initobj TailcallVerify.ValueTypeSingleInt64 + IL_0048: ldloc.2 + IL_0049: ldloca.s CS$0$0003 + IL_004b: initobj TailcallVerify.ValueType3Bytes + IL_0051: ldloc.3 + IL_0052: tail. call void TailcallVerify.Condition6::Callee3(valuetype TailcallVerify.ValueType3Bytes, + valuetype TailcallVerify.ValueType5Bytes, + valuetype TailcallVerify.ValueTypeSingleInt64, + valuetype TailcallVerify.ValueType3Bytes) + IL_0057: ret + } // end of method Condition6::Caller3 + + .method private hidebysig static void Callee3(valuetype TailcallVerify.ValueType3Bytes v1, + valuetype TailcallVerify.ValueType5Bytes v2, + valuetype TailcallVerify.ValueTypeSingleInt64 v3, + valuetype TailcallVerify.ValueType3Bytes v4) cil managed noinlining + { + // Code size 18 (0x12) + .maxstack 8 + IL_0000: ldarga.s v1 + IL_0002: ldc.i4.1 + IL_0003: volatile. + IL_0005: ldsfld int32 modreq([mscorlib]System.Runtime.CompilerServices.IsVolatile) TailcallVerify.Condition6::zero + IL_000a: div + IL_000b: conv.i2 + IL_000c: stfld int16 TailcallVerify.ValueType3Bytes::i2 + IL_0011: ret + } // end of method Condition6::Callee3 + + .method public hidebysig static int32 Test4() cil managed nooptimization + { + // Code size 136 (0x88) + .maxstack 3 + .locals init ([0] class [mscorlib]System.Exception e) + IL_0000: ldstr "Executing Condition6.Test4 - Caller: Arguments: No" + + "ne - ReturnType: void; Callee: Arguments: 3 byte struct - ReturnType: v" + + "oid" + IL_0005: call void [System.Console]System.Console::WriteLine(string) + IL_000a: ldc.i4.s 100 + IL_000c: stsfld int32 TailcallVerify.Condition6::Result + .try + { + IL_0011: call void TailcallVerify.Condition6::Caller4() + IL_0016: leave.s IL_005e + + } // end .try + catch [mscorlib]System.Exception + { + IL_0018: stloc.0 + IL_0019: ldloc.0 + IL_001a: callvirt instance string [mscorlib]System.Exception::get_StackTrace() + IL_001f: ldstr "Caller" + IL_0024: callvirt instance int32 [mscorlib]System.String::IndexOf(string) + IL_0029: ldc.i4.m1 + IL_002a: beq.s IL_005c + + IL_002c: ldstr "FAILED: Found the word 'Caller' in the stacktrace." + IL_0031: call void [System.Console]System.Console::WriteLine(string) + IL_0036: ldstr "------------------------------------------------" + IL_003b: call void [System.Console]System.Console::WriteLine(string) + IL_0040: call void [System.Console]System.Console::WriteLine() + IL_0045: ldloc.0 + IL_0046: callvirt instance string [mscorlib]System.Exception::get_StackTrace() + IL_004b: call void [System.Console]System.Console::WriteLine(string) + IL_0050: call void [System.Console]System.Console::WriteLine() + IL_0055: ldc.i4.s 101 + IL_0057: stsfld int32 TailcallVerify.Condition6::Result + IL_005c: leave.s IL_005e + + } // end handler + IL_005e: ldstr "Execution finished - Test " + IL_0063: ldsfld int32 TailcallVerify.Condition6::Result + IL_0068: ldc.i4.s 100 + IL_006a: beq.s IL_0073 + + IL_006c: ldstr "FAILED" + IL_0071: br.s IL_0078 + + IL_0073: ldstr "PASSED" + IL_0078: call string [mscorlib]System.String::Concat(string, + string) + IL_007d: call void [System.Console]System.Console::WriteLine(string) + IL_0082: ldsfld int32 TailcallVerify.Condition6::Result + IL_0087: ret + } // end of method Condition6::Test4 + + .method private hidebysig static void Caller4() cil managed + { + // Code size 98 (0x62) + .maxstack 5 + .locals init ([0] valuetype TailcallVerify.ValueType3Bytes CS$0$0000, + [1] valuetype TailcallVerify.ValueType5Bytes CS$0$0001, + [2] valuetype TailcallVerify.ValueTypeSingleInt64 CS$0$0002, + [3] valuetype TailcallVerify.ValueType3Bytes CS$0$0003, + [4] valuetype TailcallVerify.ValueType5Bytes CS$0$0004) + IL_0000: ldc.i4.0 + IL_0001: newobj instance void [mscorlib]System.Diagnostics.StackFrame::.ctor(bool) + IL_0006: callvirt instance class [mscorlib]System.Reflection.MethodBase [mscorlib]System.Diagnostics.StackFrame::GetMethod() + IL_000b: callvirt instance string [mscorlib]System.Reflection.MemberInfo::get_Name() + IL_0010: ldstr "Caller" + IL_0015: callvirt instance int32 [mscorlib]System.String::IndexOf(string) + IL_001a: ldc.i4.m1 + IL_001b: bne.un.s IL_002e + + IL_001d: ldstr "Failed, Method was inlined..." + IL_0022: call void [System.Console]System.Console::WriteLine(string) + IL_0027: ldc.i4.s 101 + IL_0029: stsfld int32 TailcallVerify.Condition6::Result + IL_002e: ldloca.s CS$0$0000 + IL_0030: initobj TailcallVerify.ValueType3Bytes + IL_0036: ldloc.0 + IL_0037: ldloca.s CS$0$0001 + IL_0039: initobj TailcallVerify.ValueType5Bytes + IL_003f: ldloc.1 + IL_0040: ldloca.s CS$0$0002 + IL_0042: initobj TailcallVerify.ValueTypeSingleInt64 + IL_0048: ldloc.2 + IL_0049: ldloca.s CS$0$0003 + IL_004b: initobj TailcallVerify.ValueType3Bytes + IL_0051: ldloc.3 + IL_0052: ldloca.s CS$0$0004 + IL_0054: initobj TailcallVerify.ValueType5Bytes + IL_005a: ldloc.s CS$0$0004 + IL_005c: tail. call void TailcallVerify.Condition6::Callee4(valuetype TailcallVerify.ValueType3Bytes, + valuetype TailcallVerify.ValueType5Bytes, + valuetype TailcallVerify.ValueTypeSingleInt64, + valuetype TailcallVerify.ValueType3Bytes, + valuetype TailcallVerify.ValueType5Bytes) + IL_0061: ret + } // end of method Condition6::Caller4 + + .method private hidebysig static void Callee4(valuetype TailcallVerify.ValueType3Bytes v1, + valuetype TailcallVerify.ValueType5Bytes v2, + valuetype TailcallVerify.ValueTypeSingleInt64 v3, + valuetype TailcallVerify.ValueType3Bytes v4, + valuetype TailcallVerify.ValueType5Bytes v5) cil managed noinlining + { + // Code size 18 (0x12) + .maxstack 8 + IL_0000: ldarga.s v1 + IL_0002: ldc.i4.1 + IL_0003: volatile. + IL_0005: ldsfld int32 modreq([mscorlib]System.Runtime.CompilerServices.IsVolatile) TailcallVerify.Condition6::zero + IL_000a: div + IL_000b: conv.i2 + IL_000c: stfld int16 TailcallVerify.ValueType3Bytes::i2 + IL_0011: ret + } // end of method Condition6::Callee4 + + .method public hidebysig static int32 Test5() cil managed nooptimization + { + // Code size 136 (0x88) + .maxstack 3 + .locals init ([0] class [mscorlib]System.Exception e) + IL_0000: ldstr "Executing Condition6.Test5 - Caller: Arguments: No" + + "ne - ReturnType: void; Callee: Arguments: 3 byte struct - ReturnType: v" + + "oid" + IL_0005: call void [System.Console]System.Console::WriteLine(string) + IL_000a: ldc.i4.s 100 + IL_000c: stsfld int32 TailcallVerify.Condition6::Result + .try + { + IL_0011: call void TailcallVerify.Condition6::Caller5() + IL_0016: leave.s IL_005e + + } // end .try + catch [mscorlib]System.Exception + { + IL_0018: stloc.0 + IL_0019: ldloc.0 + IL_001a: callvirt instance string [mscorlib]System.Exception::get_StackTrace() + IL_001f: ldstr "Caller" + IL_0024: callvirt instance int32 [mscorlib]System.String::IndexOf(string) + IL_0029: ldc.i4.m1 + IL_002a: beq.s IL_005c + + IL_002c: ldstr "FAILED: Found the word 'Caller' in the stacktrace." + IL_0031: call void [System.Console]System.Console::WriteLine(string) + IL_0036: ldstr "------------------------------------------------" + IL_003b: call void [System.Console]System.Console::WriteLine(string) + IL_0040: call void [System.Console]System.Console::WriteLine() + IL_0045: ldloc.0 + IL_0046: callvirt instance string [mscorlib]System.Exception::get_StackTrace() + IL_004b: call void [System.Console]System.Console::WriteLine(string) + IL_0050: call void [System.Console]System.Console::WriteLine() + IL_0055: ldc.i4.s 101 + IL_0057: stsfld int32 TailcallVerify.Condition6::Result + IL_005c: leave.s IL_005e + + } // end handler + IL_005e: ldstr "Execution finished - Test " + IL_0063: ldsfld int32 TailcallVerify.Condition6::Result + IL_0068: ldc.i4.s 100 + IL_006a: beq.s IL_0073 + + IL_006c: ldstr "FAILED" + IL_0071: br.s IL_0078 + + IL_0073: ldstr "PASSED" + IL_0078: call string [mscorlib]System.String::Concat(string, + string) + IL_007d: call void [System.Console]System.Console::WriteLine(string) + IL_0082: ldsfld int32 TailcallVerify.Condition6::Result + IL_0087: ret + } // end of method Condition6::Test5 + + .method private hidebysig static void Caller5() cil managed + { + // Code size 108 (0x6c) + .maxstack 6 + .locals init ([0] valuetype TailcallVerify.ValueType3Bytes CS$0$0000, + [1] valuetype TailcallVerify.ValueType5Bytes CS$0$0001, + [2] valuetype TailcallVerify.ValueTypeSingleInt64 CS$0$0002, + [3] valuetype TailcallVerify.ValueType3Bytes CS$0$0003, + [4] valuetype TailcallVerify.ValueType5Bytes CS$0$0004, + [5] valuetype TailcallVerify.ValueType3Bytes CS$0$0005) + IL_0000: ldc.i4.0 + IL_0001: newobj instance void [mscorlib]System.Diagnostics.StackFrame::.ctor(bool) + IL_0006: callvirt instance class [mscorlib]System.Reflection.MethodBase [mscorlib]System.Diagnostics.StackFrame::GetMethod() + IL_000b: callvirt instance string [mscorlib]System.Reflection.MemberInfo::get_Name() + IL_0010: ldstr "Caller" + IL_0015: callvirt instance int32 [mscorlib]System.String::IndexOf(string) + IL_001a: ldc.i4.m1 + IL_001b: bne.un.s IL_002e + + IL_001d: ldstr "Failed, Method was inlined..." + IL_0022: call void [System.Console]System.Console::WriteLine(string) + IL_0027: ldc.i4.s 101 + IL_0029: stsfld int32 TailcallVerify.Condition6::Result + IL_002e: ldloca.s CS$0$0000 + IL_0030: initobj TailcallVerify.ValueType3Bytes + IL_0036: ldloc.0 + IL_0037: ldloca.s CS$0$0001 + IL_0039: initobj TailcallVerify.ValueType5Bytes + IL_003f: ldloc.1 + IL_0040: ldloca.s CS$0$0002 + IL_0042: initobj TailcallVerify.ValueTypeSingleInt64 + IL_0048: ldloc.2 + IL_0049: ldloca.s CS$0$0003 + IL_004b: initobj TailcallVerify.ValueType3Bytes + IL_0051: ldloc.3 + IL_0052: ldloca.s CS$0$0004 + IL_0054: initobj TailcallVerify.ValueType5Bytes + IL_005a: ldloc.s CS$0$0004 + IL_005c: ldloca.s CS$0$0005 + IL_005e: initobj TailcallVerify.ValueType3Bytes + IL_0064: ldloc.s CS$0$0005 + IL_0066: tail. call void TailcallVerify.Condition6::Callee5(valuetype TailcallVerify.ValueType3Bytes, + valuetype TailcallVerify.ValueType5Bytes, + valuetype TailcallVerify.ValueTypeSingleInt64, + valuetype TailcallVerify.ValueType3Bytes, + valuetype TailcallVerify.ValueType5Bytes, + valuetype TailcallVerify.ValueType3Bytes) + IL_006b: ret + } // end of method Condition6::Caller5 + + .method private hidebysig static void Callee5(valuetype TailcallVerify.ValueType3Bytes v1, + valuetype TailcallVerify.ValueType5Bytes v2, + valuetype TailcallVerify.ValueTypeSingleInt64 v3, + valuetype TailcallVerify.ValueType3Bytes v4, + valuetype TailcallVerify.ValueType5Bytes v5, + valuetype TailcallVerify.ValueType3Bytes v6) cil managed noinlining + { + // Code size 18 (0x12) + .maxstack 8 + IL_0000: ldarga.s v1 + IL_0002: ldc.i4.1 + IL_0003: volatile. + IL_0005: ldsfld int32 modreq([mscorlib]System.Runtime.CompilerServices.IsVolatile) TailcallVerify.Condition6::zero + IL_000a: div + IL_000b: conv.i2 + IL_000c: stfld int16 TailcallVerify.ValueType3Bytes::i2 + IL_0011: ret + } // end of method Condition6::Callee5 + + .method public hidebysig specialname rtspecialname + instance void .ctor() cil managed + { + // Code size 7 (0x7) + .maxstack 8 + IL_0000: ldarg.0 + IL_0001: call instance void [mscorlib]System.Object::.ctor() + IL_0006: ret + } // end of method Condition6::.ctor + + .method private hidebysig specialname rtspecialname static + void .cctor() cil managed + { + // Code size 16 (0x10) + .maxstack 8 + IL_0000: ldc.i4.0 + IL_0001: volatile. + IL_0003: stsfld int32 modreq([mscorlib]System.Runtime.CompilerServices.IsVolatile) TailcallVerify.Condition6::zero + IL_0008: ldc.i4.s 100 + IL_000a: stsfld int32 TailcallVerify.Condition6::Result + IL_000f: ret + } // end of method Condition6::.cctor + +} // end of class TailcallVerify.Condition6 + +.class private auto ansi beforefieldinit TailcallVerify.Condition5 + extends [mscorlib]System.Object +{ + .field private static int32 modreq([mscorlib]System.Runtime.CompilerServices.IsVolatile) dummy + .field private static int32 modreq([mscorlib]System.Runtime.CompilerServices.IsVolatile) zero + .field private static int32 Result + .method public hidebysig static int32 Test1() cil managed nooptimization + { + // Code size 104 (0x68) + .maxstack 3 + .locals init ([0] class [mscorlib]System.Exception e) + IL_0000: ldstr "Executing Condition5.Test1 - There is a 'conv.i2' " + + "IL instruction between the tail. call to the Callee and the ret IL instructio" + + "n which is not allowed. Expecting to catch an InvalidProgramException i" + + "nternally if tail. prefix is present." + IL_0005: call void [System.Console]System.Console::WriteLine(string) + IL_000a: ldc.i4.s 100 + IL_000c: stsfld int32 TailcallVerify.Condition5::Result + .try + { + IL_0011: call int16 TailcallVerify.Condition5::Caller1() + IL_0016: pop + IL_0017: leave.s IL_003e + + } // end .try + catch [mscorlib]System.Exception + { + IL_0019: stloc.0 + IL_001a: ldloc.0 + IL_001b: isinst [mscorlib]System.InvalidProgramException + IL_0020: brtrue.s IL_002a + + IL_0022: ldloc.0 + IL_0023: isinst [mscorlib]System.DivideByZeroException + IL_0028: brfalse.s IL_0033 + + IL_002a: ldc.i4.s 100 + IL_002c: stsfld int32 TailcallVerify.Condition5::Result + IL_0031: br.s IL_003c + + IL_0033: ldc.i4.s 101 + IL_0035: stsfld int32 TailcallVerify.Condition5::Result + IL_003a: rethrow + IL_003c: leave.s IL_003e + + } // end handler + IL_003e: ldstr "Execution finished - Test " + IL_0043: ldsfld int32 TailcallVerify.Condition5::Result + IL_0048: ldc.i4.s 100 + IL_004a: beq.s IL_0053 + + IL_004c: ldstr "FAILED" + IL_0051: br.s IL_0058 + + IL_0053: ldstr "PASSED" + IL_0058: call string [mscorlib]System.String::Concat(string, + string) + IL_005d: call void [System.Console]System.Console::WriteLine(string) + IL_0062: ldsfld int32 TailcallVerify.Condition5::Result + IL_0067: ret + } // end of method Condition5::Test1 + + .method private hidebysig static int16 + Caller1() cil managed + { + // Code size 53 (0x35) + .maxstack 8 + IL_0000: ldc.i4.0 + IL_0001: newobj instance void [mscorlib]System.Diagnostics.StackFrame::.ctor(bool) + IL_0006: callvirt instance class [mscorlib]System.Reflection.MethodBase [mscorlib]System.Diagnostics.StackFrame::GetMethod() + IL_000b: callvirt instance string [mscorlib]System.Reflection.MemberInfo::get_Name() + IL_0010: ldstr "Caller" + IL_0015: callvirt instance int32 [mscorlib]System.String::IndexOf(string) + IL_001a: ldc.i4.m1 + IL_001b: bne.un.s IL_002e + + IL_001d: ldstr "Failed, Method was inlined..." + IL_0022: call void [System.Console]System.Console::WriteLine(string) + IL_0027: ldc.i4.s 101 + IL_0029: stsfld int32 TailcallVerify.Condition5::Result + IL_002e: tail. call int32 TailcallVerify.Condition5::Callee1() + IL_0033: conv.i2 + IL_0034: ret + } // end of method Condition5::Caller1 + + .method private hidebysig static int32 + Callee1() cil managed noinlining + { + // Code size 12 (0xc) + .maxstack 2 + .locals init ([0] int32 i) + IL_0000: ldc.i4.1 + IL_0001: volatile. + IL_0003: ldsfld int32 modreq([mscorlib]System.Runtime.CompilerServices.IsVolatile) TailcallVerify.Condition5::zero + IL_0008: div + IL_0009: stloc.0 + IL_000a: ldloc.0 + IL_000b: ret + } // end of method Condition5::Callee1 + + .method public hidebysig static int32 Test2() cil managed nooptimization + { + // Code size 154 (0x9a) + .maxstack 3 + .locals init ([0] class [mscorlib]System.Exception e) + IL_0000: ldstr "Executing Condition5.Test2 - Caller: Arguments: No" + + "ne - ReturnType: byte; Callee: Arguments: None - ReturnType: byte" + IL_0005: call void [System.Console]System.Console::WriteLine(string) + IL_000a: ldc.i4.s 100 + IL_000c: stsfld int32 TailcallVerify.Condition5::Result + .try + { + IL_0011: call uint8 TailcallVerify.Condition5::Caller2() + IL_0016: pop + IL_0017: leave.s IL_0070 + + } // end .try + catch [mscorlib]System.Exception + { + IL_0019: stloc.0 + IL_001a: ldloc.0 + IL_001b: isinst [mscorlib]System.DivideByZeroException + IL_0020: brtrue.s IL_002b + + IL_0022: ldc.i4.s 101 + IL_0024: stsfld int32 TailcallVerify.Condition5::Result + IL_0029: rethrow + IL_002b: ldloc.0 + IL_002c: callvirt instance string [mscorlib]System.Exception::get_StackTrace() + IL_0031: ldstr "Caller" + IL_0036: callvirt instance int32 [mscorlib]System.String::IndexOf(string) + IL_003b: ldc.i4.m1 + IL_003c: beq.s IL_006e + + IL_003e: ldstr "FAILED: Found the word 'Caller' in the stacktrace." + IL_0043: call void [System.Console]System.Console::WriteLine(string) + IL_0048: ldstr "------------------------------------------------" + IL_004d: call void [System.Console]System.Console::WriteLine(string) + IL_0052: call void [System.Console]System.Console::WriteLine() + IL_0057: ldloc.0 + IL_0058: callvirt instance string [mscorlib]System.Exception::get_StackTrace() + IL_005d: call void [System.Console]System.Console::WriteLine(string) + IL_0062: call void [System.Console]System.Console::WriteLine() + IL_0067: ldc.i4.s 101 + IL_0069: stsfld int32 TailcallVerify.Condition5::Result + IL_006e: leave.s IL_0070 + + } // end handler + IL_0070: ldstr "Execution finished - Test " + IL_0075: ldsfld int32 TailcallVerify.Condition5::Result + IL_007a: ldc.i4.s 100 + IL_007c: beq.s IL_0085 + + IL_007e: ldstr "FAILED" + IL_0083: br.s IL_008a + + IL_0085: ldstr "PASSED" + IL_008a: call string [mscorlib]System.String::Concat(string, + string) + IL_008f: call void [System.Console]System.Console::WriteLine(string) + IL_0094: ldsfld int32 TailcallVerify.Condition5::Result + IL_0099: ret + } // end of method Condition5::Test2 + + .method private hidebysig static uint8 + Caller2() cil managed + { + // Code size 52 (0x34) + .maxstack 8 + IL_0000: ldc.i4.0 + IL_0001: newobj instance void [mscorlib]System.Diagnostics.StackFrame::.ctor(bool) + IL_0006: callvirt instance class [mscorlib]System.Reflection.MethodBase [mscorlib]System.Diagnostics.StackFrame::GetMethod() + IL_000b: callvirt instance string [mscorlib]System.Reflection.MemberInfo::get_Name() + IL_0010: ldstr "Caller" + IL_0015: callvirt instance int32 [mscorlib]System.String::IndexOf(string) + IL_001a: ldc.i4.m1 + IL_001b: bne.un.s IL_002e + + IL_001d: ldstr "Failed, Method was inlined..." + IL_0022: call void [System.Console]System.Console::WriteLine(string) + IL_0027: ldc.i4.s 101 + IL_0029: stsfld int32 TailcallVerify.Condition5::Result + IL_002e: tail. call uint8 TailcallVerify.Condition5::Callee2() + IL_0033: ret + } // end of method Condition5::Caller2 + + .method private hidebysig static uint8 + Callee2() cil managed noinlining + { + // Code size 17 (0x11) + .maxstack 8 + IL_0000: volatile. + IL_0002: ldsfld int32 modreq([mscorlib]System.Runtime.CompilerServices.IsVolatile) TailcallVerify.Condition5::dummy + IL_0007: volatile. + IL_0009: ldsfld int32 modreq([mscorlib]System.Runtime.CompilerServices.IsVolatile) TailcallVerify.Condition5::zero + IL_000e: div + IL_000f: conv.u1 + IL_0010: ret + } // end of method Condition5::Callee2 + + .method public hidebysig static int32 Test3() cil managed nooptimization + { + // Code size 154 (0x9a) + .maxstack 3 + .locals init ([0] class [mscorlib]System.Exception e) + IL_0000: ldstr "Executing Condition5.Test3 - Caller: Arguments: No" + + "ne - ReturnType: Int32; Callee: Arguments: None - ReturnType: Int32" + IL_0005: call void [System.Console]System.Console::WriteLine(string) + IL_000a: ldc.i4.s 100 + IL_000c: stsfld int32 TailcallVerify.Condition5::Result + .try + { + IL_0011: call int32 TailcallVerify.Condition5::Caller3() + IL_0016: pop + IL_0017: leave.s IL_0070 + + } // end .try + catch [mscorlib]System.Exception + { + IL_0019: stloc.0 + IL_001a: ldloc.0 + IL_001b: isinst [mscorlib]System.DivideByZeroException + IL_0020: brtrue.s IL_002b + + IL_0022: ldc.i4.s 101 + IL_0024: stsfld int32 TailcallVerify.Condition5::Result + IL_0029: rethrow + IL_002b: ldloc.0 + IL_002c: callvirt instance string [mscorlib]System.Exception::get_StackTrace() + IL_0031: ldstr "Caller" + IL_0036: callvirt instance int32 [mscorlib]System.String::IndexOf(string) + IL_003b: ldc.i4.m1 + IL_003c: beq.s IL_006e + + IL_003e: ldstr "FAILED: Found the word 'Caller' in the stacktrace." + IL_0043: call void [System.Console]System.Console::WriteLine(string) + IL_0048: ldstr "------------------------------------------------" + IL_004d: call void [System.Console]System.Console::WriteLine(string) + IL_0052: call void [System.Console]System.Console::WriteLine() + IL_0057: ldloc.0 + IL_0058: callvirt instance string [mscorlib]System.Exception::get_StackTrace() + IL_005d: call void [System.Console]System.Console::WriteLine(string) + IL_0062: call void [System.Console]System.Console::WriteLine() + IL_0067: ldc.i4.s 101 + IL_0069: stsfld int32 TailcallVerify.Condition5::Result + IL_006e: leave.s IL_0070 + + } // end handler + IL_0070: ldstr "Execution finished - Test " + IL_0075: ldsfld int32 TailcallVerify.Condition5::Result + IL_007a: ldc.i4.s 100 + IL_007c: beq.s IL_0085 + + IL_007e: ldstr "FAILED" + IL_0083: br.s IL_008a + + IL_0085: ldstr "PASSED" + IL_008a: call string [mscorlib]System.String::Concat(string, + string) + IL_008f: call void [System.Console]System.Console::WriteLine(string) + IL_0094: ldsfld int32 TailcallVerify.Condition5::Result + IL_0099: ret + } // end of method Condition5::Test3 + + .method private hidebysig static int32 + Caller3() cil managed + { + // Code size 52 (0x34) + .maxstack 8 + IL_0000: ldc.i4.0 + IL_0001: newobj instance void [mscorlib]System.Diagnostics.StackFrame::.ctor(bool) + IL_0006: callvirt instance class [mscorlib]System.Reflection.MethodBase [mscorlib]System.Diagnostics.StackFrame::GetMethod() + IL_000b: callvirt instance string [mscorlib]System.Reflection.MemberInfo::get_Name() + IL_0010: ldstr "Caller" + IL_0015: callvirt instance int32 [mscorlib]System.String::IndexOf(string) + IL_001a: ldc.i4.m1 + IL_001b: bne.un.s IL_002e + + IL_001d: ldstr "Failed, Method was inlined..." + IL_0022: call void [System.Console]System.Console::WriteLine(string) + IL_0027: ldc.i4.s 101 + IL_0029: stsfld int32 TailcallVerify.Condition5::Result + IL_002e: tail. call int32 TailcallVerify.Condition5::Callee3() + IL_0033: ret + } // end of method Condition5::Caller3 + + .method private hidebysig static int32 + Callee3() cil managed noinlining + { + // Code size 16 (0x10) + .maxstack 8 + IL_0000: volatile. + IL_0002: ldsfld int32 modreq([mscorlib]System.Runtime.CompilerServices.IsVolatile) TailcallVerify.Condition5::dummy + IL_0007: volatile. + IL_0009: ldsfld int32 modreq([mscorlib]System.Runtime.CompilerServices.IsVolatile) TailcallVerify.Condition5::zero + IL_000e: div + IL_000f: ret + } // end of method Condition5::Callee3 + + .method public hidebysig static int32 Test4() cil managed nooptimization + { + // Code size 154 (0x9a) + .maxstack 3 + .locals init ([0] class [mscorlib]System.Exception e) + IL_0000: ldstr "Executing Condition5.Test4 - Caller: Arguments: No" + + "ne - ReturnType: UInt32; Callee: Arguments: None - ReturnType: Int32" + IL_0005: call void [System.Console]System.Console::WriteLine(string) + IL_000a: ldc.i4.s 100 + IL_000c: stsfld int32 TailcallVerify.Condition5::Result + .try + { + IL_0011: call uint32 TailcallVerify.Condition5::Caller4() + IL_0016: pop + IL_0017: leave.s IL_0070 + + } // end .try + catch [mscorlib]System.Exception + { + IL_0019: stloc.0 + IL_001a: ldloc.0 + IL_001b: isinst [mscorlib]System.DivideByZeroException + IL_0020: brtrue.s IL_002b + + IL_0022: ldc.i4.s 101 + IL_0024: stsfld int32 TailcallVerify.Condition5::Result + IL_0029: rethrow + IL_002b: ldloc.0 + IL_002c: callvirt instance string [mscorlib]System.Exception::get_StackTrace() + IL_0031: ldstr "Caller" + IL_0036: callvirt instance int32 [mscorlib]System.String::IndexOf(string) + IL_003b: ldc.i4.m1 + IL_003c: beq.s IL_006e + + IL_003e: ldstr "FAILED: Found the word 'Caller' in the stacktrace." + IL_0043: call void [System.Console]System.Console::WriteLine(string) + IL_0048: ldstr "------------------------------------------------" + IL_004d: call void [System.Console]System.Console::WriteLine(string) + IL_0052: call void [System.Console]System.Console::WriteLine() + IL_0057: ldloc.0 + IL_0058: callvirt instance string [mscorlib]System.Exception::get_StackTrace() + IL_005d: call void [System.Console]System.Console::WriteLine(string) + IL_0062: call void [System.Console]System.Console::WriteLine() + IL_0067: ldc.i4.s 101 + IL_0069: stsfld int32 TailcallVerify.Condition5::Result + IL_006e: leave.s IL_0070 + + } // end handler + IL_0070: ldstr "Execution finished - Test " + IL_0075: ldsfld int32 TailcallVerify.Condition5::Result + IL_007a: ldc.i4.s 100 + IL_007c: beq.s IL_0085 + + IL_007e: ldstr "FAILED" + IL_0083: br.s IL_008a + + IL_0085: ldstr "PASSED" + IL_008a: call string [mscorlib]System.String::Concat(string, + string) + IL_008f: call void [System.Console]System.Console::WriteLine(string) + IL_0094: ldsfld int32 TailcallVerify.Condition5::Result + IL_0099: ret + } // end of method Condition5::Test4 + + .method private hidebysig static uint32 + Caller4() cil managed + { + // Code size 52 (0x34) + .maxstack 8 + IL_0000: ldc.i4.0 + IL_0001: newobj instance void [mscorlib]System.Diagnostics.StackFrame::.ctor(bool) + IL_0006: callvirt instance class [mscorlib]System.Reflection.MethodBase [mscorlib]System.Diagnostics.StackFrame::GetMethod() + IL_000b: callvirt instance string [mscorlib]System.Reflection.MemberInfo::get_Name() + IL_0010: ldstr "Caller" + IL_0015: callvirt instance int32 [mscorlib]System.String::IndexOf(string) + IL_001a: ldc.i4.m1 + IL_001b: bne.un.s IL_002e + + IL_001d: ldstr "Failed, Method was inlined..." + IL_0022: call void [System.Console]System.Console::WriteLine(string) + IL_0027: ldc.i4.s 101 + IL_0029: stsfld int32 TailcallVerify.Condition5::Result + IL_002e: tail. call int32 TailcallVerify.Condition5::Callee4() + IL_0033: ret + } // end of method Condition5::Caller4 + + .method private hidebysig static int32 + Callee4() cil managed noinlining + { + // Code size 16 (0x10) + .maxstack 8 + IL_0000: volatile. + IL_0002: ldsfld int32 modreq([mscorlib]System.Runtime.CompilerServices.IsVolatile) TailcallVerify.Condition5::dummy + IL_0007: volatile. + IL_0009: ldsfld int32 modreq([mscorlib]System.Runtime.CompilerServices.IsVolatile) TailcallVerify.Condition5::zero + IL_000e: div + IL_000f: ret + } // end of method Condition5::Callee4 + + .method public hidebysig static int32 Test5() cil managed nooptimization + { + // Code size 154 (0x9a) + .maxstack 3 + .locals init ([0] class [mscorlib]System.Exception e) + IL_0000: ldstr "Executing Condition5.Test5 - Caller: Arguments: No" + + "ne - ReturnType: Int32; Callee: Arguments: None - ReturnType: UInt32" + IL_0005: call void [System.Console]System.Console::WriteLine(string) + IL_000a: ldc.i4.s 100 + IL_000c: stsfld int32 TailcallVerify.Condition5::Result + .try + { + IL_0011: call int32 TailcallVerify.Condition5::Caller5() + IL_0016: pop + IL_0017: leave.s IL_0070 + + } // end .try + catch [mscorlib]System.Exception + { + IL_0019: stloc.0 + IL_001a: ldloc.0 + IL_001b: isinst [mscorlib]System.DivideByZeroException + IL_0020: brtrue.s IL_002b + + IL_0022: ldc.i4.s 101 + IL_0024: stsfld int32 TailcallVerify.Condition5::Result + IL_0029: rethrow + IL_002b: ldloc.0 + IL_002c: callvirt instance string [mscorlib]System.Exception::get_StackTrace() + IL_0031: ldstr "Caller" + IL_0036: callvirt instance int32 [mscorlib]System.String::IndexOf(string) + IL_003b: ldc.i4.m1 + IL_003c: beq.s IL_006e + + IL_003e: ldstr "FAILED: Found the word 'Caller' in the stacktrace." + IL_0043: call void [System.Console]System.Console::WriteLine(string) + IL_0048: ldstr "------------------------------------------------" + IL_004d: call void [System.Console]System.Console::WriteLine(string) + IL_0052: call void [System.Console]System.Console::WriteLine() + IL_0057: ldloc.0 + IL_0058: callvirt instance string [mscorlib]System.Exception::get_StackTrace() + IL_005d: call void [System.Console]System.Console::WriteLine(string) + IL_0062: call void [System.Console]System.Console::WriteLine() + IL_0067: ldc.i4.s 101 + IL_0069: stsfld int32 TailcallVerify.Condition5::Result + IL_006e: leave.s IL_0070 + + } // end handler + IL_0070: ldstr "Execution finished - Test " + IL_0075: ldsfld int32 TailcallVerify.Condition5::Result + IL_007a: ldc.i4.s 100 + IL_007c: beq.s IL_0085 + + IL_007e: ldstr "FAILED" + IL_0083: br.s IL_008a + + IL_0085: ldstr "PASSED" + IL_008a: call string [mscorlib]System.String::Concat(string, + string) + IL_008f: call void [System.Console]System.Console::WriteLine(string) + IL_0094: ldsfld int32 TailcallVerify.Condition5::Result + IL_0099: ret + } // end of method Condition5::Test5 + + .method private hidebysig static int32 + Caller5() cil managed + { + // Code size 52 (0x34) + .maxstack 8 + IL_0000: ldc.i4.0 + IL_0001: newobj instance void [mscorlib]System.Diagnostics.StackFrame::.ctor(bool) + IL_0006: callvirt instance class [mscorlib]System.Reflection.MethodBase [mscorlib]System.Diagnostics.StackFrame::GetMethod() + IL_000b: callvirt instance string [mscorlib]System.Reflection.MemberInfo::get_Name() + IL_0010: ldstr "Caller" + IL_0015: callvirt instance int32 [mscorlib]System.String::IndexOf(string) + IL_001a: ldc.i4.m1 + IL_001b: bne.un.s IL_002e + + IL_001d: ldstr "Failed, Method was inlined..." + IL_0022: call void [System.Console]System.Console::WriteLine(string) + IL_0027: ldc.i4.s 101 + IL_0029: stsfld int32 TailcallVerify.Condition5::Result + IL_002e: tail. call uint32 TailcallVerify.Condition5::Callee5() + IL_0033: ret + } // end of method Condition5::Caller5 + + .method private hidebysig static uint32 + Callee5() cil managed noinlining + { + // Code size 16 (0x10) + .maxstack 8 + IL_0000: volatile. + IL_0002: ldsfld int32 modreq([mscorlib]System.Runtime.CompilerServices.IsVolatile) TailcallVerify.Condition5::dummy + IL_0007: volatile. + IL_0009: ldsfld int32 modreq([mscorlib]System.Runtime.CompilerServices.IsVolatile) TailcallVerify.Condition5::zero + IL_000e: div + IL_000f: ret + } // end of method Condition5::Callee5 + + .method public hidebysig static int32 Test6() cil managed nooptimization + { + // Code size 154 (0x9a) + .maxstack 3 + .locals init ([0] class [mscorlib]System.Exception e) + IL_0000: ldstr "Executing Condition5.Test6 - Caller: Arguments: No" + + "ne - ReturnType: Int64; Callee: Arguments: None - ReturnType: UInt64" + IL_0005: call void [System.Console]System.Console::WriteLine(string) + IL_000a: ldc.i4.s 100 + IL_000c: stsfld int32 TailcallVerify.Condition5::Result + .try + { + IL_0011: call int64 TailcallVerify.Condition5::Caller6() + IL_0016: pop + IL_0017: leave.s IL_0070 + + } // end .try + catch [mscorlib]System.Exception + { + IL_0019: stloc.0 + IL_001a: ldloc.0 + IL_001b: isinst [mscorlib]System.DivideByZeroException + IL_0020: brtrue.s IL_002b + + IL_0022: ldc.i4.s 101 + IL_0024: stsfld int32 TailcallVerify.Condition5::Result + IL_0029: rethrow + IL_002b: ldloc.0 + IL_002c: callvirt instance string [mscorlib]System.Exception::get_StackTrace() + IL_0031: ldstr "Caller" + IL_0036: callvirt instance int32 [mscorlib]System.String::IndexOf(string) + IL_003b: ldc.i4.m1 + IL_003c: beq.s IL_006e + + IL_003e: ldstr "FAILED: Found the word 'Caller' in the stacktrace." + IL_0043: call void [System.Console]System.Console::WriteLine(string) + IL_0048: ldstr "------------------------------------------------" + IL_004d: call void [System.Console]System.Console::WriteLine(string) + IL_0052: call void [System.Console]System.Console::WriteLine() + IL_0057: ldloc.0 + IL_0058: callvirt instance string [mscorlib]System.Exception::get_StackTrace() + IL_005d: call void [System.Console]System.Console::WriteLine(string) + IL_0062: call void [System.Console]System.Console::WriteLine() + IL_0067: ldc.i4.s 101 + IL_0069: stsfld int32 TailcallVerify.Condition5::Result + IL_006e: leave.s IL_0070 + + } // end handler + IL_0070: ldstr "Execution finished - Test " + IL_0075: ldsfld int32 TailcallVerify.Condition5::Result + IL_007a: ldc.i4.s 100 + IL_007c: beq.s IL_0085 + + IL_007e: ldstr "FAILED" + IL_0083: br.s IL_008a + + IL_0085: ldstr "PASSED" + IL_008a: call string [mscorlib]System.String::Concat(string, + string) + IL_008f: call void [System.Console]System.Console::WriteLine(string) + IL_0094: ldsfld int32 TailcallVerify.Condition5::Result + IL_0099: ret + } // end of method Condition5::Test6 + + .method private hidebysig static int64 + Caller6() cil managed + { + // Code size 52 (0x34) + .maxstack 8 + IL_0000: ldc.i4.0 + IL_0001: newobj instance void [mscorlib]System.Diagnostics.StackFrame::.ctor(bool) + IL_0006: callvirt instance class [mscorlib]System.Reflection.MethodBase [mscorlib]System.Diagnostics.StackFrame::GetMethod() + IL_000b: callvirt instance string [mscorlib]System.Reflection.MemberInfo::get_Name() + IL_0010: ldstr "Caller" + IL_0015: callvirt instance int32 [mscorlib]System.String::IndexOf(string) + IL_001a: ldc.i4.m1 + IL_001b: bne.un.s IL_002e + + IL_001d: ldstr "Failed, Method was inlined..." + IL_0022: call void [System.Console]System.Console::WriteLine(string) + IL_0027: ldc.i4.s 101 + IL_0029: stsfld int32 TailcallVerify.Condition5::Result + IL_002e: tail. call uint64 TailcallVerify.Condition5::Callee6() + IL_0033: ret + } // end of method Condition5::Caller6 + + .method private hidebysig static uint64 + Callee6() cil managed noinlining + { + // Code size 17 (0x11) + .maxstack 8 + IL_0000: volatile. + IL_0002: ldsfld int32 modreq([mscorlib]System.Runtime.CompilerServices.IsVolatile) TailcallVerify.Condition5::dummy + IL_0007: volatile. + IL_0009: ldsfld int32 modreq([mscorlib]System.Runtime.CompilerServices.IsVolatile) TailcallVerify.Condition5::zero + IL_000e: div + IL_000f: conv.i8 + IL_0010: ret + } // end of method Condition5::Callee6 + + .method public hidebysig static int32 Test7() cil managed nooptimization + { + // Code size 154 (0x9a) + .maxstack 3 + .locals init ([0] class [mscorlib]System.Exception e) + IL_0000: ldstr "Executing Condition5.Test7 - Caller: Arguments: No" + + "ne - ReturnType: UInt64; Callee: Arguments: None - ReturnType: Int64" + IL_0005: call void [System.Console]System.Console::WriteLine(string) + IL_000a: ldc.i4.s 100 + IL_000c: stsfld int32 TailcallVerify.Condition5::Result + .try + { + IL_0011: call int64 TailcallVerify.Condition5::Caller7() + IL_0016: pop + IL_0017: leave.s IL_0070 + + } // end .try + catch [mscorlib]System.Exception + { + IL_0019: stloc.0 + IL_001a: ldloc.0 + IL_001b: isinst [mscorlib]System.DivideByZeroException + IL_0020: brtrue.s IL_002b + + IL_0022: ldc.i4.s 101 + IL_0024: stsfld int32 TailcallVerify.Condition5::Result + IL_0029: rethrow + IL_002b: ldloc.0 + IL_002c: callvirt instance string [mscorlib]System.Exception::get_StackTrace() + IL_0031: ldstr "Caller" + IL_0036: callvirt instance int32 [mscorlib]System.String::IndexOf(string) + IL_003b: ldc.i4.m1 + IL_003c: beq.s IL_006e + + IL_003e: ldstr "FAILED: Found the word 'Caller' in the stacktrace." + IL_0043: call void [System.Console]System.Console::WriteLine(string) + IL_0048: ldstr "------------------------------------------------" + IL_004d: call void [System.Console]System.Console::WriteLine(string) + IL_0052: call void [System.Console]System.Console::WriteLine() + IL_0057: ldloc.0 + IL_0058: callvirt instance string [mscorlib]System.Exception::get_StackTrace() + IL_005d: call void [System.Console]System.Console::WriteLine(string) + IL_0062: call void [System.Console]System.Console::WriteLine() + IL_0067: ldc.i4.s 101 + IL_0069: stsfld int32 TailcallVerify.Condition5::Result + IL_006e: leave.s IL_0070 + + } // end handler + IL_0070: ldstr "Execution finished - Test " + IL_0075: ldsfld int32 TailcallVerify.Condition5::Result + IL_007a: ldc.i4.s 100 + IL_007c: beq.s IL_0085 + + IL_007e: ldstr "FAILED" + IL_0083: br.s IL_008a + + IL_0085: ldstr "PASSED" + IL_008a: call string [mscorlib]System.String::Concat(string, + string) + IL_008f: call void [System.Console]System.Console::WriteLine(string) + IL_0094: ldsfld int32 TailcallVerify.Condition5::Result + IL_0099: ret + } // end of method Condition5::Test7 + + .method private hidebysig static int64 + Caller7() cil managed + { + // Code size 52 (0x34) + .maxstack 8 + IL_0000: ldc.i4.0 + IL_0001: newobj instance void [mscorlib]System.Diagnostics.StackFrame::.ctor(bool) + IL_0006: callvirt instance class [mscorlib]System.Reflection.MethodBase [mscorlib]System.Diagnostics.StackFrame::GetMethod() + IL_000b: callvirt instance string [mscorlib]System.Reflection.MemberInfo::get_Name() + IL_0010: ldstr "Caller" + IL_0015: callvirt instance int32 [mscorlib]System.String::IndexOf(string) + IL_001a: ldc.i4.m1 + IL_001b: bne.un.s IL_002e + + IL_001d: ldstr "Failed, Method was inlined..." + IL_0022: call void [System.Console]System.Console::WriteLine(string) + IL_0027: ldc.i4.s 101 + IL_0029: stsfld int32 TailcallVerify.Condition5::Result + IL_002e: tail. call uint64 TailcallVerify.Condition5::Callee7() + IL_0033: ret + } // end of method Condition5::Caller7 + + .method private hidebysig static uint64 + Callee7() cil managed noinlining + { + // Code size 17 (0x11) + .maxstack 8 + IL_0000: volatile. + IL_0002: ldsfld int32 modreq([mscorlib]System.Runtime.CompilerServices.IsVolatile) TailcallVerify.Condition5::dummy + IL_0007: volatile. + IL_0009: ldsfld int32 modreq([mscorlib]System.Runtime.CompilerServices.IsVolatile) TailcallVerify.Condition5::zero + IL_000e: div + IL_000f: conv.i8 + IL_0010: ret + } // end of method Condition5::Callee7 + + .method public hidebysig static int32 Test8() cil managed nooptimization + { + // Code size 104 (0x68) + .maxstack 3 + .locals init ([0] class [mscorlib]System.Exception e) + IL_0000: ldstr "Executing Condition5.Test8 - Caller: Arguments: No" + + "ne - ReturnType: UInt64; Callee: Arguments: None - ReturnType: UInt32 -" + + " Expecting a InvalidProgramException" + IL_0005: call void [System.Console]System.Console::WriteLine(string) + IL_000a: ldc.i4.s 100 + IL_000c: stsfld int32 TailcallVerify.Condition5::Result + .try + { + IL_0011: call int64 TailcallVerify.Condition5::Caller8() + IL_0016: pop + IL_0017: leave.s IL_003e + + } // end .try + catch [mscorlib]System.Exception + { + IL_0019: stloc.0 + IL_001a: ldloc.0 + IL_001b: isinst [mscorlib]System.InvalidProgramException + IL_0020: brtrue.s IL_002a + + IL_0022: ldloc.0 + IL_0023: isinst [mscorlib]System.DivideByZeroException + IL_0028: brfalse.s IL_0033 + + IL_002a: ldc.i4.s 100 + IL_002c: stsfld int32 TailcallVerify.Condition5::Result + IL_0031: br.s IL_003c + + IL_0033: ldc.i4.s 101 + IL_0035: stsfld int32 TailcallVerify.Condition5::Result + IL_003a: rethrow + IL_003c: leave.s IL_003e + + } // end handler + IL_003e: ldstr "Execution finished - Test " + IL_0043: ldsfld int32 TailcallVerify.Condition5::Result + IL_0048: ldc.i4.s 100 + IL_004a: beq.s IL_0053 + + IL_004c: ldstr "FAILED" + IL_0051: br.s IL_0058 + + IL_0053: ldstr "PASSED" + IL_0058: call string [mscorlib]System.String::Concat(string, + string) + IL_005d: call void [System.Console]System.Console::WriteLine(string) + IL_0062: ldsfld int32 TailcallVerify.Condition5::Result + IL_0067: ret + } // end of method Condition5::Test8 + + .method private hidebysig static int64 + Caller8() cil managed + { + // Code size 57 (0x39) + .maxstack 8 + IL_0000: ldc.i4.0 + IL_0001: newobj instance void [mscorlib]System.Diagnostics.StackFrame::.ctor(bool) + IL_0006: callvirt instance class [mscorlib]System.Reflection.MethodBase [mscorlib]System.Diagnostics.StackFrame::GetMethod() + IL_000b: callvirt instance string [mscorlib]System.Reflection.MemberInfo::get_Name() + IL_0010: ldstr "Caller" + IL_0015: callvirt instance int32 [mscorlib]System.String::IndexOf(string) + IL_001a: ldc.i4.m1 + IL_001b: bne.un.s IL_002e + + IL_001d: ldstr "Failed, Method was inlined..." + IL_0022: call void [System.Console]System.Console::WriteLine(string) + IL_0027: ldc.i4.s 101 + IL_0029: stsfld int32 TailcallVerify.Condition5::Result + IL_002e: tail. call valuetype TailcallVerify.ValueTypeSingleInt64 TailcallVerify.Condition5::Callee8() + IL_0033: ldfld int64 TailcallVerify.ValueTypeSingleInt64::i1 + IL_0038: ret + } // end of method Condition5::Caller8 + + .method private hidebysig static valuetype TailcallVerify.ValueTypeSingleInt64 + Callee8() cil managed noinlining + { + // Code size 33 (0x21) + .maxstack 3 + .locals init ([0] valuetype TailcallVerify.ValueTypeSingleInt64 v) + IL_0000: ldloca.s v + IL_0002: initobj TailcallVerify.ValueTypeSingleInt64 + IL_0008: ldloca.s v + IL_000a: volatile. + IL_000c: ldsfld int32 modreq([mscorlib]System.Runtime.CompilerServices.IsVolatile) TailcallVerify.Condition5::dummy + IL_0011: volatile. + IL_0013: ldsfld int32 modreq([mscorlib]System.Runtime.CompilerServices.IsVolatile) TailcallVerify.Condition5::zero + IL_0018: div + IL_0019: conv.i8 + IL_001a: stfld int64 TailcallVerify.ValueTypeSingleInt64::i1 + IL_001f: ldloc.0 + IL_0020: ret + } // end of method Condition5::Callee8 + + .method public hidebysig static int32 Test9() cil managed nooptimization + { + // Code size 104 (0x68) + .maxstack 3 + .locals init ([0] class [mscorlib]System.Exception e) + IL_0000: ldstr "Executing Condition5.Test9 - Caller: Arguments: No" + + "ne - ReturnType: UInt32; Callee: Arguments: None - ReturnType: UInt64 -" + + " Expecting a InvalidProgramException" + IL_0005: call void [System.Console]System.Console::WriteLine(string) + IL_000a: ldc.i4.s 100 + IL_000c: stsfld int32 TailcallVerify.Condition5::Result + .try + { + IL_0011: call uint32 TailcallVerify.Condition5::Caller9() + IL_0016: pop + IL_0017: leave.s IL_003e + + } // end .try + catch [mscorlib]System.Exception + { + IL_0019: stloc.0 + IL_001a: ldloc.0 + IL_001b: isinst [mscorlib]System.InvalidProgramException + IL_0020: brtrue.s IL_002a + + IL_0022: ldloc.0 + IL_0023: isinst [mscorlib]System.DivideByZeroException + IL_0028: brfalse.s IL_0033 + + IL_002a: ldc.i4.s 100 + IL_002c: stsfld int32 TailcallVerify.Condition5::Result + IL_0031: br.s IL_003c + + IL_0033: ldc.i4.s 101 + IL_0035: stsfld int32 TailcallVerify.Condition5::Result + IL_003a: rethrow + IL_003c: leave.s IL_003e + + } // end handler + IL_003e: ldstr "Execution finished - Test " + IL_0043: ldsfld int32 TailcallVerify.Condition5::Result + IL_0048: ldc.i4.s 100 + IL_004a: beq.s IL_0053 + + IL_004c: ldstr "FAILED" + IL_0051: br.s IL_0058 + + IL_0053: ldstr "PASSED" + IL_0058: call string [mscorlib]System.String::Concat(string, + string) + IL_005d: call void [System.Console]System.Console::WriteLine(string) + IL_0062: ldsfld int32 TailcallVerify.Condition5::Result + IL_0067: ret + } // end of method Condition5::Test9 + + .method private hidebysig static uint32 + Caller9() cil managed + { + // Code size 53 (0x35) + .maxstack 8 + IL_0000: ldc.i4.0 + IL_0001: newobj instance void [mscorlib]System.Diagnostics.StackFrame::.ctor(bool) + IL_0006: callvirt instance class [mscorlib]System.Reflection.MethodBase [mscorlib]System.Diagnostics.StackFrame::GetMethod() + IL_000b: callvirt instance string [mscorlib]System.Reflection.MemberInfo::get_Name() + IL_0010: ldstr "Caller" + IL_0015: callvirt instance int32 [mscorlib]System.String::IndexOf(string) + IL_001a: ldc.i4.m1 + IL_001b: bne.un.s IL_002e + + IL_001d: ldstr "Failed, Method was inlined..." + IL_0022: call void [System.Console]System.Console::WriteLine(string) + IL_0027: ldc.i4.s 101 + IL_0029: stsfld int32 TailcallVerify.Condition5::Result + IL_002e: tail. call uint64 TailcallVerify.Condition5::Callee9() + IL_0033: conv.u4 + IL_0034: ret + } // end of method Condition5::Caller9 + + .method private hidebysig static uint64 + Callee9() cil managed noinlining + { + // Code size 17 (0x11) + .maxstack 8 + IL_0000: volatile. + IL_0002: ldsfld int32 modreq([mscorlib]System.Runtime.CompilerServices.IsVolatile) TailcallVerify.Condition5::dummy + IL_0007: volatile. + IL_0009: ldsfld int32 modreq([mscorlib]System.Runtime.CompilerServices.IsVolatile) TailcallVerify.Condition5::zero + IL_000e: div + IL_000f: conv.i8 + IL_0010: ret + } // end of method Condition5::Callee9 + + .method public hidebysig specialname rtspecialname + instance void .ctor() cil managed + { + // Code size 7 (0x7) + .maxstack 8 + IL_0000: ldarg.0 + IL_0001: call instance void [mscorlib]System.Object::.ctor() + IL_0006: ret + } // end of method Condition5::.ctor + + .method private hidebysig specialname rtspecialname static + void .cctor() cil managed + { + // Code size 24 (0x18) + .maxstack 8 + IL_0000: ldc.i4.0 + IL_0001: volatile. + IL_0003: stsfld int32 modreq([mscorlib]System.Runtime.CompilerServices.IsVolatile) TailcallVerify.Condition5::dummy + IL_0008: ldc.i4.0 + IL_0009: volatile. + IL_000b: stsfld int32 modreq([mscorlib]System.Runtime.CompilerServices.IsVolatile) TailcallVerify.Condition5::zero + IL_0010: ldc.i4.s 100 + IL_0012: stsfld int32 TailcallVerify.Condition5::Result + IL_0017: ret + } // end of method Condition5::.cctor + +} // end of class TailcallVerify.Condition5 + +.class private auto ansi beforefieldinit TailcallVerify.Condition4 + extends [mscorlib]System.Object +{ + .field private static int32 modreq([mscorlib]System.Runtime.CompilerServices.IsVolatile) zero + .field public static int32 Result + .method public hidebysig static int32 Test1() cil managed nooptimization + { + // Code size 154 (0x9a) + .maxstack 3 + .locals init ([0] class [mscorlib]System.Exception e) + IL_0000: ldstr "Executing Condition4.Test1 - Caller: Arguments: No" + + "ne - ReturnType: 3 byte struct; Callee: Arguments: None - ReturnType: 3" + + " byte struct" + IL_0005: call void [System.Console]System.Console::WriteLine(string) + IL_000a: ldc.i4.s 100 + IL_000c: stsfld int32 TailcallVerify.Condition4::Result + .try + { + IL_0011: call valuetype TailcallVerify.ValueType3Bytes TailcallVerify.Condition4::Caller1() + IL_0016: pop + IL_0017: leave.s IL_0070 + + } // end .try + catch [mscorlib]System.Exception + { + IL_0019: stloc.0 + IL_001a: ldloc.0 + IL_001b: isinst [mscorlib]System.DivideByZeroException + IL_0020: brtrue.s IL_002b + + IL_0022: ldc.i4.s 101 + IL_0024: stsfld int32 TailcallVerify.Condition4::Result + IL_0029: rethrow + IL_002b: ldloc.0 + IL_002c: callvirt instance string [mscorlib]System.Exception::get_StackTrace() + IL_0031: ldstr "Caller" + IL_0036: callvirt instance int32 [mscorlib]System.String::IndexOf(string) + IL_003b: ldc.i4.m1 + IL_003c: beq.s IL_006e + + IL_003e: ldstr "FAILED: Found the word 'Caller' in the stacktrace." + IL_0043: call void [System.Console]System.Console::WriteLine(string) + IL_0048: ldstr "------------------------------------------------" + IL_004d: call void [System.Console]System.Console::WriteLine(string) + IL_0052: call void [System.Console]System.Console::WriteLine() + IL_0057: ldloc.0 + IL_0058: callvirt instance string [mscorlib]System.Exception::get_StackTrace() + IL_005d: call void [System.Console]System.Console::WriteLine(string) + IL_0062: call void [System.Console]System.Console::WriteLine() + IL_0067: ldc.i4.s 101 + IL_0069: stsfld int32 TailcallVerify.Condition4::Result + IL_006e: leave.s IL_0070 + + } // end handler + IL_0070: ldstr "Execution finished - Test " + IL_0075: ldsfld int32 TailcallVerify.Condition4::Result + IL_007a: ldc.i4.s 100 + IL_007c: beq.s IL_0085 + + IL_007e: ldstr "FAILED" + IL_0083: br.s IL_008a + + IL_0085: ldstr "PASSED" + IL_008a: call string [mscorlib]System.String::Concat(string, + string) + IL_008f: call void [System.Console]System.Console::WriteLine(string) + IL_0094: ldsfld int32 TailcallVerify.Condition4::Result + IL_0099: ret + } // end of method Condition4::Test1 + + .method private hidebysig static valuetype TailcallVerify.ValueType3Bytes + Caller1() cil managed + { + // Code size 52 (0x34) + .maxstack 8 + IL_0000: ldc.i4.0 + IL_0001: newobj instance void [mscorlib]System.Diagnostics.StackFrame::.ctor(bool) + IL_0006: callvirt instance class [mscorlib]System.Reflection.MethodBase [mscorlib]System.Diagnostics.StackFrame::GetMethod() + IL_000b: callvirt instance string [mscorlib]System.Reflection.MemberInfo::get_Name() + IL_0010: ldstr "Caller" + IL_0015: callvirt instance int32 [mscorlib]System.String::IndexOf(string) + IL_001a: ldc.i4.m1 + IL_001b: bne.un.s IL_002e + + IL_001d: ldstr "Failed, Method was inlined..." + IL_0022: call void [System.Console]System.Console::WriteLine(string) + IL_0027: ldc.i4.s 101 + IL_0029: stsfld int32 TailcallVerify.Condition4::Result + IL_002e: tail. call valuetype TailcallVerify.ValueType3Bytes TailcallVerify.Condition4::Callee1() + IL_0033: ret + } // end of method Condition4::Caller1 + + .method private hidebysig static valuetype TailcallVerify.ValueType3Bytes + Callee1() cil managed noinlining + { + // Code size 27 (0x1b) + .maxstack 3 + .locals init ([0] valuetype TailcallVerify.ValueType3Bytes v) + IL_0000: ldloca.s v + IL_0002: initobj TailcallVerify.ValueType3Bytes + IL_0008: ldloca.s v + IL_000a: ldc.i4.1 + IL_000b: volatile. + IL_000d: ldsfld int32 modreq([mscorlib]System.Runtime.CompilerServices.IsVolatile) TailcallVerify.Condition4::zero + IL_0012: div + IL_0013: conv.i2 + IL_0014: stfld int16 TailcallVerify.ValueType3Bytes::i2 + IL_0019: ldloc.0 + IL_001a: ret + } // end of method Condition4::Callee1 + + .method public hidebysig static int32 Test2() cil managed nooptimization + { + // Code size 172 (0xac) + .maxstack 3 + .locals init ([0] valuetype TailcallVerify.ValueType3Bytes v, + [1] class [mscorlib]System.Exception e) + IL_0000: ldstr "Executing Condition4.Test1 - Caller: Arguments: No" + + "ne - ReturnType: 3 byte struct; Callee: Arguments: None - ReturnType: 3" + + " byte struct [Verifying the field values in the return type struct]" + IL_0005: call void [System.Console]System.Console::WriteLine(string) + IL_000a: ldc.i4.s 100 + IL_000c: stsfld int32 TailcallVerify.Condition4::Result + .try + { + IL_0011: call valuetype TailcallVerify.ValueType3Bytes TailcallVerify.Condition4::Caller2() + IL_0016: stloc.0 + IL_0017: ldloca.s v + IL_0019: ldfld uint8 TailcallVerify.ValueType3Bytes::i1 + IL_001e: brtrue.s IL_002e + + IL_0020: ldloca.s v + IL_0022: ldfld int16 TailcallVerify.ValueType3Bytes::i2 + IL_0027: ldc.i4 0x7fff + IL_002c: beq.s IL_0061 + + IL_002e: ldc.i4.s 101 + IL_0030: stsfld int32 TailcallVerify.Condition4::Result + IL_0035: ldstr "FAILED: The fields in the return type struct have " + + "the wrong values." + IL_003a: call void [System.Console]System.Console::WriteLine(string) + IL_003f: ldstr "v.i1: {0} != byte.MinValue || v.i2: {1} != short.M" + + "axValue" + IL_0044: ldloca.s v + IL_0046: ldfld uint8 TailcallVerify.ValueType3Bytes::i1 + IL_004b: box [mscorlib]System.Byte + IL_0050: ldloca.s v + IL_0052: ldfld int16 TailcallVerify.ValueType3Bytes::i2 + IL_0057: box [mscorlib]System.Int16 + IL_005c: call void [System.Console]System.Console::WriteLine(string, + object, + object) + IL_0061: leave.s IL_0082 + + } // end .try + catch [mscorlib]System.Exception + { + IL_0063: stloc.1 + IL_0064: ldc.i4.s 101 + IL_0066: stsfld int32 TailcallVerify.Condition4::Result + IL_006b: ldstr "FAILED: Unexpected exception: " + IL_0070: ldloc.1 + IL_0071: callvirt instance string [mscorlib]System.Object::ToString() + IL_0076: call string [mscorlib]System.String::Concat(string, + string) + IL_007b: call void [System.Console]System.Console::WriteLine(string) + IL_0080: leave.s IL_0082 + + } // end handler + IL_0082: ldstr "Execution finished - Test " + IL_0087: ldsfld int32 TailcallVerify.Condition4::Result + IL_008c: ldc.i4.s 100 + IL_008e: beq.s IL_0097 + + IL_0090: ldstr "FAILED" + IL_0095: br.s IL_009c + + IL_0097: ldstr "PASSED" + IL_009c: call string [mscorlib]System.String::Concat(string, + string) + IL_00a1: call void [System.Console]System.Console::WriteLine(string) + IL_00a6: ldsfld int32 TailcallVerify.Condition4::Result + IL_00ab: ret + } // end of method Condition4::Test2 + + .method private hidebysig static valuetype TailcallVerify.ValueType3Bytes + Caller2() cil managed + { + // Code size 52 (0x34) + .maxstack 8 + IL_0000: ldc.i4.0 + IL_0001: newobj instance void [mscorlib]System.Diagnostics.StackFrame::.ctor(bool) + IL_0006: callvirt instance class [mscorlib]System.Reflection.MethodBase [mscorlib]System.Diagnostics.StackFrame::GetMethod() + IL_000b: callvirt instance string [mscorlib]System.Reflection.MemberInfo::get_Name() + IL_0010: ldstr "Caller" + IL_0015: callvirt instance int32 [mscorlib]System.String::IndexOf(string) + IL_001a: ldc.i4.m1 + IL_001b: bne.un.s IL_002e + + IL_001d: ldstr "Failed, Method was inlined..." + IL_0022: call void [System.Console]System.Console::WriteLine(string) + IL_0027: ldc.i4.s 101 + IL_0029: stsfld int32 TailcallVerify.Condition4::Result + IL_002e: tail. call valuetype TailcallVerify.ValueType3Bytes TailcallVerify.Condition4::Callee2() + IL_0033: ret + } // end of method Condition4::Caller2 + + .method private hidebysig static valuetype TailcallVerify.ValueType3Bytes + Callee2() cil managed noinlining + { + // Code size 30 (0x1e) + .maxstack 2 + .locals init ([0] valuetype TailcallVerify.ValueType3Bytes v) + IL_0000: ldloca.s v + IL_0002: initobj TailcallVerify.ValueType3Bytes + IL_0008: ldloca.s v + IL_000a: ldc.i4.0 + IL_000b: stfld uint8 TailcallVerify.ValueType3Bytes::i1 + IL_0010: ldloca.s v + IL_0012: ldc.i4 0x7fff + IL_0017: stfld int16 TailcallVerify.ValueType3Bytes::i2 + IL_001c: ldloc.0 + IL_001d: ret + } // end of method Condition4::Callee2 + + .method public hidebysig specialname rtspecialname + instance void .ctor() cil managed + { + // Code size 7 (0x7) + .maxstack 8 + IL_0000: ldarg.0 + IL_0001: call instance void [mscorlib]System.Object::.ctor() + IL_0006: ret + } // end of method Condition4::.ctor + + .method private hidebysig specialname rtspecialname static + void .cctor() cil managed + { + // Code size 16 (0x10) + .maxstack 8 + IL_0000: ldc.i4.0 + IL_0001: volatile. + IL_0003: stsfld int32 modreq([mscorlib]System.Runtime.CompilerServices.IsVolatile) TailcallVerify.Condition4::zero + IL_0008: ldc.i4.s 100 + IL_000a: stsfld int32 TailcallVerify.Condition4::Result + IL_000f: ret + } // end of method Condition4::.cctor + +} // end of class TailcallVerify.Condition4 + +.class private auto ansi beforefieldinit TailcallVerify.Condition3 + extends [mscorlib]System.Object +{ + .field private static int32 modreq([mscorlib]System.Runtime.CompilerServices.IsVolatile) dummy + .field private static int32 modreq([mscorlib]System.Runtime.CompilerServices.IsVolatile) zero + .field private static int32 Result + .method public hidebysig static int32 Test1() cil managed nooptimization + { + // Code size 154 (0x9a) + .maxstack 3 + .locals init ([0] class [mscorlib]System.Exception e) + IL_0000: ldstr "Executing Condition3.Test1 - Caller: Arguments: No" + + "ne - ReturnType: Int32; Callee: Arguments: None - ReturnType: Int32" + IL_0005: call void [System.Console]System.Console::WriteLine(string) + IL_000a: ldc.i4.s 100 + IL_000c: stsfld int32 TailcallVerify.Condition3::Result + .try + { + IL_0011: call int32 TailcallVerify.Condition3::Caller1() + IL_0016: pop + IL_0017: leave.s IL_0070 + + } // end .try + catch [mscorlib]System.Exception + { + IL_0019: stloc.0 + IL_001a: ldloc.0 + IL_001b: isinst [mscorlib]System.DivideByZeroException + IL_0020: brtrue.s IL_002b + + IL_0022: ldc.i4.s 101 + IL_0024: stsfld int32 TailcallVerify.Condition3::Result + IL_0029: rethrow + IL_002b: ldloc.0 + IL_002c: callvirt instance string [mscorlib]System.Exception::get_StackTrace() + IL_0031: ldstr "Caller" + IL_0036: callvirt instance int32 [mscorlib]System.String::IndexOf(string) + IL_003b: ldc.i4.m1 + IL_003c: beq.s IL_006e + + IL_003e: ldstr "FAILED: Found the word 'Caller' in the stacktrace." + IL_0043: call void [System.Console]System.Console::WriteLine(string) + IL_0048: ldstr "------------------------------------------------" + IL_004d: call void [System.Console]System.Console::WriteLine(string) + IL_0052: call void [System.Console]System.Console::WriteLine() + IL_0057: ldloc.0 + IL_0058: callvirt instance string [mscorlib]System.Exception::get_StackTrace() + IL_005d: call void [System.Console]System.Console::WriteLine(string) + IL_0062: call void [System.Console]System.Console::WriteLine() + IL_0067: ldc.i4.s 101 + IL_0069: stsfld int32 TailcallVerify.Condition3::Result + IL_006e: leave.s IL_0070 + + } // end handler + IL_0070: ldstr "Execution finished - Test " + IL_0075: ldsfld int32 TailcallVerify.Condition3::Result + IL_007a: ldc.i4.s 100 + IL_007c: beq.s IL_0085 + + IL_007e: ldstr "FAILED" + IL_0083: br.s IL_008a + + IL_0085: ldstr "PASSED" + IL_008a: call string [mscorlib]System.String::Concat(string, + string) + IL_008f: call void [System.Console]System.Console::WriteLine(string) + IL_0094: ldsfld int32 TailcallVerify.Condition3::Result + IL_0099: ret + } // end of method Condition3::Test1 + + .method private hidebysig static int32 + Caller1() cil managed + { + // Code size 52 (0x34) + .maxstack 8 + IL_0000: ldc.i4.0 + IL_0001: newobj instance void [mscorlib]System.Diagnostics.StackFrame::.ctor(bool) + IL_0006: callvirt instance class [mscorlib]System.Reflection.MethodBase [mscorlib]System.Diagnostics.StackFrame::GetMethod() + IL_000b: callvirt instance string [mscorlib]System.Reflection.MemberInfo::get_Name() + IL_0010: ldstr "Caller" + IL_0015: callvirt instance int32 [mscorlib]System.String::IndexOf(string) + IL_001a: ldc.i4.m1 + IL_001b: bne.un.s IL_002e + + IL_001d: ldstr "Failed, Method was inlined..." + IL_0022: call void [System.Console]System.Console::WriteLine(string) + IL_0027: ldc.i4.s 101 + IL_0029: stsfld int32 TailcallVerify.Condition3::Result + IL_002e: tail. call int32 TailcallVerify.Condition3::Callee1() + IL_0033: ret + } // end of method Condition3::Caller1 + + .method private hidebysig static int32 + Callee1() cil managed noinlining + { + // Code size 12 (0xc) + .maxstack 2 + .locals init ([0] int32 i) + IL_0000: ldc.i4.1 + IL_0001: volatile. + IL_0003: ldsfld int32 modreq([mscorlib]System.Runtime.CompilerServices.IsVolatile) TailcallVerify.Condition3::zero + IL_0008: div + IL_0009: stloc.0 + IL_000a: ldloc.0 + IL_000b: ret + } // end of method Condition3::Callee1 + + .method public hidebysig static int32 Test2() cil managed nooptimization + { + // Code size 154 (0x9a) + .maxstack 3 + .locals init ([0] class [mscorlib]System.Exception e) + IL_0000: ldstr "Executing Condition3.Test2 - Caller: Arguments: No" + + "ne - ReturnType: void; Callee: Arguments: None - ReturnType: string" + IL_0005: call void [System.Console]System.Console::WriteLine(string) + IL_000a: ldc.i4.s 100 + IL_000c: stsfld int32 TailcallVerify.Condition3::Result + .try + { + IL_0011: call string TailcallVerify.Condition3::Caller2() + IL_0016: pop + IL_0017: leave.s IL_0070 + + } // end .try + catch [mscorlib]System.Exception + { + IL_0019: stloc.0 + IL_001a: ldloc.0 + IL_001b: isinst [mscorlib]System.DivideByZeroException + IL_0020: brtrue.s IL_002b + + IL_0022: ldc.i4.s 101 + IL_0024: stsfld int32 TailcallVerify.Condition3::Result + IL_0029: rethrow + IL_002b: ldloc.0 + IL_002c: callvirt instance string [mscorlib]System.Exception::get_StackTrace() + IL_0031: ldstr "Caller" + IL_0036: callvirt instance int32 [mscorlib]System.String::IndexOf(string) + IL_003b: ldc.i4.m1 + IL_003c: beq.s IL_006e + + IL_003e: ldstr "FAILED: Found the word 'Caller' in the stacktrace." + IL_0043: call void [System.Console]System.Console::WriteLine(string) + IL_0048: ldstr "------------------------------------------------" + IL_004d: call void [System.Console]System.Console::WriteLine(string) + IL_0052: call void [System.Console]System.Console::WriteLine() + IL_0057: ldloc.0 + IL_0058: callvirt instance string [mscorlib]System.Exception::get_StackTrace() + IL_005d: call void [System.Console]System.Console::WriteLine(string) + IL_0062: call void [System.Console]System.Console::WriteLine() + IL_0067: ldc.i4.s 101 + IL_0069: stsfld int32 TailcallVerify.Condition3::Result + IL_006e: leave.s IL_0070 + + } // end handler + IL_0070: ldstr "Execution finished - Test " + IL_0075: ldsfld int32 TailcallVerify.Condition3::Result + IL_007a: ldc.i4.s 100 + IL_007c: beq.s IL_0085 + + IL_007e: ldstr "FAILED" + IL_0083: br.s IL_008a + + IL_0085: ldstr "PASSED" + IL_008a: call string [mscorlib]System.String::Concat(string, + string) + IL_008f: call void [System.Console]System.Console::WriteLine(string) + IL_0094: ldsfld int32 TailcallVerify.Condition3::Result + IL_0099: ret + } // end of method Condition3::Test2 + + .method private hidebysig static string + Caller2() cil managed + { + // Code size 52 (0x34) + .maxstack 8 + IL_0000: ldc.i4.0 + IL_0001: newobj instance void [mscorlib]System.Diagnostics.StackFrame::.ctor(bool) + IL_0006: callvirt instance class [mscorlib]System.Reflection.MethodBase [mscorlib]System.Diagnostics.StackFrame::GetMethod() + IL_000b: callvirt instance string [mscorlib]System.Reflection.MemberInfo::get_Name() + IL_0010: ldstr "Caller" + IL_0015: callvirt instance int32 [mscorlib]System.String::IndexOf(string) + IL_001a: ldc.i4.m1 + IL_001b: bne.un.s IL_002e + + IL_001d: ldstr "Failed, Method was inlined..." + IL_0022: call void [System.Console]System.Console::WriteLine(string) + IL_0027: ldc.i4.s 101 + IL_0029: stsfld int32 TailcallVerify.Condition3::Result + IL_002e: tail. call string TailcallVerify.Condition3::Callee2() + IL_0033: ret + } // end of method Condition3::Caller2 + + .method private hidebysig static string + Callee2() cil managed noinlining + { + // Code size 29 (0x1d) + .maxstack 8 + IL_0000: volatile. + IL_0002: ldsfld int32 modreq([mscorlib]System.Runtime.CompilerServices.IsVolatile) TailcallVerify.Condition3::dummy + IL_0007: volatile. + IL_0009: ldsfld int32 modreq([mscorlib]System.Runtime.CompilerServices.IsVolatile) TailcallVerify.Condition3::zero + IL_000e: div + IL_000f: conv.i2 + IL_0010: volatile. + IL_0012: stsfld int32 modreq([mscorlib]System.Runtime.CompilerServices.IsVolatile) TailcallVerify.Condition3::dummy + IL_0017: ldstr "foo" + IL_001c: ret + } // end of method Condition3::Callee2 + + .method public hidebysig specialname rtspecialname + instance void .ctor() cil managed + { + // Code size 7 (0x7) + .maxstack 8 + IL_0000: ldarg.0 + IL_0001: call instance void [mscorlib]System.Object::.ctor() + IL_0006: ret + } // end of method Condition3::.ctor + + .method private hidebysig specialname rtspecialname static + void .cctor() cil managed + { + // Code size 24 (0x18) + .maxstack 8 + IL_0000: ldc.i4.0 + IL_0001: volatile. + IL_0003: stsfld int32 modreq([mscorlib]System.Runtime.CompilerServices.IsVolatile) TailcallVerify.Condition3::dummy + IL_0008: ldc.i4.0 + IL_0009: volatile. + IL_000b: stsfld int32 modreq([mscorlib]System.Runtime.CompilerServices.IsVolatile) TailcallVerify.Condition3::zero + IL_0010: ldc.i4.s 100 + IL_0012: stsfld int32 TailcallVerify.Condition3::Result + IL_0017: ret + } // end of method Condition3::.cctor + +} // end of class TailcallVerify.Condition3 + +.class private auto ansi beforefieldinit TailcallVerify.Condition2 + extends [mscorlib]System.Object +{ + .field private static int32 modreq([mscorlib]System.Runtime.CompilerServices.IsVolatile) dummy + .field private static int32 modreq([mscorlib]System.Runtime.CompilerServices.IsVolatile) zero + .field private static int32 Result + .method public hidebysig static int32 Test1() cil managed nooptimization + { + // Code size 153 (0x99) + .maxstack 3 + .locals init ([0] class [mscorlib]System.Exception e) + IL_0000: ldstr "Executing Condition2.Test1 - Caller: Arguments: N" + + "one - ReturnType: void; Callee: Arguments: 0 - ReturnType: Int32" + IL_0005: call void [System.Console]System.Console::WriteLine(string) + IL_000a: ldc.i4.s 100 + IL_000c: stsfld int32 TailcallVerify.Condition2::Result + .try + { + IL_0011: call void TailcallVerify.Condition2::Caller1() + IL_0016: leave.s IL_006f + + } // end .try + catch [mscorlib]System.Exception + { + IL_0018: stloc.0 + IL_0019: ldloc.0 + IL_001a: isinst [mscorlib]System.DivideByZeroException + IL_001f: brtrue.s IL_002a + + IL_0021: ldc.i4.s 101 + IL_0023: stsfld int32 TailcallVerify.Condition2::Result + IL_0028: rethrow + IL_002a: ldloc.0 + IL_002b: callvirt instance string [mscorlib]System.Exception::get_StackTrace() + IL_0030: ldstr "Caller" + IL_0035: callvirt instance int32 [mscorlib]System.String::IndexOf(string) + IL_003a: ldc.i4.m1 + IL_003b: beq.s IL_006d + + IL_003d: ldstr "FAILED: Found the word 'Caller' in the stacktrace." + IL_0042: call void [System.Console]System.Console::WriteLine(string) + IL_0047: ldstr "------------------------------------------------" + IL_004c: call void [System.Console]System.Console::WriteLine(string) + IL_0051: call void [System.Console]System.Console::WriteLine() + IL_0056: ldloc.0 + IL_0057: callvirt instance string [mscorlib]System.Exception::get_StackTrace() + IL_005c: call void [System.Console]System.Console::WriteLine(string) + IL_0061: call void [System.Console]System.Console::WriteLine() + IL_0066: ldc.i4.s 101 + IL_0068: stsfld int32 TailcallVerify.Condition2::Result + IL_006d: leave.s IL_006f + + } // end handler + IL_006f: ldstr "Execution finished - Test " + IL_0074: ldsfld int32 TailcallVerify.Condition2::Result + IL_0079: ldc.i4.s 100 + IL_007b: beq.s IL_0084 + + IL_007d: ldstr "FAILED" + IL_0082: br.s IL_0089 + + IL_0084: ldstr "PASSED" + IL_0089: call string [mscorlib]System.String::Concat(string, + string) + IL_008e: call void [System.Console]System.Console::WriteLine(string) + IL_0093: ldsfld int32 TailcallVerify.Condition2::Result + IL_0098: ret + } // end of method Condition2::Test1 + + .method private hidebysig static void Caller1() cil managed + { + // Code size 53 (0x35) + .maxstack 8 + IL_0000: ldc.i4.0 + IL_0001: newobj instance void [mscorlib]System.Diagnostics.StackFrame::.ctor(bool) + IL_0006: callvirt instance class [mscorlib]System.Reflection.MethodBase [mscorlib]System.Diagnostics.StackFrame::GetMethod() + IL_000b: callvirt instance string [mscorlib]System.Reflection.MemberInfo::get_Name() + IL_0010: ldstr "Caller" + IL_0015: callvirt instance int32 [mscorlib]System.String::IndexOf(string) + IL_001a: ldc.i4.m1 + IL_001b: bne.un.s IL_002e + + IL_001d: ldstr "Failed, Method was inlined..." + IL_0022: call void [System.Console]System.Console::WriteLine(string) + IL_0027: ldc.i4.s 101 + IL_0029: stsfld int32 TailcallVerify.Condition2::Result + IL_002e: tail. call int32 TailcallVerify.Condition2::Callee1() + IL_0033: pop + IL_0034: ret + } // end of method Condition2::Caller1 + + .method private hidebysig static int32 + Callee1() cil managed noinlining + { + // Code size 12 (0xc) + .maxstack 2 + .locals init ([0] int32 i) + IL_0000: ldc.i4.1 + IL_0001: volatile. + IL_0003: ldsfld int32 modreq([mscorlib]System.Runtime.CompilerServices.IsVolatile) TailcallVerify.Condition2::zero + IL_0008: div + IL_0009: stloc.0 + IL_000a: ldloc.0 + IL_000b: ret + } // end of method Condition2::Callee1 + + .method public hidebysig static int32 Test2() cil managed nooptimization + { + // Code size 153 (0x99) + .maxstack 3 + .locals init ([0] class [mscorlib]System.Exception e) + IL_0000: ldstr "Executing Condition2.Test2 - Caller: Arguments: N" + + "one - ReturnType: void; Callee: Arguments: Int32 - ReturnType: string" + IL_0005: call void [System.Console]System.Console::WriteLine(string) + IL_000a: ldc.i4.s 100 + IL_000c: stsfld int32 TailcallVerify.Condition2::Result + .try + { + IL_0011: call void TailcallVerify.Condition2::Caller2() + IL_0016: leave.s IL_006f + + } // end .try + catch [mscorlib]System.Exception + { + IL_0018: stloc.0 + IL_0019: ldloc.0 + IL_001a: isinst [mscorlib]System.DivideByZeroException + IL_001f: brtrue.s IL_002a + + IL_0021: ldc.i4.s 101 + IL_0023: stsfld int32 TailcallVerify.Condition2::Result + IL_0028: rethrow + IL_002a: ldloc.0 + IL_002b: callvirt instance string [mscorlib]System.Exception::get_StackTrace() + IL_0030: ldstr "Caller" + IL_0035: callvirt instance int32 [mscorlib]System.String::IndexOf(string) + IL_003a: ldc.i4.m1 + IL_003b: beq.s IL_006d + + IL_003d: ldstr "FAILED: Found the word 'Caller' in the stacktrace." + IL_0042: call void [System.Console]System.Console::WriteLine(string) + IL_0047: ldstr "------------------------------------------------" + IL_004c: call void [System.Console]System.Console::WriteLine(string) + IL_0051: call void [System.Console]System.Console::WriteLine() + IL_0056: ldloc.0 + IL_0057: callvirt instance string [mscorlib]System.Exception::get_StackTrace() + IL_005c: call void [System.Console]System.Console::WriteLine(string) + IL_0061: call void [System.Console]System.Console::WriteLine() + IL_0066: ldc.i4.s 101 + IL_0068: stsfld int32 TailcallVerify.Condition2::Result + IL_006d: leave.s IL_006f + + } // end handler + IL_006f: ldstr "Execution finished - Test " + IL_0074: ldsfld int32 TailcallVerify.Condition2::Result + IL_0079: ldc.i4.s 100 + IL_007b: beq.s IL_0084 + + IL_007d: ldstr "FAILED" + IL_0082: br.s IL_0089 + + IL_0084: ldstr "PASSED" + IL_0089: call string [mscorlib]System.String::Concat(string, + string) + IL_008e: call void [System.Console]System.Console::WriteLine(string) + IL_0093: ldsfld int32 TailcallVerify.Condition2::Result + IL_0098: ret + } // end of method Condition2::Test2 + + .method private hidebysig static void Caller2() cil managed + { + // Code size 54 (0x36) + .maxstack 8 + IL_0000: ldc.i4.0 + IL_0001: newobj instance void [mscorlib]System.Diagnostics.StackFrame::.ctor(bool) + IL_0006: callvirt instance class [mscorlib]System.Reflection.MethodBase [mscorlib]System.Diagnostics.StackFrame::GetMethod() + IL_000b: callvirt instance string [mscorlib]System.Reflection.MemberInfo::get_Name() + IL_0010: ldstr "Caller" + IL_0015: callvirt instance int32 [mscorlib]System.String::IndexOf(string) + IL_001a: ldc.i4.m1 + IL_001b: bne.un.s IL_002e + + IL_001d: ldstr "Failed, Method was inlined..." + IL_0022: call void [System.Console]System.Console::WriteLine(string) + IL_0027: ldc.i4.s 101 + IL_0029: stsfld int32 TailcallVerify.Condition2::Result + IL_002e: ldc.i4.0 + IL_002f: tail. call string TailcallVerify.Condition2::Callee2(int32) + IL_0034: pop + IL_0035: ret + } // end of method Condition2::Caller2 + + .method private hidebysig static string + Callee2(int32 i) cil managed noinlining + { + // Code size 23 (0x17) + .maxstack 8 + IL_0000: ldarg.0 + IL_0001: volatile. + IL_0003: ldsfld int32 modreq([mscorlib]System.Runtime.CompilerServices.IsVolatile) TailcallVerify.Condition2::zero + IL_0008: div + IL_0009: conv.i2 + IL_000a: volatile. + IL_000c: stsfld int32 modreq([mscorlib]System.Runtime.CompilerServices.IsVolatile) TailcallVerify.Condition2::dummy + IL_0011: ldstr "foo" + IL_0016: ret + } // end of method Condition2::Callee2 + + .method public hidebysig specialname rtspecialname + instance void .ctor() cil managed + { + // Code size 7 (0x7) + .maxstack 8 + IL_0000: ldarg.0 + IL_0001: call instance void [mscorlib]System.Object::.ctor() + IL_0006: ret + } // end of method Condition2::.ctor + + .method private hidebysig specialname rtspecialname static + void .cctor() cil managed + { + // Code size 24 (0x18) + .maxstack 8 + IL_0000: ldc.i4.0 + IL_0001: volatile. + IL_0003: stsfld int32 modreq([mscorlib]System.Runtime.CompilerServices.IsVolatile) TailcallVerify.Condition2::dummy + IL_0008: ldc.i4.0 + IL_0009: volatile. + IL_000b: stsfld int32 modreq([mscorlib]System.Runtime.CompilerServices.IsVolatile) TailcallVerify.Condition2::zero + IL_0010: ldc.i4.s 100 + IL_0012: stsfld int32 TailcallVerify.Condition2::Result + IL_0017: ret + } // end of method Condition2::.cctor + +} // end of class TailcallVerify.Condition2 + +.class private auto ansi beforefieldinit TailcallVerify.Condition1 + extends [mscorlib]System.Object +{ + .field private static int32 Result + .field private static int32 modreq([mscorlib]System.Runtime.CompilerServices.IsVolatile) zero + .method public hidebysig static int32 Test1() cil managed nooptimization + { + // Code size 153 (0x99) + .maxstack 3 + .locals init ([0] class [mscorlib]System.Exception e) + IL_0000: ldstr "Executing Condition1.Test1 - Caller: Arguments: No" + + "ne - ReturnType: void; Callee: Arguments: None - ReturnType: 3 byte str" + + "uct" + IL_0005: call void [System.Console]System.Console::WriteLine(string) + IL_000a: ldc.i4.s 100 + IL_000c: stsfld int32 TailcallVerify.Condition1::Result + .try + { + IL_0011: call void TailcallVerify.Condition1::Caller1() + IL_0016: leave.s IL_006f + + } // end .try + catch [mscorlib]System.Exception + { + IL_0018: stloc.0 + IL_0019: ldloc.0 + IL_001a: isinst [mscorlib]System.DivideByZeroException + IL_001f: brtrue.s IL_002a + + IL_0021: ldc.i4.s 101 + IL_0023: stsfld int32 TailcallVerify.Condition1::Result + IL_0028: rethrow + IL_002a: ldloc.0 + IL_002b: callvirt instance string [mscorlib]System.Exception::get_StackTrace() + IL_0030: ldstr "Caller" + IL_0035: callvirt instance int32 [mscorlib]System.String::IndexOf(string) + IL_003a: ldc.i4.m1 + IL_003b: beq.s IL_006d + + IL_003d: ldstr "FAILED: Found the word 'Caller' in the stacktrace." + IL_0042: call void [System.Console]System.Console::WriteLine(string) + IL_0047: ldstr "------------------------------------------------" + IL_004c: call void [System.Console]System.Console::WriteLine(string) + IL_0051: call void [System.Console]System.Console::WriteLine() + IL_0056: ldloc.0 + IL_0057: callvirt instance string [mscorlib]System.Exception::get_StackTrace() + IL_005c: call void [System.Console]System.Console::WriteLine(string) + IL_0061: call void [System.Console]System.Console::WriteLine() + IL_0066: ldc.i4.s 101 + IL_0068: stsfld int32 TailcallVerify.Condition1::Result + IL_006d: leave.s IL_006f + + } // end handler + IL_006f: ldstr "Execution finished - Test " + IL_0074: ldsfld int32 TailcallVerify.Condition1::Result + IL_0079: ldc.i4.s 100 + IL_007b: beq.s IL_0084 + + IL_007d: ldstr "FAILED" + IL_0082: br.s IL_0089 + + IL_0084: ldstr "PASSED" + IL_0089: call string [mscorlib]System.String::Concat(string, + string) + IL_008e: call void [System.Console]System.Console::WriteLine(string) + IL_0093: ldsfld int32 TailcallVerify.Condition1::Result + IL_0098: ret + } // end of method Condition1::Test1 + + .method private hidebysig static void Caller1() cil managed + { + // Code size 53 (0x35) + .maxstack 8 + IL_0000: ldc.i4.0 + IL_0001: newobj instance void [mscorlib]System.Diagnostics.StackFrame::.ctor(bool) + IL_0006: callvirt instance class [mscorlib]System.Reflection.MethodBase [mscorlib]System.Diagnostics.StackFrame::GetMethod() + IL_000b: callvirt instance string [mscorlib]System.Reflection.MemberInfo::get_Name() + IL_0010: ldstr "Caller" + IL_0015: callvirt instance int32 [mscorlib]System.String::IndexOf(string) + IL_001a: ldc.i4.m1 + IL_001b: bne.un.s IL_002e + + IL_001d: ldstr "Failed, Method was inlined..." + IL_0022: call void [System.Console]System.Console::WriteLine(string) + IL_0027: ldc.i4.s 101 + IL_0029: stsfld int32 TailcallVerify.Condition1::Result + IL_002e: tail. call valuetype TailcallVerify.ValueType3Bytes TailcallVerify.Condition1::Callee1() + IL_0033: pop + IL_0034: ret + } // end of method Condition1::Caller1 + + .method private hidebysig static valuetype TailcallVerify.ValueType3Bytes + Callee1() cil managed noinlining + { + // Code size 27 (0x1b) + .maxstack 3 + .locals init ([0] valuetype TailcallVerify.ValueType3Bytes temp) + IL_0000: ldloca.s temp + IL_0002: initobj TailcallVerify.ValueType3Bytes + IL_0008: ldloca.s temp + IL_000a: ldc.i4.1 + IL_000b: volatile. + IL_000d: ldsfld int32 modreq([mscorlib]System.Runtime.CompilerServices.IsVolatile) TailcallVerify.Condition1::zero + IL_0012: div + IL_0013: conv.i2 + IL_0014: stfld int16 TailcallVerify.ValueType3Bytes::i2 + IL_0019: ldloc.0 + IL_001a: ret + } // end of method Condition1::Callee1 + + .method public hidebysig static int32 Test2() cil managed nooptimization + { + // Code size 153 (0x99) + .maxstack 3 + .locals init ([0] class [mscorlib]System.Exception e) + IL_0000: ldstr "Executing Condition1.Test2 - Caller: Arguments: No" + + "ne - ReturnType: void; Callee: Arguments: Int32 - ReturnType: 3 byte st" + + "ruct" + IL_0005: call void [System.Console]System.Console::WriteLine(string) + IL_000a: ldc.i4.s 100 + IL_000c: stsfld int32 TailcallVerify.Condition1::Result + .try + { + IL_0011: call void TailcallVerify.Condition1::Caller2() + IL_0016: leave.s IL_006f + + } // end .try + catch [mscorlib]System.Exception + { + IL_0018: stloc.0 + IL_0019: ldloc.0 + IL_001a: isinst [mscorlib]System.DivideByZeroException + IL_001f: brtrue.s IL_002a + + IL_0021: ldc.i4.s 101 + IL_0023: stsfld int32 TailcallVerify.Condition1::Result + IL_0028: rethrow + IL_002a: ldloc.0 + IL_002b: callvirt instance string [mscorlib]System.Exception::get_StackTrace() + IL_0030: ldstr "Caller" + IL_0035: callvirt instance int32 [mscorlib]System.String::IndexOf(string) + IL_003a: ldc.i4.m1 + IL_003b: beq.s IL_006d + + IL_003d: ldstr "FAILED: Found the word 'Caller' in the stacktrace." + IL_0042: call void [System.Console]System.Console::WriteLine(string) + IL_0047: ldstr "------------------------------------------------" + IL_004c: call void [System.Console]System.Console::WriteLine(string) + IL_0051: call void [System.Console]System.Console::WriteLine() + IL_0056: ldloc.0 + IL_0057: callvirt instance string [mscorlib]System.Exception::get_StackTrace() + IL_005c: call void [System.Console]System.Console::WriteLine(string) + IL_0061: call void [System.Console]System.Console::WriteLine() + IL_0066: ldc.i4.s 101 + IL_0068: stsfld int32 TailcallVerify.Condition1::Result + IL_006d: leave.s IL_006f + + } // end handler + IL_006f: ldstr "Execution finished - Test " + IL_0074: ldsfld int32 TailcallVerify.Condition1::Result + IL_0079: ldc.i4.s 100 + IL_007b: beq.s IL_0084 + + IL_007d: ldstr "FAILED" + IL_0082: br.s IL_0089 + + IL_0084: ldstr "PASSED" + IL_0089: call string [mscorlib]System.String::Concat(string, + string) + IL_008e: call void [System.Console]System.Console::WriteLine(string) + IL_0093: ldsfld int32 TailcallVerify.Condition1::Result + IL_0098: ret + } // end of method Condition1::Test2 + + .method private hidebysig static void Caller2() cil managed + { + // Code size 54 (0x36) + .maxstack 8 + IL_0000: ldc.i4.0 + IL_0001: newobj instance void [mscorlib]System.Diagnostics.StackFrame::.ctor(bool) + IL_0006: callvirt instance class [mscorlib]System.Reflection.MethodBase [mscorlib]System.Diagnostics.StackFrame::GetMethod() + IL_000b: callvirt instance string [mscorlib]System.Reflection.MemberInfo::get_Name() + IL_0010: ldstr "Caller" + IL_0015: callvirt instance int32 [mscorlib]System.String::IndexOf(string) + IL_001a: ldc.i4.m1 + IL_001b: bne.un.s IL_002e + + IL_001d: ldstr "Failed, Method was inlined..." + IL_0022: call void [System.Console]System.Console::WriteLine(string) + IL_0027: ldc.i4.s 101 + IL_0029: stsfld int32 TailcallVerify.Condition1::Result + IL_002e: ldc.i4.0 + IL_002f: tail. call valuetype TailcallVerify.ValueType3Bytes TailcallVerify.Condition1::Callee2(int32) + IL_0034: pop + IL_0035: ret + } // end of method Condition1::Caller2 + + .method private hidebysig static valuetype TailcallVerify.ValueType3Bytes + Callee2(int32 i) cil managed noinlining + { + // Code size 27 (0x1b) + .maxstack 3 + .locals init ([0] valuetype TailcallVerify.ValueType3Bytes temp) + IL_0000: ldloca.s temp + IL_0002: initobj TailcallVerify.ValueType3Bytes + IL_0008: ldloca.s temp + IL_000a: ldarg.0 + IL_000b: volatile. + IL_000d: ldsfld int32 modreq([mscorlib]System.Runtime.CompilerServices.IsVolatile) TailcallVerify.Condition1::zero + IL_0012: div + IL_0013: conv.i2 + IL_0014: stfld int16 TailcallVerify.ValueType3Bytes::i2 + IL_0019: ldloc.0 + IL_001a: ret + } // end of method Condition1::Callee2 + + .method public hidebysig static int32 Test3() cil managed nooptimization + { + // Code size 153 (0x99) + .maxstack 3 + .locals init ([0] class [mscorlib]System.Exception e) + IL_0000: ldstr "Executing Condition1.Test3 - Caller: Arguments: No" + + "ne - ReturnType: void; Callee: Arguments: 8 x int - ReturnType: 3 byte " + + "struct" + IL_0005: call void [System.Console]System.Console::WriteLine(string) + IL_000a: ldc.i4.s 100 + IL_000c: stsfld int32 TailcallVerify.Condition1::Result + .try + { + IL_0011: call void TailcallVerify.Condition1::Caller3() + IL_0016: leave.s IL_006f + + } // end .try + catch [mscorlib]System.Exception + { + IL_0018: stloc.0 + IL_0019: ldloc.0 + IL_001a: isinst [mscorlib]System.DivideByZeroException + IL_001f: brtrue.s IL_002a + + IL_0021: ldc.i4.s 101 + IL_0023: stsfld int32 TailcallVerify.Condition1::Result + IL_0028: rethrow + IL_002a: ldloc.0 + IL_002b: callvirt instance string [mscorlib]System.Exception::get_StackTrace() + IL_0030: ldstr "Caller" + IL_0035: callvirt instance int32 [mscorlib]System.String::IndexOf(string) + IL_003a: ldc.i4.m1 + IL_003b: beq.s IL_006d + + IL_003d: ldstr "FAILED: Found the word 'Caller' in the stacktrace." + IL_0042: call void [System.Console]System.Console::WriteLine(string) + IL_0047: ldstr "------------------------------------------------" + IL_004c: call void [System.Console]System.Console::WriteLine(string) + IL_0051: call void [System.Console]System.Console::WriteLine() + IL_0056: ldloc.0 + IL_0057: callvirt instance string [mscorlib]System.Exception::get_StackTrace() + IL_005c: call void [System.Console]System.Console::WriteLine(string) + IL_0061: call void [System.Console]System.Console::WriteLine() + IL_0066: ldc.i4.s 101 + IL_0068: stsfld int32 TailcallVerify.Condition1::Result + IL_006d: leave.s IL_006f + + } // end handler + IL_006f: ldstr "Execution finished - Test " + IL_0074: ldsfld int32 TailcallVerify.Condition1::Result + IL_0079: ldc.i4.s 100 + IL_007b: beq.s IL_0084 + + IL_007d: ldstr "FAILED" + IL_0082: br.s IL_0089 + + IL_0084: ldstr "PASSED" + IL_0089: call string [mscorlib]System.String::Concat(string, + string) + IL_008e: call void [System.Console]System.Console::WriteLine(string) + IL_0093: ldsfld int32 TailcallVerify.Condition1::Result + IL_0098: ret + } // end of method Condition1::Test3 + + .method private hidebysig static void Caller3() cil managed + { + // Code size 93 (0x5d) + .maxstack 8 + IL_0000: ldc.i4.0 + IL_0001: newobj instance void [mscorlib]System.Diagnostics.StackFrame::.ctor(bool) + IL_0006: callvirt instance class [mscorlib]System.Reflection.MethodBase [mscorlib]System.Diagnostics.StackFrame::GetMethod() + IL_000b: callvirt instance string [mscorlib]System.Reflection.MemberInfo::get_Name() + IL_0010: ldstr "Caller" + IL_0015: callvirt instance int32 [mscorlib]System.String::IndexOf(string) + IL_001a: ldc.i4.m1 + IL_001b: bne.un.s IL_002e + + IL_001d: ldstr "Failed, Method was inlined..." + IL_0022: call void [System.Console]System.Console::WriteLine(string) + IL_0027: ldc.i4.s 101 + IL_0029: stsfld int32 TailcallVerify.Condition1::Result + IL_002e: ldc.i4 0x80000000 + IL_0033: ldc.i4 0x7fffffff + IL_0038: ldc.i4 0x80000000 + IL_003d: ldc.i4 0x7fffffff + IL_0042: ldc.i4 0x80000000 + IL_0047: ldc.i4 0x7fffffff + IL_004c: ldc.i4 0x80000000 + IL_0051: ldc.i4 0x7fffffff + IL_0056: tail. call valuetype TailcallVerify.ValueType3Bytes TailcallVerify.Condition1::Callee3(int32, + int32, + int32, + int32, + int32, + int32, + int32, + int32) + IL_005b: pop + IL_005c: ret + } // end of method Condition1::Caller3 + + .method private hidebysig static valuetype TailcallVerify.ValueType3Bytes + Callee3(int32 i1, + int32 i2, + int32 i3, + int32 i4, + int32 i5, + int32 i6, + int32 i7, + int32 i8) cil managed noinlining + { + // Code size 105 (0x69) + .maxstack 2 + .locals init ([0] valuetype TailcallVerify.ValueType3Bytes temp) + IL_0000: ldloca.s temp + IL_0002: initobj TailcallVerify.ValueType3Bytes + IL_0008: ldarg.0 + IL_0009: ldc.i4 0x80000000 + IL_000e: bne.un.s IL_004c + + IL_0010: ldarg.1 + IL_0011: ldc.i4 0x7fffffff + IL_0016: bne.un.s IL_004c + + IL_0018: ldarg.2 + IL_0019: ldc.i4 0x80000000 + IL_001e: bne.un.s IL_004c + + IL_0020: ldarg.3 + IL_0021: ldc.i4 0x7fffffff + IL_0026: bne.un.s IL_004c + + IL_0028: ldarg.s i5 + IL_002a: ldc.i4 0x80000000 + IL_002f: bne.un.s IL_004c + + IL_0031: ldarg.s i6 + IL_0033: ldc.i4 0x7fffffff + IL_0038: bne.un.s IL_004c + + IL_003a: ldarg.s i7 + IL_003c: ldc.i4 0x80000000 + IL_0041: bne.un.s IL_004c + + IL_0043: ldarg.s i8 + IL_0045: ldc.i4 0x7fffffff + IL_004a: beq.s IL_005d + + IL_004c: ldstr "FAILED: Passed in arguments are invalid." + IL_0051: call void [System.Console]System.Console::WriteLine(string) + IL_0056: ldc.i4.s 101 + IL_0058: stsfld int32 TailcallVerify.Condition1::Result + IL_005d: ldc.i4.1 + IL_005e: volatile. + IL_0060: ldsfld int32 modreq([mscorlib]System.Runtime.CompilerServices.IsVolatile) TailcallVerify.Condition1::zero + IL_0065: div + IL_0066: pop + IL_0067: ldloc.0 + IL_0068: ret + } // end of method Condition1::Callee3 + + .method public hidebysig static int32 Test4() cil managed nooptimization + { + // Code size 153 (0x99) + .maxstack 3 + .locals init ([0] class [mscorlib]System.Exception e) + IL_0000: ldstr "Executing Condition1.Test4 - Caller: Arguments: No" + + "ne - ReturnType: void; Callee: Arguments: i32,i64,mb3,i16,u8,f64,f32,mb" + + "5 - ReturnType: 3 byte struct" + IL_0005: call void [System.Console]System.Console::WriteLine(string) + IL_000a: ldc.i4.s 100 + IL_000c: stsfld int32 TailcallVerify.Condition1::Result + .try + { + IL_0011: call void TailcallVerify.Condition1::Caller4() + IL_0016: leave.s IL_006f + + } // end .try + catch [mscorlib]System.Exception + { + IL_0018: stloc.0 + IL_0019: ldloc.0 + IL_001a: isinst [mscorlib]System.DivideByZeroException + IL_001f: brtrue.s IL_002a + + IL_0021: ldc.i4.s 101 + IL_0023: stsfld int32 TailcallVerify.Condition1::Result + IL_0028: rethrow + IL_002a: ldloc.0 + IL_002b: callvirt instance string [mscorlib]System.Exception::get_StackTrace() + IL_0030: ldstr "Caller" + IL_0035: callvirt instance int32 [mscorlib]System.String::IndexOf(string) + IL_003a: ldc.i4.m1 + IL_003b: beq.s IL_006d + + IL_003d: ldstr "FAILED: Found the word 'Caller' in the stacktrace." + IL_0042: call void [System.Console]System.Console::WriteLine(string) + IL_0047: ldstr "------------------------------------------------" + IL_004c: call void [System.Console]System.Console::WriteLine(string) + IL_0051: call void [System.Console]System.Console::WriteLine() + IL_0056: ldloc.0 + IL_0057: callvirt instance string [mscorlib]System.Exception::get_StackTrace() + IL_005c: call void [System.Console]System.Console::WriteLine(string) + IL_0061: call void [System.Console]System.Console::WriteLine() + IL_0066: ldc.i4.s 101 + IL_0068: stsfld int32 TailcallVerify.Condition1::Result + IL_006d: leave.s IL_006f + + } // end handler + IL_006f: ldstr "Execution finished - Test " + IL_0074: ldsfld int32 TailcallVerify.Condition1::Result + IL_0079: ldc.i4.s 100 + IL_007b: beq.s IL_0084 + + IL_007d: ldstr "FAILED" + IL_0082: br.s IL_0089 + + IL_0084: ldstr "PASSED" + IL_0089: call string [mscorlib]System.String::Concat(string, + string) + IL_008e: call void [System.Console]System.Console::WriteLine(string) + IL_0093: ldsfld int32 TailcallVerify.Condition1::Result + IL_0098: ret + } // end of method Condition1::Test4 + + .method private hidebysig static void Caller4() cil managed + { + // Code size 175 (0xaf) + .maxstack 8 + .locals init ([0] valuetype TailcallVerify.ValueType3Bytes v3, + [1] valuetype TailcallVerify.ValueType5Bytes v5, + [2] valuetype TailcallVerify.ValueType3Bytes '<>g__initLocal0', + [3] valuetype TailcallVerify.ValueType5Bytes '<>g__initLocal1', + [4] valuetype TailcallVerify.ValueType3Bytes CS$0$0000, + [5] valuetype TailcallVerify.ValueType5Bytes CS$0$0001) + IL_0000: ldc.i4.0 + IL_0001: newobj instance void [mscorlib]System.Diagnostics.StackFrame::.ctor(bool) + IL_0006: callvirt instance class [mscorlib]System.Reflection.MethodBase [mscorlib]System.Diagnostics.StackFrame::GetMethod() + IL_000b: callvirt instance string [mscorlib]System.Reflection.MemberInfo::get_Name() + IL_0010: ldstr "Caller" + IL_0015: callvirt instance int32 [mscorlib]System.String::IndexOf(string) + IL_001a: ldc.i4.m1 + IL_001b: bne.un.s IL_002e + + IL_001d: ldstr "Failed, Method was inlined..." + IL_0022: call void [System.Console]System.Console::WriteLine(string) + IL_0027: ldc.i4.s 101 + IL_0029: stsfld int32 TailcallVerify.Condition1::Result + IL_002e: ldloca.s CS$0$0000 + IL_0030: initobj TailcallVerify.ValueType3Bytes + IL_0036: ldloc.s CS$0$0000 + IL_0038: stloc.2 + IL_0039: ldloca.s '<>g__initLocal0' + IL_003b: ldc.i4.0 + IL_003c: stfld uint8 TailcallVerify.ValueType3Bytes::i1 + IL_0041: ldloca.s '<>g__initLocal0' + IL_0043: ldc.i4 0x7fff + IL_0048: stfld int16 TailcallVerify.ValueType3Bytes::i2 + IL_004d: ldloc.2 + IL_004e: stloc.0 + IL_004f: ldloca.s CS$0$0001 + IL_0051: initobj TailcallVerify.ValueType5Bytes + IL_0057: ldloc.s CS$0$0001 + IL_0059: stloc.3 + IL_005a: ldloca.s '<>g__initLocal1' + IL_005c: ldc.i4 0xff + IL_0061: stfld uint8 TailcallVerify.ValueType5Bytes::i1 + IL_0066: ldloca.s '<>g__initLocal1' + IL_0068: ldc.i4 0xffff8000 + IL_006d: stfld int16 TailcallVerify.ValueType5Bytes::i2 + IL_0072: ldloca.s '<>g__initLocal1' + IL_0074: ldc.i4 0x7fff + IL_0079: stfld int16 TailcallVerify.ValueType5Bytes::i3 + IL_007e: ldloc.3 + IL_007f: stloc.1 + IL_0080: ldc.i4 0x80000000 + IL_0085: ldc.i8 0x7fffffffffffffff + IL_008e: ldloc.0 + IL_008f: ldc.i4 0xffff8000 + IL_0094: ldc.i4 0xff + IL_0099: ldc.r8 -1.7976931348623157e+308 + IL_00a2: ldc.r4 3.4028235e+038 + IL_00a7: ldloc.1 + IL_00a8: tail. call valuetype TailcallVerify.ValueType3Bytes TailcallVerify.Condition1::Callee4(int32, + int64, + valuetype TailcallVerify.ValueType3Bytes, + int16, + uint8, + float64, + float32, + valuetype TailcallVerify.ValueType5Bytes) + IL_00ad: pop + IL_00ae: ret + } // end of method Condition1::Caller4 + + .method private hidebysig static valuetype TailcallVerify.ValueType3Bytes + Callee4(int32 i1, + int64 i2, + valuetype TailcallVerify.ValueType3Bytes v3, + int16 i4, + uint8 b5, + float64 d6, + float32 f7, + valuetype TailcallVerify.ValueType5Bytes v8) cil managed noinlining + { + // Code size 317 (0x13d) + .maxstack 4 + .locals init ([0] valuetype TailcallVerify.ValueType3Bytes temp, + [1] object[] CS$0$0000) + IL_0000: ldloca.s temp + IL_0002: initobj TailcallVerify.ValueType3Bytes + IL_0008: ldarg.0 + IL_0009: ldc.i4 0x80000000 + IL_000e: bne.un.s IL_0087 + + IL_0010: ldarg.1 + IL_0011: ldc.i8 0x7fffffffffffffff + IL_001a: bne.un.s IL_0087 + + IL_001c: ldarga.s v3 + IL_001e: ldfld uint8 TailcallVerify.ValueType3Bytes::i1 + IL_0023: brtrue.s IL_0087 + + IL_0025: ldarga.s v3 + IL_0027: ldfld int16 TailcallVerify.ValueType3Bytes::i2 + IL_002c: ldc.i4 0x7fff + IL_0031: bne.un.s IL_0087 + + IL_0033: ldarg.3 + IL_0034: ldc.i4 0xffff8000 + IL_0039: bne.un.s IL_0087 + + IL_003b: ldarg.s b5 + IL_003d: ldc.i4 0xff + IL_0042: bne.un.s IL_0087 + + IL_0044: ldarg.s d6 + IL_0046: ldc.r8 -1.7976931348623157e+308 + IL_004f: bne.un.s IL_0087 + + IL_0051: ldarg.s f7 + IL_0053: ldc.r4 3.4028235e+038 + IL_0058: bne.un.s IL_0087 + + IL_005a: ldarga.s v8 + IL_005c: ldfld uint8 TailcallVerify.ValueType5Bytes::i1 + IL_0061: ldc.i4 0xff + IL_0066: bne.un.s IL_0087 + + IL_0068: ldarga.s v8 + IL_006a: ldfld int16 TailcallVerify.ValueType5Bytes::i2 + IL_006f: ldc.i4 0xffff8000 + IL_0074: bne.un.s IL_0087 + + IL_0076: ldarga.s v8 + IL_0078: ldfld int16 TailcallVerify.ValueType5Bytes::i3 + IL_007d: ldc.i4 0x7fff + IL_0082: beq IL_0131 + + IL_0087: ldstr "FAILED: Passed in arguments are invalid." + IL_008c: call void [System.Console]System.Console::WriteLine(string) + IL_0091: ldstr "i1:{0} != Int32.MinValue || i2:{1} != Int64.MaxVal" + + "ue || v3.i1:{2} != byte.MinValue || v3.i2:{3} != short.MaxValue || i4:{" + + "4} != Int16.MinValue || b5:{5} != byte.MaxValue || d6:{6} != double.Min" + + "Value || f7:{7} != float.MaxValue || v8.i1:{8} != byte.MaxValue || v8.i" + + "2:{9} != short.MinValue || v8.i3:{10} != short.MaxValue" + IL_0096: ldc.i4.s 11 + IL_0098: newarr [mscorlib]System.Object + IL_009d: stloc.1 + IL_009e: ldloc.1 + IL_009f: ldc.i4.0 + IL_00a0: ldarg.0 + IL_00a1: box [mscorlib]System.Int32 + IL_00a6: stelem.ref + IL_00a7: ldloc.1 + IL_00a8: ldc.i4.1 + IL_00a9: ldarg.1 + IL_00aa: box [mscorlib]System.Int64 + IL_00af: stelem.ref + IL_00b0: ldloc.1 + IL_00b1: ldc.i4.2 + IL_00b2: ldarga.s v3 + IL_00b4: ldfld uint8 TailcallVerify.ValueType3Bytes::i1 + IL_00b9: box [mscorlib]System.Byte + IL_00be: stelem.ref + IL_00bf: ldloc.1 + IL_00c0: ldc.i4.3 + IL_00c1: ldarga.s v3 + IL_00c3: ldfld int16 TailcallVerify.ValueType3Bytes::i2 + IL_00c8: box [mscorlib]System.Int16 + IL_00cd: stelem.ref + IL_00ce: ldloc.1 + IL_00cf: ldc.i4.4 + IL_00d0: ldarg.3 + IL_00d1: box [mscorlib]System.Int16 + IL_00d6: stelem.ref + IL_00d7: ldloc.1 + IL_00d8: ldc.i4.5 + IL_00d9: ldarg.s b5 + IL_00db: box [mscorlib]System.Byte + IL_00e0: stelem.ref + IL_00e1: ldloc.1 + IL_00e2: ldc.i4.6 + IL_00e3: ldarg.s d6 + IL_00e5: box [mscorlib]System.Double + IL_00ea: stelem.ref + IL_00eb: ldloc.1 + IL_00ec: ldc.i4.7 + IL_00ed: ldarg.s f7 + IL_00ef: box [mscorlib]System.Single + IL_00f4: stelem.ref + IL_00f5: ldloc.1 + IL_00f6: ldc.i4.8 + IL_00f7: ldarga.s v8 + IL_00f9: ldfld uint8 TailcallVerify.ValueType5Bytes::i1 + IL_00fe: box [mscorlib]System.Byte + IL_0103: stelem.ref + IL_0104: ldloc.1 + IL_0105: ldc.i4.s 9 + IL_0107: ldarga.s v8 + IL_0109: ldfld int16 TailcallVerify.ValueType5Bytes::i2 + IL_010e: box [mscorlib]System.Int16 + IL_0113: stelem.ref + IL_0114: ldloc.1 + IL_0115: ldc.i4.s 10 + IL_0117: ldarga.s v8 + IL_0119: ldfld int16 TailcallVerify.ValueType5Bytes::i3 + IL_011e: box [mscorlib]System.Int16 + IL_0123: stelem.ref + IL_0124: ldloc.1 + IL_0125: call void [System.Console]System.Console::WriteLine(string, + object[]) + IL_012a: ldc.i4.s 101 + IL_012c: stsfld int32 TailcallVerify.Condition1::Result + IL_0131: ldc.i4.1 + IL_0132: volatile. + IL_0134: ldsfld int32 modreq([mscorlib]System.Runtime.CompilerServices.IsVolatile) TailcallVerify.Condition1::zero + IL_0139: div + IL_013a: pop + IL_013b: ldloc.0 + IL_013c: ret + } // end of method Condition1::Callee4 + + .method public hidebysig specialname rtspecialname + instance void .ctor() cil managed + { + // Code size 7 (0x7) + .maxstack 8 + IL_0000: ldarg.0 + IL_0001: call instance void [mscorlib]System.Object::.ctor() + IL_0006: ret + } // end of method Condition1::.ctor + + .method private hidebysig specialname rtspecialname static + void .cctor() cil managed + { + // Code size 16 (0x10) + .maxstack 8 + IL_0000: ldc.i4.s 100 + IL_0002: stsfld int32 TailcallVerify.Condition1::Result + IL_0007: ldc.i4.0 + IL_0008: volatile. + IL_000a: stsfld int32 modreq([mscorlib]System.Runtime.CompilerServices.IsVolatile) TailcallVerify.Condition1::zero + IL_000f: ret + } // end of method Condition1::.cctor + +} // end of class TailcallVerify.Condition1 + +.class private sequential ansi sealed beforefieldinit TailcallVerify.ValueType3Bytes + extends [mscorlib]System.ValueType +{ + .pack 1 + .size 3 + .field public uint8 i1 + .field public int16 i2 +} // end of class TailcallVerify.ValueType3Bytes + +.class private sequential ansi sealed beforefieldinit TailcallVerify.ValueType5Bytes + extends [mscorlib]System.ValueType +{ + .pack 1 + .size 5 + .field public uint8 i1 + .field public int16 i2 + .field public int16 i3 +} // end of class TailcallVerify.ValueType5Bytes + +.class private sequential ansi sealed beforefieldinit TailcallVerify.ValueTypeSingleInt64 + extends [mscorlib]System.ValueType +{ + .pack 1 + .size 8 + .field public int64 i1 +} // end of class TailcallVerify.ValueTypeSingleInt64 + +.class private auto ansi beforefieldinit TailcallVerify.Win32Interop + extends [mscorlib]System.Object +{ + .method public hidebysig static pinvokeimpl("kernel32" as "Sleep" winapi) + void Callee(int32 duration) cil managed preservesig + { + } + .method public hidebysig static pinvokeimpl("kernel32" lasterr winapi) + void Sleep(int32 duration) cil managed preservesig + { + } + .method public hidebysig specialname rtspecialname + instance void .ctor() cil managed + { + // Code size 7 (0x7) + .maxstack 8 + IL_0000: ldarg.0 + IL_0001: call instance void [mscorlib]System.Object::.ctor() + IL_0006: ret + } // end of method Win32Interop::.ctor + +} // end of class TailcallVerify.Win32Interop + +.class private auto ansi beforefieldinit TailcallVerify.Condition19 + extends [mscorlib]System.Object +{ + .field private static int32 modreq([mscorlib]System.Runtime.CompilerServices.IsVolatile) zero + .field private static int32 Result + .method public hidebysig static int32 Test1() cil managed nooptimization + { + // Code size 153 (0x99) + .maxstack 3 + .locals init ([0] class [mscorlib]System.Exception e) + IL_0000: ldstr "Executing Condition19.Test1 - Caller: Arguments: N" + + "one - ReturnType: void; Callee (doing a pinvoke call): Arguments: None " + + "- ReturnType: void" + IL_0005: call void [System.Console]System.Console::WriteLine(string) + IL_000a: ldc.i4.s 100 + IL_000c: stsfld int32 TailcallVerify.Condition19::Result + .try + { + IL_0011: call void TailcallVerify.Condition19::Caller1() + IL_0016: leave.s IL_006f + + } // end .try + catch [mscorlib]System.Exception + { + IL_0018: stloc.0 + IL_0019: ldloc.0 + IL_001a: isinst [mscorlib]System.DivideByZeroException + IL_001f: brtrue.s IL_002a + + IL_0021: ldc.i4.s 101 + IL_0023: stsfld int32 TailcallVerify.Condition19::Result + IL_0028: rethrow + IL_002a: ldloc.0 + IL_002b: callvirt instance string [mscorlib]System.Exception::get_StackTrace() + IL_0030: ldstr "Caller" + IL_0035: callvirt instance int32 [mscorlib]System.String::IndexOf(string) + IL_003a: ldc.i4.m1 + IL_003b: beq.s IL_006d + + IL_003d: ldstr "FAILED: Found the word 'Caller' in the stacktrace." + IL_0042: call void [System.Console]System.Console::WriteLine(string) + IL_0047: ldstr "------------------------------------------------" + IL_004c: call void [System.Console]System.Console::WriteLine(string) + IL_0051: call void [System.Console]System.Console::WriteLine() + IL_0056: ldloc.0 + IL_0057: callvirt instance string [mscorlib]System.Exception::get_StackTrace() + IL_005c: call void [System.Console]System.Console::WriteLine(string) + IL_0061: call void [System.Console]System.Console::WriteLine() + IL_0066: ldc.i4.s 101 + IL_0068: stsfld int32 TailcallVerify.Condition19::Result + IL_006d: leave.s IL_006f + + } // end handler + IL_006f: ldstr "Execution finished - Test " + IL_0074: ldsfld int32 TailcallVerify.Condition19::Result + IL_0079: ldc.i4.s 100 + IL_007b: beq.s IL_0084 + + IL_007d: ldstr "FAILED" + IL_0082: br.s IL_0089 + + IL_0084: ldstr "PASSED" + IL_0089: call string [mscorlib]System.String::Concat(string, + string) + IL_008e: call void [System.Console]System.Console::WriteLine(string) + IL_0093: ldsfld int32 TailcallVerify.Condition19::Result + IL_0098: ret + } // end of method Condition19::Test1 + + .method private hidebysig static void Caller1() cil managed + { + // Code size 53 (0x35) + .maxstack 8 + IL_0000: ldc.i4.0 + IL_0001: newobj instance void [mscorlib]System.Diagnostics.StackFrame::.ctor(bool) + IL_0006: callvirt instance class [mscorlib]System.Reflection.MethodBase [mscorlib]System.Diagnostics.StackFrame::GetMethod() + IL_000b: callvirt instance string [mscorlib]System.Reflection.MemberInfo::get_Name() + IL_0010: ldstr "Caller" + IL_0015: callvirt instance int32 [mscorlib]System.String::IndexOf(string) + IL_001a: ldc.i4.m1 + IL_001b: bne.un.s IL_002e + + IL_001d: ldstr "Failed, Method was inlined..." + IL_0022: call void [System.Console]System.Console::WriteLine(string) + IL_0027: ldc.i4.s 101 + IL_0029: stsfld int32 TailcallVerify.Condition19::Result + IL_002e: ldc.i4.1 + IL_002f: tail. call void TailcallVerify.Condition19::Callee1(int32) + IL_0034: ret + } // end of method Condition19::Caller1 + + .method private hidebysig static void Callee1(int32 i) cil managed noinlining + { + // Code size 43 (0x2b) + .maxstack 8 + IL_0000: ldc.i4.0 + IL_0001: call void TailcallVerify.Win32Interop::Sleep(int32) + IL_0006: ldstr "result: " + IL_000b: call int32 [mscorlib]System.Runtime.InteropServices.Marshal::GetLastWin32Error() + IL_0010: box [mscorlib]System.Int32 + IL_0015: call string [mscorlib]System.String::Concat(object, + object) + IL_001a: call void [System.Console]System.Console::WriteLine(string) + IL_001f: ldc.i4.1 + IL_0020: volatile. + IL_0022: ldsfld int32 modreq([mscorlib]System.Runtime.CompilerServices.IsVolatile) TailcallVerify.Condition19::zero + IL_0027: div + IL_0028: starg.s i + IL_002a: ret + } // end of method Condition19::Callee1 + + .method public hidebysig static int32 Test2() cil managed nooptimization + { + // Code size 153 (0x99) + .maxstack 3 + .locals init ([0] class [mscorlib]System.Exception e) + IL_0000: ldstr "Executing Condition19.Test2 - Caller: Arguments: N" + + "one - ReturnType: void; Callee (IS A pinvoke call): Arguments: None - R" + + "eturnType: void" + IL_0005: call void [System.Console]System.Console::WriteLine(string) + IL_000a: ldc.i4.s 100 + IL_000c: stsfld int32 TailcallVerify.Condition19::Result + .try + { + IL_0011: call void TailcallVerify.Condition19::Caller2() + IL_0016: leave.s IL_006f + + } // end .try + catch [mscorlib]System.Exception + { + IL_0018: stloc.0 + IL_0019: ldloc.0 + IL_001a: isinst [mscorlib]System.DivideByZeroException + IL_001f: brtrue.s IL_002a + + IL_0021: ldc.i4.s 101 + IL_0023: stsfld int32 TailcallVerify.Condition19::Result + IL_0028: rethrow + IL_002a: ldloc.0 + IL_002b: callvirt instance string [mscorlib]System.Exception::get_StackTrace() + IL_0030: ldstr "Caller" + IL_0035: callvirt instance int32 [mscorlib]System.String::IndexOf(string) + IL_003a: ldc.i4.m1 + IL_003b: beq.s IL_006d + + IL_003d: ldstr "FAILED: Found the word 'Caller' in the stacktrace." + IL_0042: call void [System.Console]System.Console::WriteLine(string) + IL_0047: ldstr "------------------------------------------------" + IL_004c: call void [System.Console]System.Console::WriteLine(string) + IL_0051: call void [System.Console]System.Console::WriteLine() + IL_0056: ldloc.0 + IL_0057: callvirt instance string [mscorlib]System.Exception::get_StackTrace() + IL_005c: call void [System.Console]System.Console::WriteLine(string) + IL_0061: call void [System.Console]System.Console::WriteLine() + IL_0066: ldc.i4.s 101 + IL_0068: stsfld int32 TailcallVerify.Condition19::Result + IL_006d: leave.s IL_006f + + } // end handler + IL_006f: ldstr "Execution finished - Test " + IL_0074: ldsfld int32 TailcallVerify.Condition19::Result + IL_0079: ldc.i4.s 100 + IL_007b: beq.s IL_0084 + + IL_007d: ldstr "FAILED" + IL_0082: br.s IL_0089 + + IL_0084: ldstr "PASSED" + IL_0089: call string [mscorlib]System.String::Concat(string, + string) + IL_008e: call void [System.Console]System.Console::WriteLine(string) + IL_0093: ldsfld int32 TailcallVerify.Condition19::Result + IL_0098: ret + } // end of method Condition19::Test2 + + .method private hidebysig static void Caller2() cil managed + { + // Code size 78 (0x4e) + .maxstack 2 + IL_0000: ldc.i4.0 + IL_0001: newobj instance void [mscorlib]System.Diagnostics.StackFrame::.ctor(bool) + IL_0006: callvirt instance class [mscorlib]System.Reflection.MethodBase [mscorlib]System.Diagnostics.StackFrame::GetMethod() + IL_000b: callvirt instance string [mscorlib]System.Reflection.MemberInfo::get_Name() + IL_0010: ldstr "Caller" + IL_0015: callvirt instance int32 [mscorlib]System.String::IndexOf(string) + IL_001a: ldc.i4.m1 + IL_001b: bne.un.s IL_002e + + IL_001d: ldstr "Failed, Method was inlined..." + IL_0022: call void [System.Console]System.Console::WriteLine(string) + IL_0027: ldc.i4.s 101 + IL_0029: stsfld int32 TailcallVerify.Condition19::Result + IL_002e: ldstr "result: " + IL_0033: call int32 [mscorlib]System.Runtime.InteropServices.Marshal::GetLastWin32Error() + IL_0038: box [mscorlib]System.Int32 + IL_003d: call string [mscorlib]System.String::Concat(object, + object) + IL_0042: call void [System.Console]System.Console::WriteLine(string) + IL_0047: ldc.i4.0 + IL_0048: tail. call void TailcallVerify.Win32Interop::Callee(int32) + IL_004d: ret + } // end of method Condition19::Caller2 + + .method public hidebysig specialname rtspecialname + instance void .ctor() cil managed + { + // Code size 7 (0x7) + .maxstack 8 + IL_0000: ldarg.0 + IL_0001: call instance void [mscorlib]System.Object::.ctor() + IL_0006: ret + } // end of method Condition19::.ctor + + .method private hidebysig specialname rtspecialname static + void .cctor() cil managed + { + // Code size 16 (0x10) + .maxstack 8 + IL_0000: ldc.i4.0 + IL_0001: volatile. + IL_0003: stsfld int32 modreq([mscorlib]System.Runtime.CompilerServices.IsVolatile) TailcallVerify.Condition19::zero + IL_0008: ldc.i4.s 100 + IL_000a: stsfld int32 TailcallVerify.Condition19::Result + IL_000f: ret + } // end of method Condition19::.cctor + +} // end of class TailcallVerify.Condition19 + +.class private auto ansi '{D1242658-CA16-4D11-A740-6635F112F4B5}' + extends [mscorlib]System.Object +{ + .custom instance void [mscorlib]System.Runtime.CompilerServices.CompilerGeneratedAttribute::.ctor() = ( 01 00 00 00 ) + .class explicit ansi sealed nested private '__StaticArrayInitTypeSize=20' + extends [mscorlib]System.ValueType + { + .pack 1 + .size 20 + } // end of class '__StaticArrayInitTypeSize=20' + + .field static assembly valuetype '{D1242658-CA16-4D11-A740-6635F112F4B5}'/'__StaticArrayInitTypeSize=20' '$$method0x6000076-1' at I_00005C00 +} // end of class '{D1242658-CA16-4D11-A740-6635F112F4B5}' + + +// ============================================================= + +.data cil I_00005C00 = bytearray ( + 01 00 00 00 02 00 00 00 03 00 00 00 04 00 00 00 + 05 00 00 00) +// *********** DISASSEMBLY COMPLETE *********************** +// WARNING: Created Win32 resource file TailcallVerifyWithPrefix.res diff --git a/tests/src/JIT/opt/Tailcall/TailcallVerifyWithPrefix.ilproj b/tests/src/JIT/opt/Tailcall/TailcallVerifyWithPrefix.ilproj new file mode 100644 index 0000000..7f39229 --- /dev/null +++ b/tests/src/JIT/opt/Tailcall/TailcallVerifyWithPrefix.ilproj @@ -0,0 +1,51 @@ + + + + + Debug + AnyCPU + $(MSBuildProjectName) + 2.0 + {95DFC527-4DC1-495E-97D7-E94EE1F7140D} + Exe + Properties + 512 + {786C830F-07A1-408B-BD7F-6EE04809D6DB};{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC} + $(ProgramFiles)\Common Files\microsoft shared\VSTT\11.0\UITestExtensionPackages + ..\..\ + 7a9bfb7d + $(DefineConstants);STATIC + true + + + + + + + + + False + + + + Full + False + + + + + + + + + + $(JitPackagesConfigFileDirectory)empty\project.json + $(JitPackagesConfigFileDirectory)empty\project.lock.json + + + + + + + + \ No newline at end of file diff --git a/tests/src/JIT/opt/Tailcall/app.config b/tests/src/JIT/opt/Tailcall/app.config new file mode 100644 index 0000000..8077c95 --- /dev/null +++ b/tests/src/JIT/opt/Tailcall/app.config @@ -0,0 +1,27 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/tests/testsFailingOutsideWindows.txt b/tests/testsFailingOutsideWindows.txt index ef882c4..65a90dd 100644 --- a/tests/testsFailingOutsideWindows.txt +++ b/tests/testsFailingOutsideWindows.txt @@ -88,3 +88,4 @@ JIT/Regression/CLR-x86-JIT/V1-M10/b04914/b04914/b04914.sh JIT/Regression/CLR-x86-JIT/V1-M12-Beta2/b57367/b57367/b57367.sh JIT/Regression/CLR-x86-JIT/V2.0-Beta2/b399444/b399444a/b399444a.sh JIT/Regression/VS-ia64-JIT/V1.2-M02/b108129/b108129/b108129.sh +JIT/opt/Tailcall/TailcallVerifyWithPrefix/TailcallVerifyWithPrefix.sh \ No newline at end of file