Skip to content

Split off objc_method / objc_super_method from class_method / super_method #12260

New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Merged
merged 3 commits into from
Oct 4, 2017

Conversation

slavapestov
Copy link
Contributor

This is the first part of a refactoring to make Objective-C dispatch explicit in SIL, instead of relying on a poorly-named 'volatile' bit in the class_method / super_method / witness_method instructions.

The next step is to switch Objective-C protocol method calls over to use objc_method, since witness_method models Objective-C dispatch poorly.

The reason I'm doing this is because it is a general cleanup we've talked about for a while, and also because we might switch to a resilient method dispatch strategy where it would be advantageous to change class_method to take an isa pointer, and replace super_method with a super_metatype + class_method sequence. Since this separation doesn't make sense for Objective-C, I'm going to land this refactoring first.

Also, it might be possible to eliminate the dynamic_method instruction entirely now, but I haven't looked into that yet.

Unfortunately the new instructions do introduce a lot of new code, but some upcoming changes I'm planning on making to SILGen will eliminate the duplication for lowering call expressions a fair bit.

@slavapestov
Copy link
Contributor Author

@rjmccall @jckarter Does this refactoring look reasonable, or at least not offensively bad?

…per_method

This replaces the '[volatile]' flag. Now, class_method and
super_method are only used for vtable dispatch.

The witness_method instruction is still overloaded for use
with both ObjC protocol requirements and Swift protocol
requirements; the next step is to make it only mean the
latter, also using objc_method for ObjC protocol calls.
Let's not use string literals as booleans here.
@slavapestov
Copy link
Contributor Author

@swift-ci Please test

@slavapestov
Copy link
Contributor Author

@swift-ci Please test source compatibility

@slavapestov
Copy link
Contributor Author

@swift-ci Please benchmark

@swift-ci
Copy link
Contributor

swift-ci commented Oct 4, 2017

Build failed
Swift Test Linux Platform
Git Sha - e33ccdc9f4e9a148a495bc1ae67ddbd11008b563

@slavapestov
Copy link
Contributor Author

@swift-ci Please test

@slavapestov
Copy link
Contributor Author

@swift-ci Please test source compatibility

@slavapestov
Copy link
Contributor Author

@swift-ci Please benchmark

@swift-ci
Copy link
Contributor

swift-ci commented Oct 4, 2017

Build comment file:

Optimized (O)

Regression (1)
TEST OLD NEW DELTA SPEEDUP
PrefixWhileCountableRangeLazy 18 19 +5.6% 0.95x
No Changes (328)
TEST OLD NEW DELTA SPEEDUP
AngryPhonebook 2981 2981 +0.0% 1.00x
AnyHashableWithAClass 66959 67003 +0.1% 1.00x (?)
Array2D 1909 1904 -0.3% 1.00x (?)
ArrayAppend 1072 1072 +0.0% 1.00x
ArrayAppendArrayOfInt 596 596 +0.0% 1.00x
ArrayAppendAscii 20099 20095 -0.0% 1.00x (?)
ArrayAppendFromGeneric 596 597 +0.2% 1.00x (?)
ArrayAppendGenericStructs 1223 1215 -0.7% 1.01x (?)
ArrayAppendLatin1 41026 40991 -0.1% 1.00x (?)
ArrayAppendLazyMap 993 989 -0.4% 1.00x (?)
ArrayAppendOptionals 1221 1217 -0.3% 1.00x (?)
ArrayAppendRepeatCol 998 997 -0.1% 1.00x (?)
ArrayAppendReserved 840 840 +0.0% 1.00x
ArrayAppendSequence 912 912 +0.0% 1.00x
ArrayAppendStrings 15044 15015 -0.2% 1.00x (?)
ArrayAppendToFromGeneric 597 597 +0.0% 1.00x
ArrayAppendToGeneric 596 597 +0.2% 1.00x (?)
ArrayAppendUTF16 40658 40666 +0.0% 1.00x (?)
ArrayInClass 62 61 -1.6% 1.02x (?)
ArrayLiteral 0 0 +0.0% 1.00x
ArrayOfGenericPOD 230 230 +0.0% 1.00x
ArrayOfGenericRef 3980 3986 +0.2% 1.00x (?)
ArrayOfPOD 176 176 +0.0% 1.00x
ArrayOfRef 3936 3931 -0.1% 1.00x (?)
ArrayPlusEqualArrayOfInt 596 596 +0.0% 1.00x
ArrayPlusEqualFiveElementCollection 4742 4753 +0.2% 1.00x (?)
ArrayPlusEqualSingleElementCollection 1072 1072 +0.0% 1.00x
ArrayPlusEqualThreeElements 1640 1649 +0.5% 0.99x (?)
ArraySubscript 1482 1480 -0.1% 1.00x (?)
ArrayValueProp 6 6 +0.0% 1.00x
ArrayValueProp2 6 6 +0.0% 1.00x
ArrayValueProp3 6 6 +0.0% 1.00x
ArrayValueProp4 6 6 +0.0% 1.00x
BitCount 134 133 -0.7% 1.01x (?)
ByteSwap 115 115 +0.0% 1.00x
CStringLongAscii 4872 4873 +0.0% 1.00x (?)
CStringLongNonAscii 2192 2192 +0.0% 1.00x
CStringShortAscii 4810 4815 +0.1% 1.00x (?)
Calculator 36 36 +0.0% 1.00x
CaptureProp 4851 4851 +0.0% 1.00x
CharIndexing_ascii_unicodeScalars 13622 13622 +0.0% 1.00x
CharIndexing_ascii_unicodeScalars_Backwards 11254 11254 +0.0% 1.00x
CharIndexing_chinese_unicodeScalars 10324 10323 -0.0% 1.00x (?)
CharIndexing_chinese_unicodeScalars_Backwards 8556 8556 +0.0% 1.00x
CharIndexing_japanese_unicodeScalars 16311 16313 +0.0% 1.00x (?)
CharIndexing_japanese_unicodeScalars_Backwards 13460 13460 +0.0% 1.00x
CharIndexing_korean_unicodeScalars 13219 13221 +0.0% 1.00x (?)
CharIndexing_korean_unicodeScalars_Backwards 10917 10917 +0.0% 1.00x
CharIndexing_punctuatedJapanese_unicodeScalars 2508 2508 +0.0% 1.00x
CharIndexing_punctuatedJapanese_unicodeScalars_Backwards 2091 2091 +0.0% 1.00x
CharIndexing_punctuated_unicodeScalars 3122 3122 +0.0% 1.00x
CharIndexing_punctuated_unicodeScalars_Backwards 2596 2596 +0.0% 1.00x
CharIndexing_russian_unicodeScalars 11372 11371 -0.0% 1.00x (?)
CharIndexing_russian_unicodeScalars_Backwards 9402 9402 +0.0% 1.00x
CharIndexing_tweet_unicodeScalars 26850 26849 -0.0% 1.00x (?)
CharIndexing_tweet_unicodeScalars_Backwards 22195 22194 -0.0% 1.00x (?)
CharIndexing_utf16_unicodeScalars 80911 80918 +0.0% 1.00x (?)
CharIndexing_utf16_unicodeScalars_Backwards 60472 60469 -0.0% 1.00x (?)
CharIteration_ascii_unicodeScalars 15602 15600 -0.0% 1.00x (?)
CharIteration_ascii_unicodeScalars_Backwards 16176 16188 +0.1% 1.00x (?)
CharIteration_chinese_unicodeScalars 11828 11820 -0.1% 1.00x (?)
CharIteration_chinese_unicodeScalars_Backwards 12249 12251 +0.0% 1.00x (?)
CharIteration_japanese_unicodeScalars 18683 18692 +0.0% 1.00x (?)
CharIteration_japanese_unicodeScalars_Backwards 19371 19366 -0.0% 1.00x (?)
CharIteration_korean_unicodeScalars 15135 15134 -0.0% 1.00x (?)
CharIteration_korean_unicodeScalars_Backwards 15686 15689 +0.0% 1.00x (?)
CharIteration_punctuatedJapanese_unicodeScalars 2838 2841 +0.1% 1.00x (?)
CharIteration_punctuatedJapanese_unicodeScalars_Backwards 2921 2920 -0.0% 1.00x (?)
CharIteration_punctuated_unicodeScalars 3547 3545 -0.1% 1.00x (?)
CharIteration_punctuated_unicodeScalars_Backwards 3657 3658 +0.0% 1.00x (?)
CharIteration_russian_unicodeScalars 13009 13004 -0.0% 1.00x (?)
CharIteration_russian_unicodeScalars_Backwards 13476 13488 +0.1% 1.00x (?)
CharIteration_tweet_unicodeScalars 30759 30759 +0.0% 1.00x
CharIteration_tweet_unicodeScalars_Backwards 32004 31978 -0.1% 1.00x (?)
CharIteration_utf16_unicodeScalars 78318 78316 -0.0% 1.00x (?)
CharIteration_utf16_unicodeScalars_Backwards 97380 97389 +0.0% 1.00x (?)
CharacterLiteralsLarge 5940 5952 +0.2% 1.00x (?)
CharacterLiteralsSmall 402 402 +0.0% 1.00x
Chars 430 430 +0.0% 1.00x
ClassArrayGetter 14 14 +0.0% 1.00x
DeadArray 181 181 +0.0% 1.00x
Dictionary 568 567 -0.2% 1.00x (?)
Dictionary2 1888 1886 -0.1% 1.00x (?)
Dictionary2OfObjects 3265 3266 +0.0% 1.00x (?)
Dictionary3 468 468 +0.0% 1.00x
Dictionary3OfObjects 843 843 +0.0% 1.00x
DictionaryBridge 2553 2581 +1.1% 0.99x (?)
DictionaryGroup 273 273 +0.0% 1.00x
DictionaryGroupOfObjects 1791 1790 -0.1% 1.00x (?)
DictionaryLiteral 1488 1486 -0.1% 1.00x (?)
DictionaryOfObjects 2269 2265 -0.2% 1.00x (?)
DictionaryRemove 2515 2507 -0.3% 1.00x (?)
DictionaryRemoveOfObjects 23878 23920 +0.2% 1.00x (?)
DictionarySwap 419 415 -1.0% 1.01x (?)
DictionarySwapOfObjects 7512 7493 -0.3% 1.00x (?)
DropFirstAnyCollection 55 55 +0.0% 1.00x
DropFirstAnyCollectionLazy 75646 75623 -0.0% 1.00x (?)
DropFirstAnySeqCRangeIter 28658 28659 +0.0% 1.00x (?)
DropFirstAnySeqCRangeIterLazy 28586 28586 +0.0% 1.00x
DropFirstAnySeqCntRange 50 50 +0.0% 1.00x
DropFirstAnySeqCntRangeLazy 50 50 +0.0% 1.00x
DropFirstAnySequence 6327 6313 -0.2% 1.00x (?)
DropFirstAnySequenceLazy 6328 6324 -0.1% 1.00x (?)
DropFirstArray 30 30 +0.0% 1.00x
DropFirstArrayLazy 30 30 +0.0% 1.00x
DropFirstCountableRange 18 18 +0.0% 1.00x
DropFirstCountableRangeLazy 18 18 +0.0% 1.00x
DropFirstSequence 2018 2019 +0.0% 1.00x (?)
DropFirstSequenceLazy 1944 1944 +0.0% 1.00x
DropLastAnyCollection 21 21 +0.0% 1.00x
DropLastAnyCollectionLazy 25173 25222 +0.2% 1.00x (?)
DropLastAnySeqCRangeIter 4705 4704 -0.0% 1.00x (?)
DropLastAnySeqCRangeIterLazy 4721 4744 +0.5% 1.00x (?)
DropLastAnySeqCntRange 16 16 +0.0% 1.00x
DropLastAnySeqCntRangeLazy 16 16 +0.0% 1.00x
DropLastAnySequence 6715 6717 +0.0% 1.00x (?)
DropLastAnySequenceLazy 6647 6659 +0.2% 1.00x (?)
DropLastArray 10 10 +0.0% 1.00x
DropLastArrayLazy 10 10 +0.0% 1.00x
DropLastCountableRange 6 6 +0.0% 1.00x
DropLastCountableRangeLazy 6 6 +0.0% 1.00x
DropLastSequence 608 603 -0.8% 1.01x (?)
DropLastSequenceLazy 607 606 -0.2% 1.00x (?)
DropWhileAnyCollection 68 68 +0.0% 1.00x
DropWhileAnyCollectionLazy 89 89 +0.0% 1.00x
DropWhileAnySeqCRangeIter 23123 23143 +0.1% 1.00x (?)
DropWhileAnySeqCRangeIterLazy 90 90 +0.0% 1.00x
DropWhileAnySeqCntRange 63 63 +0.0% 1.00x
DropWhileAnySeqCntRangeLazy 90 90 +0.0% 1.00x
DropWhileAnySequence 7254 7246 -0.1% 1.00x (?)
DropWhileAnySequenceLazy 1932 1933 +0.1% 1.00x (?)
DropWhileArray 43 43 +0.0% 1.00x
DropWhileArrayLazy 82 82 +0.0% 1.00x
DropWhileCountableRange 19 19 +0.0% 1.00x
DropWhileCountableRangeLazy 70 70 +0.0% 1.00x
DropWhileSequence 1623 1622 -0.1% 1.00x (?)
DropWhileSequenceLazy 47 47 +0.0% 1.00x
EqualStringSubstring 389 389 +0.0% 1.00x
EqualSubstringString 389 389 +0.0% 1.00x
EqualSubstringSubstring 388 388 +0.0% 1.00x
EqualSubstringSubstringGenericEquatable 392 392 +0.0% 1.00x
ErrorHandling 2057 2077 +1.0% 0.99x (?)
FilterEvenUsingReduce 1299 1292 -0.5% 1.01x (?)
FilterEvenUsingReduceInto 145 145 +0.0% 1.00x
FrequenciesUsingReduce 7344 7360 +0.2% 1.00x (?)
FrequenciesUsingReduceInto 4128 4127 -0.0% 1.00x (?)
Hanoi 3576 3574 -0.1% 1.00x (?)
HashTest 1644 1641 -0.2% 1.00x (?)
Histogram 280 281 +0.4% 1.00x (?)
Integrate 249 249 +0.0% 1.00x
IterateData 1394 1394 +0.0% 1.00x
Join 381 382 +0.3% 1.00x (?)
LazilyFilteredArrays 64678 64755 +0.1% 1.00x (?)
LazilyFilteredRange 3616 3617 +0.0% 1.00x (?)
LessSubstringSubstring 389 389 +0.0% 1.00x
LessSubstringSubstringGenericComparable 389 389 +0.0% 1.00x
LinkedList 6981 6894 -1.2% 1.01x (?)
MapReduce 392 393 +0.3% 1.00x (?)
MapReduceAnyCollection 362 362 +0.0% 1.00x
MapReduceAnyCollectionShort 2138 2136 -0.1% 1.00x (?)
MapReduceClass 3064 3065 +0.0% 1.00x (?)
MapReduceClassShort 4545 4545 +0.0% 1.00x
MapReduceLazyCollection 13 13 +0.0% 1.00x
MapReduceLazyCollectionShort 36 36 +0.0% 1.00x
MapReduceLazySequence 90 90 +0.0% 1.00x
MapReduceSequence 441 440 -0.2% 1.00x (?)
MapReduceShort 2004 2004 +0.0% 1.00x
MapReduceShortString 21 21 +0.0% 1.00x
MapReduceString 100 100 +0.0% 1.00x
Memset 234 234 +0.0% 1.00x
MonteCarloE 10367 10364 -0.0% 1.00x (?)
MonteCarloPi 43931 43930 -0.0% 1.00x (?)
NSDictionaryCastToSwift 5461 5437 -0.4% 1.00x (?)
NSError 293 300 +2.4% 0.98x (?)
NSStringConversion 350 348 -0.6% 1.01x (?)
NopDeinit 22883 22883 +0.0% 1.00x
ObjectAllocation 178 178 +0.0% 1.00x
ObjectiveCBridgeFromNSArrayAnyObject 22760 22837 +0.3% 1.00x (?)
ObjectiveCBridgeFromNSArrayAnyObjectForced 3463 3462 -0.0% 1.00x (?)
ObjectiveCBridgeFromNSArrayAnyObjectToString 39831 39690 -0.4% 1.00x (?)
ObjectiveCBridgeFromNSArrayAnyObjectToStringForced 33302 33242 -0.2% 1.00x (?)
ObjectiveCBridgeFromNSDictionaryAnyObject 119872 122222 +2.0% 0.98x (?)
ObjectiveCBridgeFromNSDictionaryAnyObjectForced 5128 5126 -0.0% 1.00x (?)
ObjectiveCBridgeFromNSDictionaryAnyObjectToString 93380 92130 -1.3% 1.01x (?)
ObjectiveCBridgeFromNSDictionaryAnyObjectToStringForced 99137 98342 -0.8% 1.01x (?)
ObjectiveCBridgeFromNSSetAnyObject 64261 63847 -0.6% 1.01x (?)
ObjectiveCBridgeFromNSSetAnyObjectForced 4223 4224 +0.0% 1.00x (?)
ObjectiveCBridgeFromNSSetAnyObjectToString 67283 67203 -0.1% 1.00x (?)
ObjectiveCBridgeFromNSSetAnyObjectToStringForced 67734 67814 +0.1% 1.00x (?)
ObjectiveCBridgeFromNSString 986 986 +0.0% 1.00x
ObjectiveCBridgeFromNSStringForced 1853 1854 +0.1% 1.00x (?)
ObjectiveCBridgeStubDataAppend 3795 3828 +0.9% 0.99x (?)
ObjectiveCBridgeStubDateAccess 181 181 +0.0% 1.00x
ObjectiveCBridgeStubDateMutation 272 272 +0.0% 1.00x
ObjectiveCBridgeStubFromArrayOfNSString 24975 24776 -0.8% 1.01x (?)
ObjectiveCBridgeStubFromNSDate 3624 3607 -0.5% 1.00x (?)
ObjectiveCBridgeStubFromNSDateRef 4040 4042 +0.0% 1.00x (?)
ObjectiveCBridgeStubFromNSString 524 525 +0.2% 1.00x (?)
ObjectiveCBridgeStubFromNSStringRef 139 139 +0.0% 1.00x
ObjectiveCBridgeStubNSDataAppend 2387 2371 -0.7% 1.01x (?)
ObjectiveCBridgeStubNSDateMutationRef 12400 12384 -0.1% 1.00x (?)
ObjectiveCBridgeStubNSDateRefAccess 312 312 +0.0% 1.00x
ObjectiveCBridgeStubToArrayOfNSString 29195 29236 +0.1% 1.00x (?)
ObjectiveCBridgeStubToNSDate 14515 14260 -1.8% 1.02x (?)
ObjectiveCBridgeStubToNSDateRef 3288 3287 -0.0% 1.00x (?)
ObjectiveCBridgeStubToNSString 1509 1501 -0.5% 1.01x (?)
ObjectiveCBridgeStubToNSStringRef 109 109 +0.0% 1.00x
ObjectiveCBridgeStubURLAppendPath 211383 209554 -0.9% 1.01x (?)
ObjectiveCBridgeStubURLAppendPathRef 212705 214832 +1.0% 0.99x (?)
ObjectiveCBridgeToNSArray 29398 29390 -0.0% 1.00x (?)
ObjectiveCBridgeToNSDictionary 45114 44739 -0.8% 1.01x (?)
ObjectiveCBridgeToNSSet 39422 39155 -0.7% 1.01x (?)
ObjectiveCBridgeToNSString 1256 1257 +0.1% 1.00x (?)
ObserverClosure 2293 2291 -0.1% 1.00x (?)
ObserverForwarderStruct 1109 1122 +1.2% 0.99x (?)
ObserverPartiallyAppliedMethod 3767 3765 -0.1% 1.00x (?)
ObserverUnappliedMethod 2686 2659 -1.0% 1.01x (?)
OpenClose 3 3 +0.0% 1.00x
Phonebook 6193 6191 -0.0% 1.00x (?)
PolymorphicCalls 17 17 +0.0% 1.00x
PopFrontArray 1083 1083 +0.0% 1.00x
PopFrontArrayGeneric 1088 1087 -0.1% 1.00x (?)
PopFrontUnsafePointer 5064 5065 +0.0% 1.00x (?)
PrefixAnyCollection 55 55 +0.0% 1.00x
PrefixAnyCollectionLazy 75710 75671 -0.1% 1.00x (?)
PrefixAnySeqCRangeIter 22190 22193 +0.0% 1.00x (?)
PrefixAnySeqCRangeIterLazy 22426 22421 -0.0% 1.00x (?)
PrefixAnySeqCntRange 50 50 +0.0% 1.00x
PrefixAnySeqCntRangeLazy 50 50 +0.0% 1.00x
PrefixAnySequence 5432 5432 +0.0% 1.00x
PrefixAnySequenceLazy 5415 5414 -0.0% 1.00x (?)
PrefixArray 30 30 +0.0% 1.00x
PrefixArrayLazy 30 30 +0.0% 1.00x
PrefixCountableRange 18 18 +0.0% 1.00x
PrefixCountableRangeLazy 18 18 +0.0% 1.00x
PrefixSequence 1515 1516 +0.1% 1.00x (?)
PrefixSequenceLazy 1459 1459 +0.0% 1.00x
PrefixWhileAnyCollection 93 93 +0.0% 1.00x
PrefixWhileAnyCollectionLazy 66 66 +0.0% 1.00x
PrefixWhileAnySeqCRangeIter 12879 12875 -0.0% 1.00x (?)
PrefixWhileAnySeqCRangeIterLazy 66 66 +0.0% 1.00x
PrefixWhileAnySeqCntRange 88 88 +0.0% 1.00x
PrefixWhileAnySeqCntRangeLazy 66 66 +0.0% 1.00x
PrefixWhileAnySequence 14317 14301 -0.1% 1.00x (?)
PrefixWhileAnySequenceLazy 1436 1436 +0.0% 1.00x
PrefixWhileArray 68 68 +0.0% 1.00x
PrefixWhileArrayLazy 37 37 +0.0% 1.00x
PrefixWhileCountableRange 29 29 +0.0% 1.00x
PrefixWhileSequence 362 362 +0.0% 1.00x
PrefixWhileSequenceLazy 28 28 +0.0% 1.00x
Prims 763 765 +0.3% 1.00x (?)
PrimsSplit 764 765 +0.1% 1.00x (?)
ProtocolDispatch 3030 3030 +0.0% 1.00x
ProtocolDispatch2 170 170 +0.0% 1.00x
RC4 158 158 +0.0% 1.00x
RGBHistogram 2150 2142 -0.4% 1.00x (?)
RGBHistogramOfObjects 23352 23322 -0.1% 1.00x (?)
RangeAssignment 372 372 +0.0% 1.00x
RecursiveOwnedParameter 2312 2312 +0.0% 1.00x
ReversedArray 46 46 +0.0% 1.00x
ReversedBidirectional 29003 28987 -0.1% 1.00x (?)
ReversedDictionary 106 107 +0.9% 0.99x (?)
SetExclusiveOr 2828 2813 -0.5% 1.01x (?)
SetExclusiveOr_OfObjects 8233 8248 +0.2% 1.00x (?)
SetIntersect 266 265 -0.4% 1.00x (?)
SetIntersect_OfObjects 1722 1718 -0.2% 1.00x (?)
SetIsSubsetOf 293 293 +0.0% 1.00x
SetIsSubsetOf_OfObjects 368 375 +1.9% 0.98x
SetUnion 2673 2668 -0.2% 1.00x (?)
SetUnion_OfObjects 6923 6899 -0.3% 1.00x (?)
SevenBoom 1488 1516 +1.9% 0.98x (?)
Sim2DArray 348 348 +0.0% 1.00x
SortLargeExistentials 8510 8511 +0.0% 1.00x (?)
SortLettersInPlace 1137 1136 -0.1% 1.00x (?)
SortSortedStrings 909 911 +0.2% 1.00x (?)
SortStrings 1697 1698 +0.1% 1.00x (?)
SortStringsUnicode 8353 8350 -0.0% 1.00x (?)
StackPromo 22689 22679 -0.0% 1.00x (?)
StaticArray 5 5 +0.0% 1.00x
StrComplexWalk 1587 1588 +0.1% 1.00x (?)
StrToInt 1914 1913 -0.1% 1.00x (?)
StringAdder 3507 3510 +0.1% 1.00x (?)
StringBuilder 994 1008 +1.4% 0.99x (?)
StringBuilderLong 913 919 +0.7% 0.99x (?)
StringEdits 136951 136836 -0.1% 1.00x (?)
StringEnumRawValueInitialization 839 840 +0.1% 1.00x (?)
StringEqualPointerComparison 394 394 +0.0% 1.00x
StringFromLongWholeSubstring 177 177 +0.0% 1.00x
StringFromLongWholeSubstringGeneric 23 23 +0.0% 1.00x
StringHasPrefix 9 9 +0.0% 1.00x
StringHasPrefixUnicode 15069 15063 -0.0% 1.00x (?)
StringHasSuffix 9 9 +0.0% 1.00x
StringHasSuffixUnicode 61633 61613 -0.0% 1.00x (?)
StringInterpolation 10897 10905 +0.1% 1.00x (?)
StringMatch 7287 7289 +0.0% 1.00x (?)
StringUTF16Builder 1862 1873 +0.6% 0.99x (?)
StringWalk 1491 1490 -0.1% 1.00x (?)
StringWithCString 60914 60916 +0.0% 1.00x (?)
SubstringComparable 1619 1619 +0.0% 1.00x
SubstringEqualString 1459 1459 +0.0% 1.00x
SubstringEquatable 3719 3718 -0.0% 1.00x (?)
SubstringFromLongString 10 10 +0.0% 1.00x
SubstringFromLongStringGeneric 62 62 +0.0% 1.00x
SuffixAnyCollection 21 21 +0.0% 1.00x
SuffixAnyCollectionLazy 25191 25171 -0.1% 1.00x (?)
SuffixAnySeqCRangeIter 5033 5032 -0.0% 1.00x (?)
SuffixAnySeqCRangeIterLazy 5042 5038 -0.1% 1.00x (?)
SuffixAnySeqCntRange 16 16 +0.0% 1.00x
SuffixAnySeqCntRangeLazy 16 16 +0.0% 1.00x
SuffixAnySequence 6708 6698 -0.1% 1.00x (?)
SuffixAnySequenceLazy 6714 6710 -0.1% 1.00x (?)
SuffixArray 10 10 +0.0% 1.00x
SuffixArrayLazy 10 10 +0.0% 1.00x
SuffixCountableRange 6 6 +0.0% 1.00x
SuffixCountableRangeLazy 6 6 +0.0% 1.00x
SuffixSequence 4682 4683 +0.0% 1.00x (?)
SuffixSequenceLazy 4680 4680 +0.0% 1.00x
SumUsingReduce 97 97 +0.0% 1.00x
SumUsingReduceInto 97 97 +0.0% 1.00x
SuperChars 84295 84435 +0.2% 1.00x (?)
TwoSum 941 941 +0.0% 1.00x
TypeFlood 0 0 +0.0% 1.00x
UTF8Decode 254 254 +0.0% 1.00x
Walsh 396 396 +0.0% 1.00x
XorLoop 347 347 +0.0% 1.00x
accessGlobal 3 3 +0.0% 1.00x
accessInMatSet 18 18 +0.0% 1.00x
accessIndependent 2 2 +0.0% 1.00x

Unoptimized (Onone)

Regression (1)
TEST OLD NEW DELTA SPEEDUP
DropFirstArrayLazy 44704 47124 +5.4% 0.95x (?)
No Changes (328)
TEST OLD NEW DELTA SPEEDUP
AngryPhonebook 4953 4994 +0.8% 0.99x (?)
AnyHashableWithAClass 85309 87708 +2.8% 0.97x (?)
Array2D 635776 635958 +0.0% 1.00x (?)
ArrayAppend 4190 4192 +0.0% 1.00x (?)
ArrayAppendArrayOfInt 652 652 +0.0% 1.00x
ArrayAppendAscii 54123 54132 +0.0% 1.00x (?)
ArrayAppendFromGeneric 655 655 +0.0% 1.00x
ArrayAppendGenericStructs 1306 1291 -1.1% 1.01x (?)
ArrayAppendLatin1 82422 81944 -0.6% 1.01x (?)
ArrayAppendLazyMap 227970 227985 +0.0% 1.00x (?)
ArrayAppendOptionals 1297 1303 +0.5% 1.00x (?)
ArrayAppendRepeatCol 233637 233690 +0.0% 1.00x (?)
ArrayAppendReserved 3907 3911 +0.1% 1.00x (?)
ArrayAppendSequence 77375 77327 -0.1% 1.00x (?)
ArrayAppendStrings 15272 15264 -0.1% 1.00x (?)
ArrayAppendToFromGeneric 655 655 +0.0% 1.00x
ArrayAppendToGeneric 657 657 +0.0% 1.00x
ArrayAppendUTF16 77699 77693 -0.0% 1.00x (?)
ArrayInClass 6328 6329 +0.0% 1.00x (?)
ArrayLiteral 1748 1748 +0.0% 1.00x
ArrayOfGenericPOD 1292 1292 +0.0% 1.00x
ArrayOfGenericRef 10028 10048 +0.2% 1.00x (?)
ArrayOfPOD 791 791 +0.0% 1.00x
ArrayOfRef 9256 9285 +0.3% 1.00x (?)
ArrayPlusEqualArrayOfInt 654 654 +0.0% 1.00x
ArrayPlusEqualFiveElementCollection 305113 305416 +0.1% 1.00x (?)
ArrayPlusEqualSingleElementCollection 302641 302478 -0.1% 1.00x (?)
ArrayPlusEqualThreeElements 11166 11168 +0.0% 1.00x (?)
ArraySubscript 85289 85327 +0.0% 1.00x (?)
ArrayValueProp 3597 3597 +0.0% 1.00x
ArrayValueProp2 18816 18819 +0.0% 1.00x (?)
ArrayValueProp3 4060 4060 +0.0% 1.00x
ArrayValueProp4 4006 4009 +0.1% 1.00x (?)
BitCount 1633 1630 -0.2% 1.00x (?)
ByteSwap 4023 4034 +0.3% 1.00x (?)
CStringLongAscii 4759 4769 +0.2% 1.00x (?)
CStringLongNonAscii 2393 2391 -0.1% 1.00x (?)
CStringShortAscii 8780 8791 +0.1% 1.00x (?)
Calculator 1165 1164 -0.1% 1.00x (?)
CaptureProp 125553 125579 +0.0% 1.00x (?)
CharIndexing_ascii_unicodeScalars 477801 477340 -0.1% 1.00x (?)
CharIndexing_ascii_unicodeScalars_Backwards 517524 517641 +0.0% 1.00x (?)
CharIndexing_chinese_unicodeScalars 367002 366886 -0.0% 1.00x (?)
CharIndexing_chinese_unicodeScalars_Backwards 392914 391907 -0.3% 1.00x (?)
CharIndexing_japanese_unicodeScalars 582689 582554 -0.0% 1.00x (?)
CharIndexing_japanese_unicodeScalars_Backwards 618484 619335 +0.1% 1.00x (?)
CharIndexing_korean_unicodeScalars 462858 462922 +0.0% 1.00x (?)
CharIndexing_korean_unicodeScalars_Backwards 501291 501734 +0.1% 1.00x (?)
CharIndexing_punctuatedJapanese_unicodeScalars 82153 82158 +0.0% 1.00x (?)
CharIndexing_punctuatedJapanese_unicodeScalars_Backwards 90155 90110 -0.0% 1.00x (?)
CharIndexing_punctuated_unicodeScalars 104564 104583 +0.0% 1.00x (?)
CharIndexing_punctuated_unicodeScalars_Backwards 114326 114312 -0.0% 1.00x (?)
CharIndexing_russian_unicodeScalars 397137 398289 +0.3% 1.00x (?)
CharIndexing_russian_unicodeScalars_Backwards 430293 430238 -0.0% 1.00x (?)
CharIndexing_tweet_unicodeScalars 945933 945923 -0.0% 1.00x (?)
CharIndexing_tweet_unicodeScalars_Backwards 1026110 1025823 -0.0% 1.00x (?)
CharIndexing_utf16_unicodeScalars 528525 527336 -0.2% 1.00x
CharIndexing_utf16_unicodeScalars_Backwards 569972 569931 -0.0% 1.00x (?)
CharIteration_ascii_unicodeScalars 184177 184199 +0.0% 1.00x (?)
CharIteration_ascii_unicodeScalars_Backwards 318085 318070 -0.0% 1.00x (?)
CharIteration_chinese_unicodeScalars 138981 139046 +0.0% 1.00x (?)
CharIteration_chinese_unicodeScalars_Backwards 241763 241852 +0.0% 1.00x (?)
CharIteration_japanese_unicodeScalars 220409 220399 -0.0% 1.00x (?)
CharIteration_japanese_unicodeScalars_Backwards 386895 386970 +0.0% 1.00x (?)
CharIteration_korean_unicodeScalars 178593 178611 +0.0% 1.00x (?)
CharIteration_korean_unicodeScalars_Backwards 307704 307794 +0.0% 1.00x (?)
CharIteration_punctuatedJapanese_unicodeScalars 33000 32999 -0.0% 1.00x (?)
CharIteration_punctuatedJapanese_unicodeScalars_Backwards 56165 56168 +0.0% 1.00x (?)
CharIteration_punctuated_unicodeScalars 41203 41173 -0.1% 1.00x (?)
CharIteration_punctuated_unicodeScalars_Backwards 71269 71290 +0.0% 1.00x (?)
CharIteration_russian_unicodeScalars 152762 152773 +0.0% 1.00x (?)
CharIteration_russian_unicodeScalars_Backwards 263064 263032 -0.0% 1.00x (?)
CharIteration_tweet_unicodeScalars 364670 364408 -0.1% 1.00x (?)
CharIteration_tweet_unicodeScalars_Backwards 628544 628062 -0.1% 1.00x (?)
CharIteration_utf16_unicodeScalars 202869 202871 +0.0% 1.00x (?)
CharIteration_utf16_unicodeScalars_Backwards 396890 397323 +0.1% 1.00x (?)
CharacterLiteralsLarge 6186 6170 -0.3% 1.00x (?)
CharacterLiteralsSmall 724 723 -0.1% 1.00x (?)
Chars 50452 50453 +0.0% 1.00x (?)
ClassArrayGetter 997 999 +0.2% 1.00x (?)
DeadArray 114155 114229 +0.1% 1.00x (?)
Dictionary 3046 3047 +0.0% 1.00x (?)
Dictionary2 3457 3459 +0.1% 1.00x (?)
Dictionary2OfObjects 6037 6037 +0.0% 1.00x
Dictionary3 1311 1315 +0.3% 1.00x (?)
Dictionary3OfObjects 2289 2289 +0.0% 1.00x
DictionaryBridge 2643 2669 +1.0% 0.99x (?)
DictionaryGroup 5480 5437 -0.8% 1.01x (?)
DictionaryGroupOfObjects 8238 8242 +0.0% 1.00x (?)
DictionaryLiteral 8591 8591 +0.0% 1.00x
DictionaryOfObjects 6593 6567 -0.4% 1.00x (?)
DictionaryRemove 21574 21586 +0.1% 1.00x (?)
DictionaryRemoveOfObjects 59054 59383 +0.6% 0.99x (?)
DictionarySwap 5339 5337 -0.0% 1.00x (?)
DictionarySwapOfObjects 23205 23035 -0.7% 1.01x (?)
DropFirstAnyCollection 20478 20472 -0.0% 1.00x (?)
DropFirstAnyCollectionLazy 143822 143924 +0.1% 1.00x (?)
DropFirstAnySeqCRangeIter 30811 30815 +0.0% 1.00x (?)
DropFirstAnySeqCRangeIterLazy 31022 31025 +0.0% 1.00x (?)
DropFirstAnySeqCntRange 20365 20365 +0.0% 1.00x
DropFirstAnySeqCntRangeLazy 20254 20249 -0.0% 1.00x (?)
DropFirstAnySequence 15828 15826 -0.0% 1.00x (?)
DropFirstAnySequenceLazy 16012 16006 -0.0% 1.00x (?)
DropFirstArray 6177 6177 +0.0% 1.00x
DropFirstCountableRange 340 340 +0.0% 1.00x
DropFirstCountableRangeLazy 39917 39885 -0.1% 1.00x (?)
DropFirstSequence 14641 14641 +0.0% 1.00x
DropFirstSequenceLazy 15120 15127 +0.0% 1.00x (?)
DropLastAnyCollection 6840 6840 +0.0% 1.00x
DropLastAnyCollectionLazy 48060 47825 -0.5% 1.00x (?)
DropLastAnySeqCRangeIter 47518 47455 -0.1% 1.00x (?)
DropLastAnySeqCRangeIterLazy 47338 47333 -0.0% 1.00x (?)
DropLastAnySeqCntRange 6842 6841 -0.0% 1.00x (?)
DropLastAnySeqCntRangeLazy 6839 6839 +0.0% 1.00x
DropLastAnySequence 33582 33569 -0.0% 1.00x (?)
DropLastAnySequenceLazy 33658 33660 +0.0% 1.00x (?)
DropLastArray 2119 2119 +0.0% 1.00x
DropLastArrayLazy 15727 15723 -0.0% 1.00x (?)
DropLastCountableRange 119 119 +0.0% 1.00x
DropLastCountableRangeLazy 13380 13376 -0.0% 1.00x (?)
DropLastSequence 33429 33503 +0.2% 1.00x (?)
DropLastSequenceLazy 33224 33215 -0.0% 1.00x (?)
DropWhileAnyCollection 26767 26769 +0.0% 1.00x (?)
DropWhileAnyCollectionLazy 28962 28976 +0.0% 1.00x (?)
DropWhileAnySeqCRangeIter 32915 32908 -0.0% 1.00x (?)
DropWhileAnySeqCRangeIterLazy 28921 28922 +0.0% 1.00x (?)
DropWhileAnySeqCntRange 26418 26462 +0.2% 1.00x
DropWhileAnySeqCntRangeLazy 28855 28852 -0.0% 1.00x (?)
DropWhileAnySequence 18705 18709 +0.0% 1.00x (?)
DropWhileAnySequenceLazy 15115 15101 -0.1% 1.00x (?)
DropWhileArray 9996 9997 +0.0% 1.00x (?)
DropWhileArrayLazy 17316 17319 +0.0% 1.00x (?)
DropWhileCountableRange 6573 6570 -0.0% 1.00x (?)
DropWhileCountableRangeLazy 28137 28140 +0.0% 1.00x (?)
DropWhileSequence 17840 17844 +0.0% 1.00x (?)
DropWhileSequenceLazy 13716 13715 -0.0% 1.00x (?)
EqualStringSubstring 676 676 +0.0% 1.00x
EqualSubstringString 675 675 +0.0% 1.00x
EqualSubstringSubstring 790 790 +0.0% 1.00x
EqualSubstringSubstringGenericEquatable 421 421 +0.0% 1.00x
ErrorHandling 6798 6929 +1.9% 0.98x (?)
FilterEvenUsingReduce 4299 4301 +0.0% 1.00x (?)
FilterEvenUsingReduceInto 2491 2489 -0.1% 1.00x (?)
FrequenciesUsingReduce 15844 15968 +0.8% 0.99x (?)
FrequenciesUsingReduceInto 8939 8882 -0.6% 1.01x (?)
Hanoi 19123 19147 +0.1% 1.00x
HashTest 17229 17210 -0.1% 1.00x (?)
Histogram 8835 8822 -0.1% 1.00x (?)
Integrate 698 699 +0.1% 1.00x (?)
IterateData 13407 13407 +0.0% 1.00x
Join 1505 1506 +0.1% 1.00x (?)
LazilyFilteredArrays 1724566 1725036 +0.0% 1.00x (?)
LazilyFilteredRange 708452 708466 +0.0% 1.00x (?)
LessSubstringSubstring 791 793 +0.3% 1.00x (?)
LessSubstringSubstringGenericComparable 445 445 +0.0% 1.00x
LinkedList 40368 40362 -0.0% 1.00x (?)
MapReduce 38488 38503 +0.0% 1.00x (?)
MapReduceAnyCollection 38485 38502 +0.0% 1.00x (?)
MapReduceAnyCollectionShort 51439 51527 +0.2% 1.00x (?)
MapReduceClass 43878 43876 -0.0% 1.00x (?)
MapReduceClassShort 55630 56148 +0.9% 0.99x (?)
MapReduceLazyCollection 34500 34508 +0.0% 1.00x (?)
MapReduceLazyCollectionShort 45704 45690 -0.0% 1.00x (?)
MapReduceLazySequence 29805 29940 +0.5% 1.00x (?)
MapReduceSequence 45345 45365 +0.0% 1.00x (?)
MapReduceShort 50725 50724 -0.0% 1.00x (?)
MapReduceShortString 282 279 -1.1% 1.01x (?)
MapReduceString 2629 2630 +0.0% 1.00x (?)
Memset 45204 45204 +0.0% 1.00x
MonteCarloE 948779 947426 -0.1% 1.00x (?)
MonteCarloPi 4077842 4076951 -0.0% 1.00x (?)
NSDictionaryCastToSwift 6663 6603 -0.9% 1.01x (?)
NSError 734 733 -0.1% 1.00x (?)
NSStringConversion 391 390 -0.3% 1.00x (?)
NopDeinit 171478 170506 -0.6% 1.01x (?)
ObjectAllocation 1464 1461 -0.2% 1.00x (?)
ObjectiveCBridgeFromNSArrayAnyObject 25047 25114 +0.3% 1.00x (?)
ObjectiveCBridgeFromNSArrayAnyObjectForced 6778 6784 +0.1% 1.00x (?)
ObjectiveCBridgeFromNSArrayAnyObjectToString 40711 41029 +0.8% 0.99x (?)
ObjectiveCBridgeFromNSArrayAnyObjectToStringForced 34923 34334 -1.7% 1.02x (?)
ObjectiveCBridgeFromNSDictionaryAnyObject 122392 122927 +0.4% 1.00x (?)
ObjectiveCBridgeFromNSDictionaryAnyObjectForced 7321 7701 +5.2% 0.95x (?)
ObjectiveCBridgeFromNSDictionaryAnyObjectToString 96787 96684 -0.1% 1.00x (?)
ObjectiveCBridgeFromNSDictionaryAnyObjectToStringForced 105621 101872 -3.5% 1.04x (?)
ObjectiveCBridgeFromNSSetAnyObject 69044 69185 +0.2% 1.00x (?)
ObjectiveCBridgeFromNSSetAnyObjectForced 7666 7643 -0.3% 1.00x (?)
ObjectiveCBridgeFromNSSetAnyObjectToString 73471 72986 -0.7% 1.01x (?)
ObjectiveCBridgeFromNSSetAnyObjectToStringForced 73440 73236 -0.3% 1.00x (?)
ObjectiveCBridgeFromNSString 3964 3967 +0.1% 1.00x (?)
ObjectiveCBridgeFromNSStringForced 2219 2220 +0.0% 1.00x (?)
ObjectiveCBridgeStubDataAppend 4355 4352 -0.1% 1.00x (?)
ObjectiveCBridgeStubDateAccess 1029 1029 +0.0% 1.00x
ObjectiveCBridgeStubDateMutation 489 489 +0.0% 1.00x
ObjectiveCBridgeStubFromArrayOfNSString 25140 25356 +0.9% 0.99x (?)
ObjectiveCBridgeStubFromNSDate 4183 4179 -0.1% 1.00x (?)
ObjectiveCBridgeStubFromNSDateRef 4431 4431 +0.0% 1.00x
ObjectiveCBridgeStubFromNSString 556 556 +0.0% 1.00x
ObjectiveCBridgeStubFromNSStringRef 181 181 +0.0% 1.00x
ObjectiveCBridgeStubNSDataAppend 2800 2769 -1.1% 1.01x (?)
ObjectiveCBridgeStubNSDateMutationRef 15801 16007 +1.3% 0.99x (?)
ObjectiveCBridgeStubNSDateRefAccess 1219 1219 +0.0% 1.00x
ObjectiveCBridgeStubToArrayOfNSString 29288 29610 +1.1% 0.99x (?)
ObjectiveCBridgeStubToNSDate 15363 14918 -2.9% 1.03x (?)
ObjectiveCBridgeStubToNSDateRef 3305 3341 +1.1% 0.99x (?)
ObjectiveCBridgeStubToNSString 1556 1532 -1.5% 1.02x (?)
ObjectiveCBridgeStubToNSStringRef 155 155 +0.0% 1.00x
ObjectiveCBridgeStubURLAppendPath 213806 214815 +0.5% 1.00x (?)
ObjectiveCBridgeStubURLAppendPathRef 217282 217781 +0.2% 1.00x (?)
ObjectiveCBridgeToNSArray 29695 29662 -0.1% 1.00x (?)
ObjectiveCBridgeToNSDictionary 46762 46249 -1.1% 1.01x (?)
ObjectiveCBridgeToNSSet 40135 40269 +0.3% 1.00x (?)
ObjectiveCBridgeToNSString 1309 1312 +0.2% 1.00x (?)
ObserverClosure 6926 6923 -0.0% 1.00x (?)
ObserverForwarderStruct 5120 5102 -0.4% 1.00x (?)
ObserverPartiallyAppliedMethod 8367 8398 +0.4% 1.00x (?)
ObserverUnappliedMethod 8770 8769 -0.0% 1.00x (?)
OpenClose 394 394 +0.0% 1.00x
Phonebook 21861 21858 -0.0% 1.00x (?)
PolymorphicCalls 5167 5178 +0.2% 1.00x (?)
PopFrontArray 10095 10093 -0.0% 1.00x (?)
PopFrontArrayGeneric 9061 9059 -0.0% 1.00x (?)
PopFrontUnsafePointer 6649 6660 +0.2% 1.00x (?)
PrefixAnyCollection 20470 20473 +0.0% 1.00x (?)
PrefixAnyCollectionLazy 143974 143730 -0.2% 1.00x (?)
PrefixAnySeqCRangeIter 24568 24583 +0.1% 1.00x (?)
PrefixAnySeqCRangeIterLazy 24692 24564 -0.5% 1.01x (?)
PrefixAnySeqCntRange 20338 20338 +0.0% 1.00x
PrefixAnySeqCntRangeLazy 20316 20328 +0.1% 1.00x (?)
PrefixAnySequence 12902 12924 +0.2% 1.00x (?)
PrefixAnySequenceLazy 13216 13219 +0.0% 1.00x (?)
PrefixArray 6250 6251 +0.0% 1.00x (?)
PrefixArrayLazy 44871 47143 +5.1% 0.95x (?)
PrefixCountableRange 340 340 +0.0% 1.00x
PrefixCountableRangeLazy 39819 39816 -0.0% 1.00x (?)
PrefixSequence 11794 11793 -0.0% 1.00x (?)
PrefixSequenceLazy 11923 11924 +0.0% 1.00x (?)
PrefixWhileAnyCollection 38889 38887 -0.0% 1.00x (?)
PrefixWhileAnyCollectionLazy 23896 23892 -0.0% 1.00x (?)
PrefixWhileAnySeqCRangeIter 42709 42772 +0.1% 1.00x (?)
PrefixWhileAnySeqCRangeIterLazy 23600 23606 +0.0% 1.00x (?)
PrefixWhileAnySeqCntRange 38886 38894 +0.0% 1.00x (?)
PrefixWhileAnySeqCntRangeLazy 23728 23725 -0.0% 1.00x (?)
PrefixWhileAnySequence 32716 32719 +0.0% 1.00x (?)
PrefixWhileAnySequenceLazy 13347 13465 +0.9% 0.99x (?)
PrefixWhileArray 17304 17302 -0.0% 1.00x (?)
PrefixWhileArrayLazy 15226 15234 +0.1% 1.00x (?)
PrefixWhileCountableRange 19056 19053 -0.0% 1.00x (?)
PrefixWhileCountableRangeLazy 23131 23132 +0.0% 1.00x (?)
PrefixWhileSequence 31621 31618 -0.0% 1.00x (?)
PrefixWhileSequenceLazy 12404 12405 +0.0% 1.00x (?)
Prims 10536 10538 +0.0% 1.00x (?)
PrimsSplit 10520 10548 +0.3% 1.00x (?)
ProtocolDispatch 7577 7577 +0.0% 1.00x
ProtocolDispatch2 501 501 +0.0% 1.00x
RC4 18559 18609 +0.3% 1.00x (?)
RGBHistogram 33833 33740 -0.3% 1.00x (?)
RGBHistogramOfObjects 105444 105508 +0.1% 1.00x (?)
RangeAssignment 5768 5758 -0.2% 1.00x (?)
RecursiveOwnedParameter 11074 11074 +0.0% 1.00x
ReversedArray 44124 44050 -0.2% 1.00x (?)
ReversedBidirectional 75267 75395 +0.2% 1.00x (?)
ReversedDictionary 29506 29496 -0.0% 1.00x (?)
SetExclusiveOr 22919 22934 +0.1% 1.00x (?)
SetExclusiveOr_OfObjects 48137 48112 -0.1% 1.00x (?)
SetIntersect 12693 12699 +0.0% 1.00x (?)
SetIntersect_OfObjects 12594 12595 +0.0% 1.00x (?)
SetIsSubsetOf 1884 1885 +0.1% 1.00x (?)
SetIsSubsetOf_OfObjects 1570 1570 +0.0% 1.00x
SetUnion 11863 11877 +0.1% 1.00x (?)
SetUnion_OfObjects 33535 33514 -0.1% 1.00x (?)
SevenBoom 1698 1625 -4.3% 1.04x (?)
Sim2DArray 44080 44082 +0.0% 1.00x (?)
SortLargeExistentials 17514 17498 -0.1% 1.00x (?)
SortLettersInPlace 3056 3050 -0.2% 1.00x (?)
SortSortedStrings 1453 1452 -0.1% 1.00x (?)
SortStrings 2637 2641 +0.2% 1.00x (?)
SortStringsUnicode 9411 9412 +0.0% 1.00x (?)
StackPromo 101362 101191 -0.2% 1.00x (?)
StaticArray 4592 4581 -0.2% 1.00x (?)
StrComplexWalk 6971 6988 +0.2% 1.00x (?)
StrToInt 125269 125050 -0.2% 1.00x (?)
StringAdder 3774 3779 +0.1% 1.00x (?)
StringBuilder 7101 7086 -0.2% 1.00x (?)
StringBuilderLong 1092 1090 -0.2% 1.00x (?)
StringEdits 377961 379663 +0.5% 1.00x (?)
StringEnumRawValueInitialization 12620 12651 +0.2% 1.00x (?)
StringEqualPointerComparison 2574 2574 +0.0% 1.00x
StringFromLongWholeSubstring 210 210 +0.0% 1.00x
StringFromLongWholeSubstringGeneric 214 214 +0.0% 1.00x
StringHasPrefix 1758 1757 -0.1% 1.00x (?)
StringHasPrefixUnicode 16601 16663 +0.4% 1.00x (?)
StringHasSuffix 1912 1913 +0.1% 1.00x (?)
StringHasSuffixUnicode 63304 63277 -0.0% 1.00x (?)
StringInterpolation 13828 13778 -0.4% 1.00x (?)
StringMatch 34344 34335 -0.0% 1.00x (?)
StringUTF16Builder 7913 7925 +0.2% 1.00x (?)
StringWalk 12321 12333 +0.1% 1.00x (?)
StringWithCString 58237 58250 +0.0% 1.00x (?)
SubstringComparable 4340 4339 -0.0% 1.00x (?)
SubstringEqualString 6652 6637 -0.2% 1.00x (?)
SubstringEquatable 8461 8463 +0.0% 1.00x (?)
SubstringFromLongString 17 17 +0.0% 1.00x
SubstringFromLongStringGeneric 114 114 +0.0% 1.00x
SuffixAnyCollection 6808 6808 +0.0% 1.00x
SuffixAnyCollectionLazy 48055 48052 -0.0% 1.00x (?)
SuffixAnySeqCRangeIter 44632 44685 +0.1% 1.00x (?)
SuffixAnySeqCRangeIterLazy 45199 45192 -0.0% 1.00x (?)
SuffixAnySeqCntRange 6870 6870 +0.0% 1.00x
SuffixAnySeqCntRangeLazy 6819 6818 -0.0% 1.00x (?)
SuffixAnySequence 31139 31145 +0.0% 1.00x (?)
SuffixAnySequenceLazy 31174 31193 +0.1% 1.00x (?)
SuffixArray 2119 2119 +0.0% 1.00x
SuffixArrayLazy 15721 15721 +0.0% 1.00x
SuffixCountableRange 119 119 +0.0% 1.00x
SuffixCountableRangeLazy 13309 13315 +0.0% 1.00x (?)
SuffixSequence 30907 30905 -0.0% 1.00x (?)
SuffixSequenceLazy 30764 30761 -0.0% 1.00x (?)
SumUsingReduce 229698 229692 -0.0% 1.00x (?)
SumUsingReduceInto 225898 225950 +0.0% 1.00x (?)
SuperChars 192726 192797 +0.0% 1.00x (?)
TwoSum 4326 4332 +0.1% 1.00x (?)
TypeFlood 167 161 -3.6% 1.04x (?)
UTF8Decode 38140 38178 +0.1% 1.00x (?)
Walsh 12142 12137 -0.0% 1.00x (?)
XorLoop 23585 23585 +0.0% 1.00x
accessGlobal 183 183 +0.0% 1.00x
accessInMatSet 303 305 +0.7% 0.99x (?)
accessIndependent 123 123 +0.0% 1.00x
Hardware Overview
  Model Name: Mac mini
  Model Identifier: Macmini7,1
  Processor Name: Intel Core i5
  Processor Speed: 2.8 GHz
  Number of Processors: 1
  Total Number of Cores: 2
  L2 Cache (per Core): 256 KB
  L3 Cache: 3 MB
  Memory: 8 GB

@slavapestov slavapestov merged commit ee06256 into swiftlang:master Oct 4, 2017
@jrose-apple
Copy link
Contributor

This broke a number of bots, such as https://ci.swift.org/job/oss-swift_tools-R_stdlib-RD_test-simulator/324/. I'm not sure how this wasn't caught by "please test" but there's definitely a problem here.

@jrose-apple
Copy link
Contributor

Oops, hang on, sorry. Not this PR.

@jckarter
Copy link
Contributor

jckarter commented Oct 4, 2017

This looks like good progress, thanks @slavapestov! Ultimately I think we should also go as far as making the instructions just take a selector (in whatever form the @objc attribute uses). That would let us eventually replace dynamic_method[_br] completely with this, plus a responds_to_selector instruction, which should let us implement any ObjC interop needs without massive SIL surgery.

@gottesmm
Copy link
Contributor

gottesmm commented Oct 4, 2017 via email

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

Successfully merging this pull request may close these issues.

5 participants