Created
December 1, 2014 01:01
-
-
Save noblethrasher/af1b382fa6e0423bf8bd to your computer and use it in GitHub Desktop.
F# and IL
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
type Foo = | |
| Bar of int * string | |
| Baz of bool * string | |
| Biz of string * string | |
let f foo = | |
match foo with | |
| Bar (x, s) -> s | |
| Baz (b, s) -> s | |
| Biz (s, s') -> s | |
//IL | |
Dump: | |
IL_0000: nop | |
IL_0001: ldarg.0 | |
IL_0002: box 03 00 00 1B | |
IL_0007: call LINQPad.FSharpExtensions.Extensions.Dump | |
IL_000C: ret | |
CompareTo$cont@1: | |
IL_0000: nop | |
IL_0001: ldarg.0 | |
IL_0002: stloc.s 0C | |
IL_0004: ldloc.s 0C | |
IL_0006: isinst Query_izsety+Foo.Bar | |
IL_000B: brtrue.s IL_0022 | |
IL_000D: ldloc.s 0C | |
IL_000F: isinst Query_izsety+Foo.Baz | |
IL_0014: brtrue.s IL_007C | |
IL_0016: ldloc.s 0C | |
IL_0018: isinst Query_izsety+Foo.Biz | |
IL_001D: brtrue IL_00DC | |
IL_0022: ldarg.0 | |
IL_0023: castclass Query_izsety+Foo.Bar | |
IL_0028: stloc.0 | |
IL_0029: ldarg.1 | |
IL_002A: castclass Query_izsety+Foo.Bar | |
IL_002F: stloc.1 | |
IL_0030: call Microsoft.FSharp.Core.LanguagePrimitives.get_GenericComparer | |
IL_0035: stloc.3 | |
IL_0036: ldloc.0 | |
IL_0037: ldfld Query_izsety+Foo+Bar.item1 | |
IL_003C: stloc.s 04 | |
IL_003E: ldloc.1 | |
IL_003F: ldfld Query_izsety+Foo+Bar.item1 | |
IL_0044: stloc.s 05 | |
IL_0046: ldloc.s 04 | |
IL_0048: ldloc.s 05 | |
IL_004A: bge.s IL_0050 | |
IL_004C: ldc.i4.m1 | |
IL_004D: nop | |
IL_004E: br.s IL_0057 | |
IL_0050: ldloc.s 04 | |
IL_0052: ldloc.s 05 | |
IL_0054: cgt | |
IL_0056: nop | |
IL_0057: stloc.2 | |
IL_0058: ldloc.2 | |
IL_0059: ldc.i4.0 | |
IL_005A: bge.s IL_005E | |
IL_005C: ldloc.2 | |
IL_005D: ret | |
IL_005E: ldloc.2 | |
IL_005F: ldc.i4.0 | |
IL_0060: ble.s IL_0064 | |
IL_0062: ldloc.2 | |
IL_0063: ret | |
IL_0064: call Microsoft.FSharp.Core.LanguagePrimitives.get_GenericComparer | |
IL_0069: stloc.3 | |
IL_006A: ldloc.0 | |
IL_006B: ldfld Query_izsety+Foo+Bar.item2 | |
IL_0070: ldloc.1 | |
IL_0071: ldfld Query_izsety+Foo+Bar.item2 | |
IL_0076: call System.String.CompareOrdinal | |
IL_007B: ret | |
IL_007C: ldarg.0 | |
IL_007D: castclass Query_izsety+Foo.Baz | |
IL_0082: stloc.s 06 | |
IL_0084: ldarg.1 | |
IL_0085: castclass Query_izsety+Foo.Baz | |
IL_008A: stloc.s 07 | |
IL_008C: call Microsoft.FSharp.Core.LanguagePrimitives.get_GenericComparer | |
IL_0091: stloc.3 | |
IL_0092: ldloc.s 06 | |
IL_0094: ldfld Query_izsety+Foo+Baz.item1 | |
IL_0099: stloc.s 08 | |
IL_009B: ldloc.s 07 | |
IL_009D: ldfld Query_izsety+Foo+Baz.item1 | |
IL_00A2: stloc.s 09 | |
IL_00A4: ldloc.s 08 | |
IL_00A6: ldloc.s 09 | |
IL_00A8: bge.s IL_00AE | |
IL_00AA: ldc.i4.m1 | |
IL_00AB: nop | |
IL_00AC: br.s IL_00B5 | |
IL_00AE: ldloc.s 08 | |
IL_00B0: ldloc.s 09 | |
IL_00B2: cgt | |
IL_00B4: nop | |
IL_00B5: stloc.2 | |
IL_00B6: ldloc.2 | |
IL_00B7: ldc.i4.0 | |
IL_00B8: bge.s IL_00BC | |
IL_00BA: ldloc.2 | |
IL_00BB: ret | |
IL_00BC: ldloc.2 | |
IL_00BD: ldc.i4.0 | |
IL_00BE: ble.s IL_00C2 | |
IL_00C0: ldloc.2 | |
IL_00C1: ret | |
IL_00C2: call Microsoft.FSharp.Core.LanguagePrimitives.get_GenericComparer | |
IL_00C7: stloc.3 | |
IL_00C8: ldloc.s 06 | |
IL_00CA: ldfld Query_izsety+Foo+Baz.item2 | |
IL_00CF: ldloc.s 07 | |
IL_00D1: ldfld Query_izsety+Foo+Baz.item2 | |
IL_00D6: call System.String.CompareOrdinal | |
IL_00DB: ret | |
IL_00DC: ldarg.0 | |
IL_00DD: castclass Query_izsety+Foo.Biz | |
IL_00E2: stloc.s 0A | |
IL_00E4: ldarg.1 | |
IL_00E5: castclass Query_izsety+Foo.Biz | |
IL_00EA: stloc.s 0B | |
IL_00EC: call Microsoft.FSharp.Core.LanguagePrimitives.get_GenericComparer | |
IL_00F1: stloc.3 | |
IL_00F2: ldloc.s 0A | |
IL_00F4: ldfld Query_izsety+Foo+Biz.item1 | |
IL_00F9: ldloc.s 0B | |
IL_00FB: ldfld Query_izsety+Foo+Biz.item1 | |
IL_0100: call System.String.CompareOrdinal | |
IL_0105: stloc.2 | |
IL_0106: ldloc.2 | |
IL_0107: ldc.i4.0 | |
IL_0108: bge.s IL_010C | |
IL_010A: ldloc.2 | |
IL_010B: ret | |
IL_010C: ldloc.2 | |
IL_010D: ldc.i4.0 | |
IL_010E: ble.s IL_0112 | |
IL_0110: ldloc.2 | |
IL_0111: ret | |
IL_0112: call Microsoft.FSharp.Core.LanguagePrimitives.get_GenericComparer | |
IL_0117: stloc.3 | |
IL_0118: ldloc.s 0A | |
IL_011A: ldfld Query_izsety+Foo+Biz.item2 | |
IL_011F: ldloc.s 0B | |
IL_0121: ldfld Query_izsety+Foo+Biz.item2 | |
IL_0126: call System.String.CompareOrdinal | |
IL_012B: ret | |
CompareTo$cont@1-1: | |
IL_0000: nop | |
IL_0001: ldarg.0 | |
IL_0002: stloc.s 0B | |
IL_0004: ldloc.s 0B | |
IL_0006: isinst Query_izsety+Foo.Bar | |
IL_000B: brtrue.s IL_0022 | |
IL_000D: ldloc.s 0B | |
IL_000F: isinst Query_izsety+Foo.Baz | |
IL_0014: brtrue.s IL_006D | |
IL_0016: ldloc.s 0B | |
IL_0018: isinst Query_izsety+Foo.Biz | |
IL_001D: brtrue IL_00C1 | |
IL_0022: ldarg.0 | |
IL_0023: castclass Query_izsety+Foo.Bar | |
IL_0028: stloc.0 | |
IL_0029: ldarg.1 | |
IL_002A: castclass Query_izsety+Foo.Bar | |
IL_002F: stloc.1 | |
IL_0030: ldloc.0 | |
IL_0031: ldfld Query_izsety+Foo+Bar.item1 | |
IL_0036: stloc.3 | |
IL_0037: ldloc.1 | |
IL_0038: ldfld Query_izsety+Foo+Bar.item1 | |
IL_003D: stloc.s 04 | |
IL_003F: ldloc.3 | |
IL_0040: ldloc.s 04 | |
IL_0042: bge.s IL_0048 | |
IL_0044: ldc.i4.m1 | |
IL_0045: nop | |
IL_0046: br.s IL_004E | |
IL_0048: ldloc.3 | |
IL_0049: ldloc.s 04 | |
IL_004B: cgt | |
IL_004D: nop | |
IL_004E: stloc.2 | |
IL_004F: ldloc.2 | |
IL_0050: ldc.i4.0 | |
IL_0051: bge.s IL_0055 | |
IL_0053: ldloc.2 | |
IL_0054: ret | |
IL_0055: ldloc.2 | |
IL_0056: ldc.i4.0 | |
IL_0057: ble.s IL_005B | |
IL_0059: ldloc.2 | |
IL_005A: ret | |
IL_005B: ldloc.0 | |
IL_005C: ldfld Query_izsety+Foo+Bar.item2 | |
IL_0061: ldloc.1 | |
IL_0062: ldfld Query_izsety+Foo+Bar.item2 | |
IL_0067: call System.String.CompareOrdinal | |
IL_006C: ret | |
IL_006D: ldarg.0 | |
IL_006E: castclass Query_izsety+Foo.Baz | |
IL_0073: stloc.s 05 | |
IL_0075: ldarg.1 | |
IL_0076: castclass Query_izsety+Foo.Baz | |
IL_007B: stloc.s 06 | |
IL_007D: ldloc.s 05 | |
IL_007F: ldfld Query_izsety+Foo+Baz.item1 | |
IL_0084: stloc.s 07 | |
IL_0086: ldloc.s 06 | |
IL_0088: ldfld Query_izsety+Foo+Baz.item1 | |
IL_008D: stloc.s 08 | |
IL_008F: ldloc.s 07 | |
IL_0091: ldloc.s 08 | |
IL_0093: bge.s IL_0099 | |
IL_0095: ldc.i4.m1 | |
IL_0096: nop | |
IL_0097: br.s IL_00A0 | |
IL_0099: ldloc.s 07 | |
IL_009B: ldloc.s 08 | |
IL_009D: cgt | |
IL_009F: nop | |
IL_00A0: stloc.2 | |
IL_00A1: ldloc.2 | |
IL_00A2: ldc.i4.0 | |
IL_00A3: bge.s IL_00A7 | |
IL_00A5: ldloc.2 | |
IL_00A6: ret | |
IL_00A7: ldloc.2 | |
IL_00A8: ldc.i4.0 | |
IL_00A9: ble.s IL_00AD | |
IL_00AB: ldloc.2 | |
IL_00AC: ret | |
IL_00AD: ldloc.s 05 | |
IL_00AF: ldfld Query_izsety+Foo+Baz.item2 | |
IL_00B4: ldloc.s 06 | |
IL_00B6: ldfld Query_izsety+Foo+Baz.item2 | |
IL_00BB: call System.String.CompareOrdinal | |
IL_00C0: ret | |
IL_00C1: ldarg.0 | |
IL_00C2: castclass Query_izsety+Foo.Biz | |
IL_00C7: stloc.s 09 | |
IL_00C9: ldarg.1 | |
IL_00CA: castclass Query_izsety+Foo.Biz | |
IL_00CF: stloc.s 0A | |
IL_00D1: ldloc.s 09 | |
IL_00D3: ldfld Query_izsety+Foo+Biz.item1 | |
IL_00D8: ldloc.s 0A | |
IL_00DA: ldfld Query_izsety+Foo+Biz.item1 | |
IL_00DF: call System.String.CompareOrdinal | |
IL_00E4: stloc.2 | |
IL_00E5: ldloc.2 | |
IL_00E6: ldc.i4.0 | |
IL_00E7: bge.s IL_00EB | |
IL_00E9: ldloc.2 | |
IL_00EA: ret | |
IL_00EB: ldloc.2 | |
IL_00EC: ldc.i4.0 | |
IL_00ED: ble.s IL_00F1 | |
IL_00EF: ldloc.2 | |
IL_00F0: ret | |
IL_00F1: ldloc.s 09 | |
IL_00F3: ldfld Query_izsety+Foo+Biz.item2 | |
IL_00F8: ldloc.s 0A | |
IL_00FA: ldfld Query_izsety+Foo+Biz.item2 | |
IL_00FF: call System.String.CompareOrdinal | |
IL_0104: ret | |
GetHashCode$cont@1: | |
IL_0000: nop | |
IL_0001: ldc.i4.0 | |
IL_0002: stloc.0 | |
IL_0003: ldarg.0 | |
IL_0004: stloc.s 05 | |
IL_0006: ldloc.s 05 | |
IL_0008: isinst Query_izsety+Foo.Bar | |
IL_000D: brtrue.s IL_0024 | |
IL_000F: ldloc.s 05 | |
IL_0011: isinst Query_izsety+Foo.Baz | |
IL_0016: brtrue.s IL_0068 | |
IL_0018: ldloc.s 05 | |
IL_001A: isinst Query_izsety+Foo.Biz | |
IL_001F: brtrue IL_00AC | |
IL_0024: ldarg.0 | |
IL_0025: castclass Query_izsety+Foo.Bar | |
IL_002A: stloc.1 | |
IL_002B: ldc.i4.0 | |
IL_002C: stloc.0 | |
IL_002D: ldc.i4 B9 79 37 9E | |
IL_0032: ldloc.1 | |
IL_0033: ldfld Query_izsety+Foo+Bar.item2 | |
IL_0038: stloc.2 | |
IL_0039: ldloc.2 | |
IL_003A: brfalse.s IL_0045 | |
IL_003C: ldloc.2 | |
IL_003D: call System.String.GetHashCode | |
IL_0042: nop | |
IL_0043: br.s IL_0047 | |
IL_0045: ldc.i4.0 | |
IL_0046: nop | |
IL_0047: ldloc.0 | |
IL_0048: ldc.i4.6 | |
IL_0049: shl | |
IL_004A: ldloc.0 | |
IL_004B: ldc.i4.2 | |
IL_004C: shr | |
IL_004D: add | |
IL_004E: add | |
IL_004F: add | |
IL_0050: stloc.0 | |
IL_0051: ldc.i4 B9 79 37 9E | |
IL_0056: ldloc.1 | |
IL_0057: ldfld Query_izsety+Foo+Bar.item1 | |
IL_005C: ldloc.0 | |
IL_005D: ldc.i4.6 | |
IL_005E: shl | |
IL_005F: ldloc.0 | |
IL_0060: ldc.i4.2 | |
IL_0061: shr | |
IL_0062: add | |
IL_0063: add | |
IL_0064: add | |
IL_0065: stloc.0 | |
IL_0066: ldloc.0 | |
IL_0067: ret | |
IL_0068: ldarg.0 | |
IL_0069: castclass Query_izsety+Foo.Baz | |
IL_006E: stloc.3 | |
IL_006F: ldc.i4.1 | |
IL_0070: stloc.0 | |
IL_0071: ldc.i4 B9 79 37 9E | |
IL_0076: ldloc.3 | |
IL_0077: ldfld Query_izsety+Foo+Baz.item2 | |
IL_007C: stloc.2 | |
IL_007D: ldloc.2 | |
IL_007E: brfalse.s IL_0089 | |
IL_0080: ldloc.2 | |
IL_0081: call System.String.GetHashCode | |
IL_0086: nop | |
IL_0087: br.s IL_008B | |
IL_0089: ldc.i4.0 | |
IL_008A: nop | |
IL_008B: ldloc.0 | |
IL_008C: ldc.i4.6 | |
IL_008D: shl | |
IL_008E: ldloc.0 | |
IL_008F: ldc.i4.2 | |
IL_0090: shr | |
IL_0091: add | |
IL_0092: add | |
IL_0093: add | |
IL_0094: stloc.0 | |
IL_0095: ldc.i4 B9 79 37 9E | |
IL_009A: ldloc.3 | |
IL_009B: ldfld Query_izsety+Foo+Baz.item1 | |
IL_00A0: ldloc.0 | |
IL_00A1: ldc.i4.6 | |
IL_00A2: shl | |
IL_00A3: ldloc.0 | |
IL_00A4: ldc.i4.2 | |
IL_00A5: shr | |
IL_00A6: add | |
IL_00A7: add | |
IL_00A8: add | |
IL_00A9: stloc.0 | |
IL_00AA: ldloc.0 | |
IL_00AB: ret | |
IL_00AC: ldarg.0 | |
IL_00AD: castclass Query_izsety+Foo.Biz | |
IL_00B2: stloc.s 04 | |
IL_00B4: ldc.i4.2 | |
IL_00B5: stloc.0 | |
IL_00B6: ldc.i4 B9 79 37 9E | |
IL_00BB: ldloc.s 04 | |
IL_00BD: ldfld Query_izsety+Foo+Biz.item2 | |
IL_00C2: stloc.2 | |
IL_00C3: ldloc.2 | |
IL_00C4: brfalse.s IL_00CF | |
IL_00C6: ldloc.2 | |
IL_00C7: call System.String.GetHashCode | |
IL_00CC: nop | |
IL_00CD: br.s IL_00D1 | |
IL_00CF: ldc.i4.0 | |
IL_00D0: nop | |
IL_00D1: ldloc.0 | |
IL_00D2: ldc.i4.6 | |
IL_00D3: shl | |
IL_00D4: ldloc.0 | |
IL_00D5: ldc.i4.2 | |
IL_00D6: shr | |
IL_00D7: add | |
IL_00D8: add | |
IL_00D9: add | |
IL_00DA: stloc.0 | |
IL_00DB: ldc.i4 B9 79 37 9E | |
IL_00E0: ldloc.s 04 | |
IL_00E2: ldfld Query_izsety+Foo+Biz.item1 | |
IL_00E7: stloc.2 | |
IL_00E8: ldloc.2 | |
IL_00E9: brfalse.s IL_00F4 | |
IL_00EB: ldloc.2 | |
IL_00EC: call System.String.GetHashCode | |
IL_00F1: nop | |
IL_00F2: br.s IL_00F6 | |
IL_00F4: ldc.i4.0 | |
IL_00F5: nop | |
IL_00F6: ldloc.0 | |
IL_00F7: ldc.i4.6 | |
IL_00F8: shl | |
IL_00F9: ldloc.0 | |
IL_00FA: ldc.i4.2 | |
IL_00FB: shr | |
IL_00FC: add | |
IL_00FD: add | |
IL_00FE: add | |
IL_00FF: stloc.0 | |
IL_0100: ldloc.0 | |
IL_0101: ret | |
Equals$cont@1: | |
IL_0000: nop | |
IL_0001: ldarg.1 | |
IL_0002: isinst Query_izsety.Foo | |
IL_0007: stloc.0 | |
IL_0008: ldloc.0 | |
IL_0009: brfalse IL_0113 | |
IL_000E: ldarg.0 | |
IL_000F: stloc.s 09 | |
IL_0011: ldloc.s 09 | |
IL_0013: isinst Query_izsety+Foo.Biz | |
IL_0018: brfalse.s IL_001D | |
IL_001A: ldc.i4.2 | |
IL_001B: br.s IL_002A | |
IL_001D: ldloc.s 09 | |
IL_001F: isinst Query_izsety+Foo.Baz | |
IL_0024: brfalse.s IL_0029 | |
IL_0026: ldc.i4.1 | |
IL_0027: br.s IL_002A | |
IL_0029: ldc.i4.0 | |
IL_002A: stloc.1 | |
IL_002B: ldloc.0 | |
IL_002C: stloc.s 0A | |
IL_002E: ldloc.s 0A | |
IL_0030: isinst Query_izsety+Foo.Biz | |
IL_0035: brfalse.s IL_003A | |
IL_0037: ldc.i4.2 | |
IL_0038: br.s IL_0047 | |
IL_003A: ldloc.s 0A | |
IL_003C: isinst Query_izsety+Foo.Baz | |
IL_0041: brfalse.s IL_0046 | |
IL_0043: ldc.i4.1 | |
IL_0044: br.s IL_0047 | |
IL_0046: ldc.i4.0 | |
IL_0047: stloc.2 | |
IL_0048: ldloc.1 | |
IL_0049: ldloc.2 | |
IL_004A: bne.un IL_0111 | |
IL_004F: ldarg.0 | |
IL_0050: stloc.s 0B | |
IL_0052: ldloc.s 0B | |
IL_0054: isinst Query_izsety+Foo.Bar | |
IL_0059: brtrue.s IL_006D | |
IL_005B: ldloc.s 0B | |
IL_005D: isinst Query_izsety+Foo.Baz | |
IL_0062: brtrue.s IL_00A0 | |
IL_0064: ldloc.s 0B | |
IL_0066: isinst Query_izsety+Foo.Biz | |
IL_006B: brtrue.s IL_00D6 | |
IL_006D: ldarg.0 | |
IL_006E: castclass Query_izsety+Foo.Bar | |
IL_0073: stloc.3 | |
IL_0074: ldloc.0 | |
IL_0075: castclass Query_izsety+Foo.Bar | |
IL_007A: stloc.s 04 | |
IL_007C: ldloc.3 | |
IL_007D: ldfld Query_izsety+Foo+Bar.item1 | |
IL_0082: ldloc.s 04 | |
IL_0084: ldfld Query_izsety+Foo+Bar.item1 | |
IL_0089: bne.un.s IL_009E | |
IL_008B: ldloc.3 | |
IL_008C: ldfld Query_izsety+Foo+Bar.item2 | |
IL_0091: ldloc.s 04 | |
IL_0093: ldfld Query_izsety+Foo+Bar.item2 | |
IL_0098: call System.String.Equals | |
IL_009D: ret | |
IL_009E: ldc.i4.0 | |
IL_009F: ret | |
IL_00A0: ldarg.0 | |
IL_00A1: castclass Query_izsety+Foo.Baz | |
IL_00A6: stloc.s 05 | |
IL_00A8: ldloc.0 | |
IL_00A9: castclass Query_izsety+Foo.Baz | |
IL_00AE: stloc.s 06 | |
IL_00B0: ldloc.s 05 | |
IL_00B2: ldfld Query_izsety+Foo+Baz.item1 | |
IL_00B7: ldloc.s 06 | |
IL_00B9: ldfld Query_izsety+Foo+Baz.item1 | |
IL_00BE: bne.un.s IL_00D4 | |
IL_00C0: ldloc.s 05 | |
IL_00C2: ldfld Query_izsety+Foo+Baz.item2 | |
IL_00C7: ldloc.s 06 | |
IL_00C9: ldfld Query_izsety+Foo+Baz.item2 | |
IL_00CE: call System.String.Equals | |
IL_00D3: ret | |
IL_00D4: ldc.i4.0 | |
IL_00D5: ret | |
IL_00D6: ldarg.0 | |
IL_00D7: castclass Query_izsety+Foo.Biz | |
IL_00DC: stloc.s 07 | |
IL_00DE: ldloc.0 | |
IL_00DF: castclass Query_izsety+Foo.Biz | |
IL_00E4: stloc.s 08 | |
IL_00E6: ldloc.s 07 | |
IL_00E8: ldfld Query_izsety+Foo+Biz.item1 | |
IL_00ED: ldloc.s 08 | |
IL_00EF: ldfld Query_izsety+Foo+Biz.item1 | |
IL_00F4: call System.String.Equals | |
IL_00F9: brfalse.s IL_010F | |
IL_00FB: ldloc.s 07 | |
IL_00FD: ldfld Query_izsety+Foo+Biz.item2 | |
IL_0102: ldloc.s 08 | |
IL_0104: ldfld Query_izsety+Foo+Biz.item2 | |
IL_0109: call System.String.Equals | |
IL_010E: ret | |
IL_010F: ldc.i4.0 | |
IL_0110: ret | |
IL_0111: ldc.i4.0 | |
IL_0112: ret | |
IL_0113: ldc.i4.0 | |
IL_0114: ret | |
f: | |
IL_0000: ldarg.0 | |
IL_0001: stloc.0 | |
IL_0002: ldloc.0 | |
IL_0003: isinst Query_izsety+Foo.Baz | |
IL_0008: brtrue.s IL_001F | |
IL_000A: ldloc.0 | |
IL_000B: isinst Query_izsety+Foo.Biz | |
IL_0010: brtrue.s IL_002B | |
IL_0012: nop | |
IL_0013: ldarg.0 | |
IL_0014: castclass Query_izsety+Foo.Bar | |
IL_0019: ldfld Query_izsety+Foo+Bar.item2 | |
IL_001E: ret | |
IL_001F: ldarg.0 | |
IL_0020: castclass Query_izsety+Foo.Baz | |
IL_0025: ldfld Query_izsety+Foo+Baz.item2 | |
IL_002A: ret | |
IL_002B: ldarg.0 | |
IL_002C: castclass Query_izsety+Foo.Biz | |
IL_0031: ldfld Query_izsety+Foo+Biz.item1 | |
IL_0036: ret | |
Foo.NewBar: | |
IL_0000: ldarg.0 | |
IL_0001: ldarg.1 | |
IL_0002: newobj Query_izsety+Foo+Bar..ctor | |
IL_0007: ret | |
Foo.get_IsBar: | |
IL_0000: ldarg.0 | |
IL_0001: isinst Query_izsety+Foo.Bar | |
IL_0006: ldnull | |
IL_0007: cgt.un | |
IL_0009: ret | |
Foo.NewBaz: | |
IL_0000: ldarg.0 | |
IL_0001: ldarg.1 | |
IL_0002: newobj Query_izsety+Foo+Baz..ctor | |
IL_0007: ret | |
Foo.get_IsBaz: | |
IL_0000: ldarg.0 | |
IL_0001: isinst Query_izsety+Foo.Baz | |
IL_0006: ldnull | |
IL_0007: cgt.un | |
IL_0009: ret | |
Foo.NewBiz: | |
IL_0000: ldarg.0 | |
IL_0001: ldarg.1 | |
IL_0002: newobj Query_izsety+Foo+Biz..ctor | |
IL_0007: ret | |
Foo.get_IsBiz: | |
IL_0000: ldarg.0 | |
IL_0001: isinst Query_izsety+Foo.Biz | |
IL_0006: ldnull | |
IL_0007: cgt.un | |
IL_0009: ret | |
Foo.get_Tag: | |
IL_0000: ldarg.0 | |
IL_0001: stloc.0 | |
IL_0002: ldloc.0 | |
IL_0003: isinst Query_izsety+Foo.Biz | |
IL_0008: brfalse.s IL_000D | |
IL_000A: ldc.i4.2 | |
IL_000B: br.s IL_0019 | |
IL_000D: ldloc.0 | |
IL_000E: isinst Query_izsety+Foo.Baz | |
IL_0013: brfalse.s IL_0018 | |
IL_0015: ldc.i4.1 | |
IL_0016: br.s IL_0019 | |
IL_0018: ldc.i4.0 | |
IL_0019: ret | |
Foo.__DebugDisplay: | |
IL_0000: ldstr "%+0.8A" | |
IL_0005: newobj Microsoft.FSharp.Core.PrintfFormat<Microsoft.FSharp.Core.FSharpFunc<Query_izsety+Foo,System.String>,Microsoft.FSharp.Core.Unit,System.String,System.String,System.String>..ctor | |
IL_000A: call Microsoft.FSharp.Core.ExtraTopLevelOperators.PrintFormatToString | |
IL_000F: ldarg.0 | |
IL_0010: callvirt Microsoft.FSharp.Core.FSharpFunc<Query_izsety+Foo,System.String>.Invoke | |
IL_0015: ret | |
Foo.CompareTo: | |
IL_0000: nop | |
IL_0001: ldarg.0 | |
IL_0002: ldnull | |
IL_0003: cgt.un | |
IL_0005: brfalse.s IL_0054 | |
IL_0007: ldarg.1 | |
IL_0008: ldnull | |
IL_0009: cgt.un | |
IL_000B: brfalse.s IL_0052 | |
IL_000D: ldarg.0 | |
IL_000E: stloc.2 | |
IL_000F: ldloc.2 | |
IL_0010: isinst Query_izsety+Foo.Biz | |
IL_0015: brfalse.s IL_001A | |
IL_0017: ldc.i4.2 | |
IL_0018: br.s IL_0026 | |
IL_001A: ldloc.2 | |
IL_001B: isinst Query_izsety+Foo.Baz | |
IL_0020: brfalse.s IL_0025 | |
IL_0022: ldc.i4.1 | |
IL_0023: br.s IL_0026 | |
IL_0025: ldc.i4.0 | |
IL_0026: stloc.0 | |
IL_0027: ldarg.1 | |
IL_0028: stloc.3 | |
IL_0029: ldloc.3 | |
IL_002A: isinst Query_izsety+Foo.Biz | |
IL_002F: brfalse.s IL_0034 | |
IL_0031: ldc.i4.2 | |
IL_0032: br.s IL_0040 | |
IL_0034: ldloc.3 | |
IL_0035: isinst Query_izsety+Foo.Baz | |
IL_003A: brfalse.s IL_003F | |
IL_003C: ldc.i4.1 | |
IL_003D: br.s IL_0040 | |
IL_003F: ldc.i4.0 | |
IL_0040: stloc.1 | |
IL_0041: ldloc.0 | |
IL_0042: ldloc.1 | |
IL_0043: bne.un.s IL_004E | |
IL_0045: ldarg.0 | |
IL_0046: ldarg.1 | |
IL_0047: ldnull | |
IL_0048: call Query_izsety.CompareTo$cont@1 | |
IL_004D: ret | |
IL_004E: ldloc.0 | |
IL_004F: ldloc.1 | |
IL_0050: sub | |
IL_0051: ret | |
IL_0052: ldc.i4.1 | |
IL_0053: ret | |
IL_0054: ldarg.1 | |
IL_0055: ldnull | |
IL_0056: cgt.un | |
IL_0058: brfalse.s IL_005C | |
IL_005A: ldc.i4.m1 | |
IL_005B: ret | |
IL_005C: ldc.i4.0 | |
IL_005D: ret | |
Foo.CompareTo: | |
IL_0000: nop | |
IL_0001: ldarg.0 | |
IL_0002: ldarg.1 | |
IL_0003: unbox.any Query_izsety.Foo | |
IL_0008: callvirt Query_izsety+Foo.CompareTo | |
IL_000D: ret | |
Foo.CompareTo: | |
IL_0000: nop | |
IL_0001: ldarg.1 | |
IL_0002: unbox.any Query_izsety.Foo | |
IL_0007: stloc.0 | |
IL_0008: ldarg.0 | |
IL_0009: ldnull | |
IL_000A: cgt.un | |
IL_000C: brfalse.s IL_0063 | |
IL_000E: ldarg.1 | |
IL_000F: unbox.any Query_izsety.Foo | |
IL_0014: ldnull | |
IL_0015: cgt.un | |
IL_0017: brfalse.s IL_0061 | |
IL_0019: ldarg.0 | |
IL_001A: stloc.3 | |
IL_001B: ldloc.3 | |
IL_001C: isinst Query_izsety+Foo.Biz | |
IL_0021: brfalse.s IL_0026 | |
IL_0023: ldc.i4.2 | |
IL_0024: br.s IL_0032 | |
IL_0026: ldloc.3 | |
IL_0027: isinst Query_izsety+Foo.Baz | |
IL_002C: brfalse.s IL_0031 | |
IL_002E: ldc.i4.1 | |
IL_002F: br.s IL_0032 | |
IL_0031: ldc.i4.0 | |
IL_0032: stloc.1 | |
IL_0033: ldloc.0 | |
IL_0034: stloc.s 04 | |
IL_0036: ldloc.s 04 | |
IL_0038: isinst Query_izsety+Foo.Biz | |
IL_003D: brfalse.s IL_0042 | |
IL_003F: ldc.i4.2 | |
IL_0040: br.s IL_004F | |
IL_0042: ldloc.s 04 | |
IL_0044: isinst Query_izsety+Foo.Baz | |
IL_0049: brfalse.s IL_004E | |
IL_004B: ldc.i4.1 | |
IL_004C: br.s IL_004F | |
IL_004E: ldc.i4.0 | |
IL_004F: stloc.2 | |
IL_0050: ldloc.1 | |
IL_0051: ldloc.2 | |
IL_0052: bne.un.s IL_005D | |
IL_0054: ldarg.0 | |
IL_0055: ldloc.0 | |
IL_0056: ldnull | |
IL_0057: call Query_izsety.CompareTo$cont@1-1 | |
IL_005C: ret | |
IL_005D: ldloc.1 | |
IL_005E: ldloc.2 | |
IL_005F: sub | |
IL_0060: ret | |
IL_0061: ldc.i4.1 | |
IL_0062: ret | |
IL_0063: ldarg.1 | |
IL_0064: unbox.any Query_izsety.Foo | |
IL_0069: ldnull | |
IL_006A: cgt.un | |
IL_006C: brfalse.s IL_0070 | |
IL_006E: ldc.i4.m1 | |
IL_006F: ret | |
IL_0070: ldc.i4.0 | |
IL_0071: ret | |
Foo.GetHashCode: | |
IL_0000: nop | |
IL_0001: ldarg.0 | |
IL_0002: ldnull | |
IL_0003: cgt.un | |
IL_0005: brfalse.s IL_000F | |
IL_0007: ldarg.0 | |
IL_0008: ldnull | |
IL_0009: call Query_izsety.GetHashCode$cont@1 | |
IL_000E: ret | |
IL_000F: ldc.i4.0 | |
IL_0010: ret | |
Foo.GetHashCode: | |
IL_0000: nop | |
IL_0001: ldarg.0 | |
IL_0002: call Microsoft.FSharp.Core.LanguagePrimitives.get_GenericEqualityComparer | |
IL_0007: callvirt Query_izsety+Foo.GetHashCode | |
IL_000C: ret | |
Foo.Equals: | |
IL_0000: nop | |
IL_0001: ldarg.0 | |
IL_0002: ldnull | |
IL_0003: cgt.un | |
IL_0005: brfalse.s IL_0010 | |
IL_0007: ldarg.0 | |
IL_0008: ldarg.1 | |
IL_0009: ldnull | |
IL_000A: call Query_izsety.Equals$cont@1 | |
IL_000F: ret | |
IL_0010: ldarg.1 | |
IL_0011: ldnull | |
IL_0012: cgt.un | |
IL_0014: ldc.i4.0 | |
IL_0015: ceq | |
IL_0017: ret | |
Foo.Equals: | |
IL_0000: nop | |
IL_0001: ldarg.0 | |
IL_0002: ldnull | |
IL_0003: cgt.un | |
IL_0005: brfalse IL_0117 | |
IL_000A: ldarg.1 | |
IL_000B: ldnull | |
IL_000C: cgt.un | |
IL_000E: brfalse IL_0115 | |
IL_0013: ldarg.0 | |
IL_0014: stloc.s 08 | |
IL_0016: ldloc.s 08 | |
IL_0018: isinst Query_izsety+Foo.Biz | |
IL_001D: brfalse.s IL_0022 | |
IL_001F: ldc.i4.2 | |
IL_0020: br.s IL_002F | |
IL_0022: ldloc.s 08 | |
IL_0024: isinst Query_izsety+Foo.Baz | |
IL_0029: brfalse.s IL_002E | |
IL_002B: ldc.i4.1 | |
IL_002C: br.s IL_002F | |
IL_002E: ldc.i4.0 | |
IL_002F: stloc.0 | |
IL_0030: ldarg.1 | |
IL_0031: stloc.s 09 | |
IL_0033: ldloc.s 09 | |
IL_0035: isinst Query_izsety+Foo.Biz | |
IL_003A: brfalse.s IL_003F | |
IL_003C: ldc.i4.2 | |
IL_003D: br.s IL_004C | |
IL_003F: ldloc.s 09 | |
IL_0041: isinst Query_izsety+Foo.Baz | |
IL_0046: brfalse.s IL_004B | |
IL_0048: ldc.i4.1 | |
IL_0049: br.s IL_004C | |
IL_004B: ldc.i4.0 | |
IL_004C: stloc.1 | |
IL_004D: ldloc.0 | |
IL_004E: ldloc.1 | |
IL_004F: bne.un IL_0113 | |
IL_0054: ldarg.0 | |
IL_0055: stloc.s 0A | |
IL_0057: ldloc.s 0A | |
IL_0059: isinst Query_izsety+Foo.Bar | |
IL_005E: brtrue.s IL_0072 | |
IL_0060: ldloc.s 0A | |
IL_0062: isinst Query_izsety+Foo.Baz | |
IL_0067: brtrue.s IL_00A2 | |
IL_0069: ldloc.s 0A | |
IL_006B: isinst Query_izsety+Foo.Biz | |
IL_0070: brtrue.s IL_00D8 | |
IL_0072: ldarg.0 | |
IL_0073: castclass Query_izsety+Foo.Bar | |
IL_0078: stloc.2 | |
IL_0079: ldarg.1 | |
IL_007A: castclass Query_izsety+Foo.Bar | |
IL_007F: stloc.3 | |
IL_0080: ldloc.2 | |
IL_0081: ldfld Query_izsety+Foo+Bar.item1 | |
IL_0086: ldloc.3 | |
IL_0087: ldfld Query_izsety+Foo+Bar.item1 | |
IL_008C: bne.un.s IL_00A0 | |
IL_008E: ldloc.2 | |
IL_008F: ldfld Query_izsety+Foo+Bar.item2 | |
IL_0094: ldloc.3 | |
IL_0095: ldfld Query_izsety+Foo+Bar.item2 | |
IL_009A: call System.String.Equals | |
IL_009F: ret | |
IL_00A0: ldc.i4.0 | |
IL_00A1: ret | |
IL_00A2: ldarg.0 | |
IL_00A3: castclass Query_izsety+Foo.Baz | |
IL_00A8: stloc.s 04 | |
IL_00AA: ldarg.1 | |
IL_00AB: castclass Query_izsety+Foo.Baz | |
IL_00B0: stloc.s 05 | |
IL_00B2: ldloc.s 04 | |
IL_00B4: ldfld Query_izsety+Foo+Baz.item1 | |
IL_00B9: ldloc.s 05 | |
IL_00BB: ldfld Query_izsety+Foo+Baz.item1 | |
IL_00C0: bne.un.s IL_00D6 | |
IL_00C2: ldloc.s 04 | |
IL_00C4: ldfld Query_izsety+Foo+Baz.item2 | |
IL_00C9: ldloc.s 05 | |
IL_00CB: ldfld Query_izsety+Foo+Baz.item2 | |
IL_00D0: call System.String.Equals | |
IL_00D5: ret | |
IL_00D6: ldc.i4.0 | |
IL_00D7: ret | |
IL_00D8: ldarg.0 | |
IL_00D9: castclass Query_izsety+Foo.Biz | |
IL_00DE: stloc.s 06 | |
IL_00E0: ldarg.1 | |
IL_00E1: castclass Query_izsety+Foo.Biz | |
IL_00E6: stloc.s 07 | |
IL_00E8: ldloc.s 06 | |
IL_00EA: ldfld Query_izsety+Foo+Biz.item1 | |
IL_00EF: ldloc.s 07 | |
IL_00F1: ldfld Query_izsety+Foo+Biz.item1 | |
IL_00F6: call System.String.Equals | |
IL_00FB: brfalse.s IL_0111 | |
IL_00FD: ldloc.s 06 | |
IL_00FF: ldfld Query_izsety+Foo+Biz.item2 | |
IL_0104: ldloc.s 07 | |
IL_0106: ldfld Query_izsety+Foo+Biz.item2 | |
IL_010B: call System.String.Equals | |
IL_0110: ret | |
IL_0111: ldc.i4.0 | |
IL_0112: ret | |
IL_0113: ldc.i4.0 | |
IL_0114: ret | |
IL_0115: ldc.i4.0 | |
IL_0116: ret | |
IL_0117: ldarg.1 | |
IL_0118: ldnull | |
IL_0119: cgt.un | |
IL_011B: ldc.i4.0 | |
IL_011C: ceq | |
IL_011E: ret | |
Foo.Equals: | |
IL_0000: nop | |
IL_0001: ldarg.1 | |
IL_0002: isinst Query_izsety.Foo | |
IL_0007: stloc.0 | |
IL_0008: ldloc.0 | |
IL_0009: brfalse.s IL_0013 | |
IL_000B: ldarg.0 | |
IL_000C: ldloc.0 | |
IL_000D: callvirt Query_izsety+Foo.Equals | |
IL_0012: ret | |
IL_0013: ldc.i4.0 | |
IL_0014: ret | |
Foo..ctor: | |
IL_0000: ldarg.0 | |
IL_0001: call System.Object..ctor | |
IL_0006: ret |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment