Skip to content

Commit 39280f3

Browse files
committed
Merge pull request #966 from manofstick/manofstick-reverting-513
Reverting #513
2 parents 2ffb0b6 + 4ecc9d5 commit 39280f3

File tree

7 files changed

+286
-1560
lines changed

7 files changed

+286
-1560
lines changed

src/fsharp/FSharp.Core/prim-types.fs

Lines changed: 148 additions & 1419 deletions
Large diffs are not rendered by default.

tests/fsharpqa/Source/Optimizations/GenericComparison/Compare07.il.netfx4.bsl

Lines changed: 25 additions & 25 deletions
Original file line numberDiff line numberDiff line change
@@ -29,22 +29,20 @@
2929
}
3030
.mresource public FSharpSignatureData.Compare07
3131
{
32-
// Offset: 0x00000000 Length: 0x0000089A
33-
// WARNING: managed resource file FSharpSignatureData.Compare07 created
32+
// Offset: 0x00000000 Length: 0x000008A2
3433
}
3534
.mresource public FSharpOptimizationData.Compare07
3635
{
37-
// Offset: 0x000008A0 Length: 0x00000694
38-
// WARNING: managed resource file FSharpOptimizationData.Compare07 created
36+
// Offset: 0x000008A8 Length: 0x00000698
3937
}
4038
.module Compare07.dll
41-
// MVID: {56B7C20F-05DE-F88E-A745-03830FC2B756}
39+
// MVID: {56DD235D-05DE-F88E-A745-03835D23DD56}
4240
.imagebase 0x00400000
4341
.file alignment 0x00000200
4442
.stackreserve 0x00100000
4543
.subsystem 0x0003 // WINDOWS_CUI
4644
.corflags 0x00000001 // ILONLY
47-
// Image base: 0x01310000
45+
// Image base: 0x00D80000
4846

4947

5048
// =============== CLASS MEMBERS DECLARATION ===================
@@ -256,16 +254,17 @@
256254
instance int32 CompareTo(object obj) cil managed
257255
{
258256
.custom instance void [mscorlib]System.Runtime.CompilerServices.CompilerGeneratedAttribute::.ctor() = ( 01 00 00 00 )
259-
// Code size 14 (0xe)
257+
// Code size 16 (0x10)
260258
.maxstack 8
261259
.language '{AB4F38C9-B6E6-43BA-BE3B-58080B2CCCE3}', '{994B45C4-E6E9-11D2-903F-00C04FA302A1}', '{5A869D0B-6611-11D3-BD2A-0000F80849BD}'
262-
.line 4,4 : 10,20
260+
.line 4,4 : 10,20 'E:\\Documents\\GitHub\\visualfsharp\\tests\\fsharpqa\\Source\\Optimizations\\GenericComparison\\Compare07.fsx'
263261
IL_0000: nop
264262
IL_0001: ldarg.0
265263
IL_0002: ldarg.1
266264
IL_0003: unbox.any class Compare07/CompareMicroPerfAndCodeGenerationTests/GenericKey`1<!a>
267-
IL_0008: callvirt instance int32 class Compare07/CompareMicroPerfAndCodeGenerationTests/GenericKey`1<!a>::CompareTo(class Compare07/CompareMicroPerfAndCodeGenerationTests/GenericKey`1<!0>)
268-
IL_000d: ret
265+
IL_0008: tail.
266+
IL_000a: callvirt instance int32 class Compare07/CompareMicroPerfAndCodeGenerationTests/GenericKey`1<!a>::CompareTo(class Compare07/CompareMicroPerfAndCodeGenerationTests/GenericKey`1<!0>)
267+
IL_000f: ret
269268
} // end of method GenericKey`1::CompareTo
270269

271270
.method public hidebysig virtual final
@@ -281,7 +280,7 @@
281280
[3] int32 V_3,
282281
[4] !a V_4,
283282
[5] !a V_5)
284-
.line 4,4 : 10,20
283+
.line 4,4 : 10,20 ''
285284
IL_0000: nop
286285
IL_0001: ldarg.1
287286
IL_0002: unbox.any class Compare07/CompareMicroPerfAndCodeGenerationTests/GenericKey`1<!a>
@@ -433,7 +432,7 @@
433432
.custom instance void [mscorlib]System.Runtime.CompilerServices.CompilerGeneratedAttribute::.ctor() = ( 01 00 00 00 )
434433
// Code size 13 (0xd)
435434
.maxstack 8
436-
.line 4,4 : 10,20
435+
.line 4,4 : 10,20 ''
437436
IL_0000: nop
438437
IL_0001: ldarg.0
439438
IL_0002: call class [mscorlib]System.Collections.IEqualityComparer [FSharp.Core]Microsoft.FSharp.Core.LanguagePrimitives::get_GenericEqualityComparer()
@@ -584,23 +583,24 @@
584583
instance bool Equals(object obj) cil managed
585584
{
586585
.custom instance void [mscorlib]System.Runtime.CompilerServices.CompilerGeneratedAttribute::.ctor() = ( 01 00 00 00 )
587-
// Code size 21 (0x15)
586+
// Code size 23 (0x17)
588587
.maxstack 4
589588
.locals init (class Compare07/CompareMicroPerfAndCodeGenerationTests/GenericKey`1<!a> V_0)
590589
IL_0000: nop
591590
IL_0001: ldarg.1
592591
IL_0002: isinst class Compare07/CompareMicroPerfAndCodeGenerationTests/GenericKey`1<!a>
593592
IL_0007: stloc.0
594593
IL_0008: ldloc.0
595-
IL_0009: brfalse.s IL_0013
594+
IL_0009: brfalse.s IL_0015
596595

597596
IL_000b: ldarg.0
598597
IL_000c: ldloc.0
599-
IL_000d: callvirt instance bool class Compare07/CompareMicroPerfAndCodeGenerationTests/GenericKey`1<!a>::Equals(class Compare07/CompareMicroPerfAndCodeGenerationTests/GenericKey`1<!0>)
600-
IL_0012: ret
601-
602-
IL_0013: ldc.i4.0
598+
IL_000d: tail.
599+
IL_000f: callvirt instance bool class Compare07/CompareMicroPerfAndCodeGenerationTests/GenericKey`1<!a>::Equals(class Compare07/CompareMicroPerfAndCodeGenerationTests/GenericKey`1<!0>)
603600
IL_0014: ret
601+
602+
IL_0015: ldc.i4.0
603+
IL_0016: ret
604604
} // end of method GenericKey`1::Equals
605605

606606
.property instance int32 Tag()
@@ -638,28 +638,28 @@
638638
[1] class Compare07/CompareMicroPerfAndCodeGenerationTests/GenericKey`1<int32> t1,
639639
[2] class Compare07/CompareMicroPerfAndCodeGenerationTests/GenericKey`1<int32> t2,
640640
[3] int32 i)
641-
.line 6,6 : 8,25
641+
.line 6,6 : 8,25 ''
642642
IL_0000: nop
643643
IL_0001: ldc.i4.1
644644
IL_0002: stloc.0
645-
.line 7,7 : 8,32
645+
.line 7,7 : 8,32 ''
646646
IL_0003: ldc.i4.1
647647
IL_0004: ldc.i4.2
648648
IL_0005: call class Compare07/CompareMicroPerfAndCodeGenerationTests/GenericKey`1<!0> class Compare07/CompareMicroPerfAndCodeGenerationTests/GenericKey`1<int32>::NewGenericKey(!0,
649649
!0)
650650
IL_000a: stloc.1
651-
.line 8,8 : 8,32
651+
.line 8,8 : 8,32 ''
652652
IL_000b: ldc.i4.1
653653
IL_000c: ldc.i4.3
654654
IL_000d: call class Compare07/CompareMicroPerfAndCodeGenerationTests/GenericKey`1<!0> class Compare07/CompareMicroPerfAndCodeGenerationTests/GenericKey`1<int32>::NewGenericKey(!0,
655655
!0)
656656
IL_0012: stloc.2
657-
.line 9,9 : 8,32
657+
.line 9,9 : 8,32 ''
658658
IL_0013: ldc.i4.0
659659
IL_0014: stloc.3
660660
IL_0015: br.s IL_0023
661661

662-
.line 10,10 : 12,30
662+
.line 10,10 : 12,30 ''
663663
IL_0017: ldloc.1
664664
IL_0018: ldloc.2
665665
IL_0019: callvirt instance int32 class Compare07/CompareMicroPerfAndCodeGenerationTests/GenericKey`1<int32>::CompareTo(class Compare07/CompareMicroPerfAndCodeGenerationTests/GenericKey`1<!0>)
@@ -668,12 +668,12 @@
668668
IL_0020: ldc.i4.1
669669
IL_0021: add
670670
IL_0022: stloc.3
671-
.line 9,9 : 21,29
671+
.line 9,9 : 21,29 ''
672672
IL_0023: ldloc.3
673673
IL_0024: ldc.i4 0x989681
674674
IL_0029: blt.s IL_0017
675675

676-
.line 11,11 : 8,9
676+
.line 11,11 : 8,9 ''
677677
IL_002b: ldloc.0
678678
IL_002c: ret
679679
} // end of method CompareMicroPerfAndCodeGenerationTests::f6

tests/fsharpqa/Source/Optimizations/GenericComparison/Compare10.il.netfx4.bsl

Lines changed: 23 additions & 24 deletions
Original file line numberDiff line numberDiff line change
@@ -29,22 +29,20 @@
2929
}
3030
.mresource public FSharpSignatureData.Compare10
3131
{
32-
// Offset: 0x00000000 Length: 0x00000AA4
33-
// WARNING: managed resource file FSharpSignatureData.Compare10 created
32+
// Offset: 0x00000000 Length: 0x00000AAC
3433
}
3534
.mresource public FSharpOptimizationData.Compare10
3635
{
37-
// Offset: 0x00000AA8 Length: 0x00000592
38-
// WARNING: managed resource file FSharpOptimizationData.Compare10 created
36+
// Offset: 0x00000AB0 Length: 0x00000592
3937
}
4038
.module Compare10.dll
41-
// MVID: {56B7C2B8-04BF-1753-A745-0383B8C2B756}
39+
// MVID: {56DD2366-04BF-1753-A745-03836623DD56}
4240
.imagebase 0x00400000
4341
.file alignment 0x00000200
4442
.stackreserve 0x00100000
4543
.subsystem 0x0003 // WINDOWS_CUI
4644
.corflags 0x00000001 // ILONLY
47-
// Image base: 0x00F70000
45+
// Image base: 0x00E00000
4846

4947

5048
// =============== CLASS MEMBERS DECLARATION ===================
@@ -268,7 +266,7 @@
268266
// Code size 14 (0xe)
269267
.maxstack 8
270268
.language '{AB4F38C9-B6E6-43BA-BE3B-58080B2CCCE3}', '{994B45C4-E6E9-11D2-903F-00C04FA302A1}', '{5A869D0B-6611-11D3-BD2A-0000F80849BD}'
271-
.line 4,4 : 10,13
269+
.line 4,4 : 10,13 'E:\\Documents\\GitHub\\visualfsharp\\tests\\fsharpqa\\Source\\Optimizations\\GenericComparison\\Compare10.fsx'
272270
IL_0000: nop
273271
IL_0001: ldarg.0
274272
IL_0002: ldarg.1
@@ -290,7 +288,7 @@
290288
[3] int32 V_3,
291289
[4] int32 V_4,
292290
[5] int32 V_5)
293-
.line 4,4 : 10,13
291+
.line 4,4 : 10,13 ''
294292
IL_0000: nop
295293
IL_0001: ldarg.1
296294
IL_0002: unbox.any Compare10/CompareMicroPerfAndCodeGenerationTests/Key
@@ -440,7 +438,7 @@
440438
.custom instance void [mscorlib]System.Runtime.CompilerServices.CompilerGeneratedAttribute::.ctor() = ( 01 00 00 00 )
441439
// Code size 13 (0xd)
442440
.maxstack 8
443-
.line 4,4 : 10,13
441+
.line 4,4 : 10,13 ''
444442
IL_0000: nop
445443
IL_0001: ldarg.0
446444
IL_0002: call class [mscorlib]System.Collections.IEqualityComparer [FSharp.Core]Microsoft.FSharp.Core.LanguagePrimitives::get_GenericEqualityComparer()
@@ -832,7 +830,7 @@
832830
.custom instance void [mscorlib]System.Runtime.CompilerServices.CompilerGeneratedAttribute::.ctor() = ( 01 00 00 00 )
833831
// Code size 14 (0xe)
834832
.maxstack 8
835-
.line 5,5 : 10,26
833+
.line 5,5 : 10,26 ''
836834
IL_0000: nop
837835
IL_0001: ldarg.0
838836
IL_0002: ldarg.1
@@ -859,7 +857,7 @@
859857
[8] class Compare10/CompareMicroPerfAndCodeGenerationTests/Key V_8,
860858
[9] class Compare10/CompareMicroPerfAndCodeGenerationTests/Key V_9,
861859
[10] int32 V_10)
862-
.line 5,5 : 10,26
860+
.line 5,5 : 10,26 ''
863861
IL_0000: nop
864862
IL_0001: ldarg.1
865863
IL_0002: unbox.any Compare10/CompareMicroPerfAndCodeGenerationTests/KeyWithInnerKeys
@@ -1047,7 +1045,7 @@
10471045
.custom instance void [mscorlib]System.Runtime.CompilerServices.CompilerGeneratedAttribute::.ctor() = ( 01 00 00 00 )
10481046
// Code size 13 (0xd)
10491047
.maxstack 8
1050-
.line 5,5 : 10,26
1048+
.line 5,5 : 10,26 ''
10511049
IL_0000: nop
10521050
IL_0001: ldarg.0
10531051
IL_0002: call class [mscorlib]System.Collections.IEqualityComparer [FSharp.Core]Microsoft.FSharp.Core.LanguagePrimitives::get_GenericEqualityComparer()
@@ -1210,23 +1208,24 @@
12101208
instance bool Equals(object obj) cil managed
12111209
{
12121210
.custom instance void [mscorlib]System.Runtime.CompilerServices.CompilerGeneratedAttribute::.ctor() = ( 01 00 00 00 )
1213-
// Code size 21 (0x15)
1211+
// Code size 23 (0x17)
12141212
.maxstack 4
12151213
.locals init (class Compare10/CompareMicroPerfAndCodeGenerationTests/KeyWithInnerKeys V_0)
12161214
IL_0000: nop
12171215
IL_0001: ldarg.1
12181216
IL_0002: isinst Compare10/CompareMicroPerfAndCodeGenerationTests/KeyWithInnerKeys
12191217
IL_0007: stloc.0
12201218
IL_0008: ldloc.0
1221-
IL_0009: brfalse.s IL_0013
1219+
IL_0009: brfalse.s IL_0015
12221220

12231221
IL_000b: ldarg.0
12241222
IL_000c: ldloc.0
1225-
IL_000d: callvirt instance bool Compare10/CompareMicroPerfAndCodeGenerationTests/KeyWithInnerKeys::Equals(class Compare10/CompareMicroPerfAndCodeGenerationTests/KeyWithInnerKeys)
1226-
IL_0012: ret
1227-
1228-
IL_0013: ldc.i4.0
1223+
IL_000d: tail.
1224+
IL_000f: callvirt instance bool Compare10/CompareMicroPerfAndCodeGenerationTests/KeyWithInnerKeys::Equals(class Compare10/CompareMicroPerfAndCodeGenerationTests/KeyWithInnerKeys)
12291225
IL_0014: ret
1226+
1227+
IL_0015: ldc.i4.0
1228+
IL_0016: ret
12301229
} // end of method KeyWithInnerKeys::Equals
12311230

12321231
.property instance int32 Tag()
@@ -1266,11 +1265,11 @@
12661265
[1] class Compare10/CompareMicroPerfAndCodeGenerationTests/KeyWithInnerKeys key1,
12671266
[2] class Compare10/CompareMicroPerfAndCodeGenerationTests/KeyWithInnerKeys key2,
12681267
[3] int32 i)
1269-
.line 7,7 : 8,25
1268+
.line 7,7 : 8,25 ''
12701269
IL_0000: nop
12711270
IL_0001: ldc.i4.1
12721271
IL_0002: stloc.0
1273-
.line 8,8 : 8,65
1272+
.line 8,8 : 8,65 ''
12741273
IL_0003: ldc.i4.1
12751274
IL_0004: ldc.i4.2
12761275
IL_0005: call class Compare10/CompareMicroPerfAndCodeGenerationTests/Key Compare10/CompareMicroPerfAndCodeGenerationTests/Key::NewKey(int32,
@@ -1288,7 +1287,7 @@
12881287
IL_001d: call class Compare10/CompareMicroPerfAndCodeGenerationTests/KeyWithInnerKeys Compare10/CompareMicroPerfAndCodeGenerationTests/KeyWithInnerKeys::NewKeyWithInnerKeys(class Compare10/CompareMicroPerfAndCodeGenerationTests/Key,
12891288
class [mscorlib]System.Tuple`2<class Compare10/CompareMicroPerfAndCodeGenerationTests/Key,class Compare10/CompareMicroPerfAndCodeGenerationTests/Key>)
12901289
IL_0022: stloc.1
1291-
.line 9,9 : 8,65
1290+
.line 9,9 : 8,65 ''
12921291
IL_0023: ldc.i4.1
12931292
IL_0024: ldc.i4.2
12941293
IL_0025: call class Compare10/CompareMicroPerfAndCodeGenerationTests/Key Compare10/CompareMicroPerfAndCodeGenerationTests/Key::NewKey(int32,
@@ -1306,12 +1305,12 @@
13061305
IL_003d: call class Compare10/CompareMicroPerfAndCodeGenerationTests/KeyWithInnerKeys Compare10/CompareMicroPerfAndCodeGenerationTests/KeyWithInnerKeys::NewKeyWithInnerKeys(class Compare10/CompareMicroPerfAndCodeGenerationTests/Key,
13071306
class [mscorlib]System.Tuple`2<class Compare10/CompareMicroPerfAndCodeGenerationTests/Key,class Compare10/CompareMicroPerfAndCodeGenerationTests/Key>)
13081307
IL_0042: stloc.2
1309-
.line 10,10 : 8,32
1308+
.line 10,10 : 8,32 ''
13101309
IL_0043: ldc.i4.0
13111310
IL_0044: stloc.3
13121311
IL_0045: br.s IL_0053
13131312

1314-
.line 11,11 : 12,34
1313+
.line 11,11 : 12,34 ''
13151314
IL_0047: ldloc.1
13161315
IL_0048: ldloc.2
13171316
IL_0049: callvirt instance int32 Compare10/CompareMicroPerfAndCodeGenerationTests/KeyWithInnerKeys::CompareTo(class Compare10/CompareMicroPerfAndCodeGenerationTests/KeyWithInnerKeys)
@@ -1320,7 +1319,7 @@
13201319
IL_0050: ldc.i4.1
13211320
IL_0051: add
13221321
IL_0052: stloc.3
1323-
.line 10,10 : 21,29
1322+
.line 10,10 : 21,29 ''
13241323
IL_0053: ldloc.3
13251324
IL_0054: ldc.i4 0x989681
13261325
IL_0059: blt.s IL_0047

0 commit comments

Comments
 (0)