Skip to content

Commit 95efdea

Browse files
authored
---
yaml --- r: 341466 b: refs/heads/rxwei-patch-1 c: dfb90b7 h: refs/heads/master
1 parent 35dbcb4 commit 95efdea

File tree

533 files changed

+105638
-39773
lines changed

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

533 files changed

+105638
-39773
lines changed

[refs]

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1015,7 +1015,7 @@ refs/tags/swift-DEVELOPMENT-SNAPSHOT-2018-08-18-a: b10b1fce14385faa6d44f6b933e95
10151015
refs/heads/rdar-43033749-fix-batch-mode-no-diags-swift-5.0-branch: a14e64eaad30de89f0f5f0b2a782eed7ecdcb255
10161016
refs/heads/revert-19006-error-bridging-integer-type: 8a9065a3696535305ea53fe9b71f91cbe6702019
10171017
refs/heads/revert-19050-revert-19006-error-bridging-integer-type: ecf752d54b05dd0a20f510f0bfa54a3fec3bcaca
1018-
refs/heads/rxwei-patch-1: 7adc12fd604bde486028a0aca0d28c362d0f05cb
1018+
refs/heads/rxwei-patch-1: dfb90b7e1c1b390c89f12098f69d7b5f962cbf16
10191019
refs/heads/shahmishal-patch-1: e58ec0f7488258d42bef51bc3e6d7b3dc74d7b2a
10201020
refs/heads/typelist-existential: 4046359efd541fb5c72d69a92eefc0a784df8f5e
10211021
refs/tags/swift-4.2-DEVELOPMENT-SNAPSHOT-2018-08-20-a: 4319ba09e4fb8650ee86061075c74a016b6baab9

branches/rxwei-patch-1/CMakeLists.txt

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1078,6 +1078,8 @@ endif()
10781078
if(SWIFT_BUILD_STDLIB)
10791079
add_subdirectory(stdlib)
10801080
else()
1081+
add_subdirectory(stdlib/public/legacy_layouts)
1082+
10811083
# Some tools (e.g. swift-reflection-dump) rely on a host swiftReflection, so
10821084
# ensure we build that when building tools.
10831085
if(SWIFT_INCLUDE_TOOLS)

branches/rxwei-patch-1/README.md

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -17,7 +17,7 @@
1717
|**[Debian 9.1 (Raspberry Pi)](https://github.com/apple/swift-community-hosted-continuous-integration/blob/master/nodes/armv7_debian_stretch.json)** | ARMv7 | [![Build Status](https://ci-external.swift.org/job/oss-swift-RA-linux-debian-9_1/lastCompletedBuild/badge/icon)](https://ci-external.swift.org/job/oss-swift-RA-linux-debian-9_1)|
1818
|**[Fedora 27](https://github.com/apple/swift-community-hosted-continuous-integration/blob/master/nodes/x86_64_fedora_27.json)** | x86_64 |[![Build Status](https://ci-external.swift.org/job/oss-swift-RA-linux-fedora-27/lastCompletedBuild/badge/icon)](https://ci-external.swift.org/job/oss-swift-RA-linux-fedora-27)|
1919
|**[Ubuntu 16.04](https://github.com/apple/swift-community-hosted-continuous-integration/blob/master/nodes/x86_64_ubuntu_16_04.json)** | x86_64 |[![Build Status](https://ci-external.swift.org/job/oss-swift-RA-linux-ubuntu-16.04/lastCompletedBuild/badge/icon)](https://ci-external.swift.org/job/oss-swift-RA-linux-ubuntu-16.04)|
20-
|**[Ubuntu 16.04 ](https://github.com/apple/swift-community-hosted-continuous-integration/blob/master/nodes/ppc64le_ubuntu_16_04.json)** | PPC64LE |[![Build Status](https://ci-external.swift.org/job/oss-swift-4.1-RA-linux-ubuntu-16.04-ppc64le/lastCompletedBuild/badge/icon)](https://ci-external.swift.org/job/oss-swift-4.1-RA-linux-ubuntu-16.04-ppc64le)|
20+
|**[Ubuntu 16.04 ](https://github.com/apple/swift-community-hosted-continuous-integration/blob/master/nodes/ppc64le_ubuntu_16_04.json)** | PPC64LE |[![Build Status](https://ci-external.swift.org/job/oss-swift-5.1-RA-linux-ubuntu-16.04-ppc64le/lastCompletedBuild/badge/icon)](https://ci-external.swift.org/job/oss-swift-5.1-RA-linux-ubuntu-16.04-ppc64le)|
2121
|**[Ubuntu 16.04 ](https://github.com/apple/swift-community-hosted-continuous-integration/blob/master/nodes/aarch64_ubuntu_16.04.json)** | AArch64 |[![Build Status](https://ci-external.swift.org/job/oss-swift-RA-linux-ubuntu-16.04-aarch64/lastCompletedBuild/badge/icon)](https://ci-external.swift.org/job/oss-swift-RA-linux-ubuntu-16.04-aarch64)|
2222
|**[Android](https://github.com/apple/swift-community-hosted-continuous-integration/blob/master/nodes/x86_64_ubuntu_16_04_LTS_android.json)** | ARMv7 |[![Build Status](https://ci-external.swift.org/job/oss-swift-RA-linux-ubuntu-16.04-android/lastCompletedBuild/badge/icon)](https://ci-external.swift.org/job/oss-swift-RA-linux-ubuntu-16.04-android)|
2323
|**[Android](https://github.com/apple/swift-community-hosted-continuous-integration/blob/master/nodes/x86_64_ubuntu_16_04_LTS_android.json)** | AArch64 |[![Build Status](https://ci-external.swift.org/job/oss-swift-RA-linux-ubuntu-16.04-android-arm64/lastCompletedBuild/badge/icon)](https://ci-external.swift.org/job/oss-swift-RA-linux-ubuntu-16.04-android-arm64)|

branches/rxwei-patch-1/benchmark/CMakeLists.txt

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -78,6 +78,7 @@ set(SWIFT_BENCH_MODULES
7878
single-source/DictionaryRemove
7979
single-source/DictionarySubscriptDefault
8080
single-source/DictionarySwap
81+
single-source/Diffing
8182
single-source/DropFirst
8283
single-source/DropLast
8384
single-source/DropWhile
@@ -104,6 +105,7 @@ set(SWIFT_BENCH_MODULES
104105
single-source/Memset
105106
single-source/MonteCarloE
106107
single-source/MonteCarloPi
108+
single-source/Myers
107109
single-source/NSDictionaryCastToSwift
108110
single-source/NSError
109111
single-source/NSStringConversion

branches/rxwei-patch-1/benchmark/single-source/AngryPhonebook.swift

Lines changed: 117 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -13,13 +13,60 @@
1313
// This test is based on single-source/Phonebook, with
1414
// to test uppercase and lowercase ASCII string fast paths.
1515
import TestsUtils
16-
import Foundation
1716

18-
public let AngryPhonebook = BenchmarkInfo(
19-
name: "AngryPhonebook",
20-
runFunction: run_AngryPhonebook,
21-
tags: [.validation, .api, .String],
22-
legacyFactor: 7)
17+
let t: [BenchmarkCategory] = [.validation, .api, .String]
18+
19+
public let AngryPhonebook = [
20+
BenchmarkInfo(
21+
name: "AngryPhonebook",
22+
runFunction: run_AngryPhonebook,
23+
tags: t,
24+
legacyFactor: 7),
25+
26+
// Small String Workloads
27+
BenchmarkInfo(
28+
name: "AngryPhonebook.ASCII.Small",
29+
runFunction: { angryPhonebook($0, ascii) },
30+
tags: t,
31+
setUpFunction: { blackHole(ascii) }),
32+
BenchmarkInfo(
33+
name: "AngryPhonebook.Strasse.Small",
34+
runFunction: { angryPhonebook($0, strasse) },
35+
tags: t,
36+
setUpFunction: { blackHole(strasse) }),
37+
BenchmarkInfo(
38+
name: "AngryPhonebook.Armenian.Small",
39+
runFunction: { angryPhonebook($0, armenian) },
40+
tags: t,
41+
setUpFunction: { blackHole(armenian) }),
42+
BenchmarkInfo(
43+
name: "AngryPhonebook.Cyrillic.Small",
44+
runFunction: { angryPhonebook($0, cyrillic) },
45+
tags: t,
46+
setUpFunction: { blackHole(cyrillic) }),
47+
48+
// Regular String Workloads
49+
BenchmarkInfo(
50+
name: "AngryPhonebook.ASCII",
51+
runFunction: { angryPhonebook($0, precomposed: longASCII) },
52+
tags: t,
53+
setUpFunction: { blackHole(longASCII) }),
54+
BenchmarkInfo(
55+
name: "AngryPhonebook.Strasse",
56+
runFunction: { angryPhonebook($0, precomposed: longStrasse) },
57+
tags: t,
58+
setUpFunction: { blackHole(longStrasse) }),
59+
BenchmarkInfo(
60+
name: "AngryPhonebook.Armenian",
61+
runFunction: { angryPhonebook($0, precomposed: longArmenian) },
62+
tags: t,
63+
setUpFunction: { blackHole(longArmenian) }),
64+
BenchmarkInfo(
65+
name: "AngryPhonebook.Cyrillic",
66+
runFunction: { angryPhonebook($0, precomposed: longCyrillic) },
67+
tags: t,
68+
setUpFunction: { blackHole(longCyrillic) })
69+
]
2370

2471
let words = [
2572
"James", "John", "Robert", "Michael", "William", "David", "Richard", "Joseph",
@@ -39,3 +86,67 @@ public func run_AngryPhonebook(_ N: Int) {
3986
}
4087
}
4188
}
89+
90+
// Workloads for various scripts. Always 20 names for 400 pairings.
91+
// To keep the performance of various scripts roughly comparable, aim for
92+
// a total length of approximately 120 characters.
93+
// E.g.: `ascii.joined(separator: "").count == 124`
94+
// Every name should fit in 15-bytes UTF-8 encoded, to excercise the small
95+
// string optimization.
96+
// E.g.: `armenian.allSatisfy { $0._guts.isSmall } == true`
97+
98+
// Workload Size Statistics
99+
// SMALL | UTF-8 | UTF-16 | REGULAR | UTF-8 | UTF-16
100+
// ---------|-------|--------|--------------|---------|--------
101+
// ascii | 124 B | 248 B | longASCII | 6158 B | 12316 B
102+
// strasse | 140 B | 240 B | longStrasse | 6798 B | 11996 B
103+
// armenian | 232 B | 232 B | longArmenian | 10478 B | 11676 B
104+
// cyrillic | 238 B | 238 B | longCyrillic | 10718 B | 11916 B
105+
106+
let ascii = Array(words.prefix(20))
107+
// Pathological case, uppercase: ß -> SS
108+
let strasse = Array(repeating: "Straße", count: 20)
109+
110+
let armenian = [
111+
"Արմեն", "Աննա", "Հարութ", "Միքայել", "Մարիա", "Դավիթ", "Վարդան",
112+
"Նարինե", "Տիգրան", "Տաթևիկ", "Թագուհի", "Թամարա", "Ազնաուր", "Գրիգոր",
113+
"Կոմիտաս", "Հայկ", "Գառնիկ", "Վահրամ", "Վահագն", "Գևորգ"]
114+
115+
let cyrillic = [
116+
"Ульяна", "Аркадий", "Аня", "Даниил", "Дмитрий", "Эдуард", "Юрій", "Давид",
117+
"Анна", "Дмитрий", "Евгений", "Борис", "Ксения", "Артур", "Аполлон",
118+
"Соломон", "Николай", "Кристи", "Надежда", "Спартак"]
119+
120+
/// Precompose the phonebook into one large string of comma separated names.
121+
func phonebook(_ names: [String]) -> String {
122+
names.map { firstName in
123+
names.map { lastName in
124+
firstName + " " + lastName
125+
}.joined(separator: ", ")
126+
}.joined(separator: ", ")
127+
}
128+
129+
let longASCII = phonebook(ascii)
130+
let longStrasse = phonebook(strasse)
131+
let longArmenian = phonebook(armenian)
132+
let longCyrillic = phonebook(cyrillic)
133+
134+
@inline(never)
135+
public func angryPhonebook(_ N: Int, _ names: [String]) {
136+
assert(names.count == 20)
137+
// Permute the names.
138+
for _ in 1...N {
139+
for firstname in names {
140+
for lastname in names {
141+
blackHole((firstname.uppercased(), lastname.lowercased()))
142+
}
143+
}
144+
}
145+
}
146+
147+
@inline(never)
148+
public func angryPhonebook(_ N: Int, precomposed names: String) {
149+
for _ in 1...N {
150+
blackHole((names.uppercased(), names.lowercased()))
151+
}
152+
}

branches/rxwei-patch-1/benchmark/single-source/BinaryFloatingPointConversionFromBinaryInteger.swift

Lines changed: 1 addition & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -13,7 +13,6 @@
1313
// This test checks performance of generic binary floating-point conversion from
1414
// a binary integer.
1515

16-
import Foundation
1716
import TestsUtils
1817

1918
#if swift(>=4.2)
@@ -110,7 +109,7 @@ extension MockBinaryInteger : BinaryInteger {
110109
var trailingZeroBitCount: Int {
111110
return _value.trailingZeroBitCount
112111
}
113-
112+
114113
func isMultiple(of other: MockBinaryInteger<T>) -> Bool {
115114
return _value.isMultiple(of: other._value)
116115
}
@@ -211,4 +210,3 @@ public func run_BinaryFloatingPointConversionFromBinaryInteger(_ N: Int) {
211210
}
212211

213212
#endif
214-

branches/rxwei-patch-1/benchmark/single-source/BinaryFloatingPointProperties.swift

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -10,7 +10,6 @@
1010
//
1111
//===----------------------------------------------------------------------===//
1212

13-
import Foundation
1413
import TestsUtils
1514

1615
public let BinaryFloatingPointPropertiesBinade = BenchmarkInfo(

branches/rxwei-patch-1/benchmark/single-source/BitCount.swift

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -13,7 +13,6 @@
1313
// This test checks performance of Swift bit count.
1414
// and mask operator.
1515
// rdar://problem/22151678
16-
import Foundation
1716
import TestsUtils
1817

1918
public let BitCount = BenchmarkInfo(

branches/rxwei-patch-1/benchmark/single-source/BucketSort.swift

Lines changed: 5 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -16,17 +16,16 @@
1616
// https://github.com/raywenderlich/swift-algorithm-club/tree/master/Bucket%20Sort
1717
//
1818
// It sorts an array of generic `SortableItem`s. If the type of `sortingAlgo`
19-
// is not known to the call site at line 90, the `sort` method can not be
19+
// is not known to the call site at line 89, the `sort` method can not be
2020
// specialized to integer array sorting, which will lead to a huge performance
2121
// loss. Since `SortingAlgorithm` and `InsertionSort` are declared to be
22-
// `public` and the lines 89-91 can not be inlined in `bucketSort` (due to
22+
// `public` and the lines 88-90 can not be inlined in `bucketSort` (due to
2323
// inlining heuristic limitations), compiler without ExistentialSpecializer
2424
// optimization can not achieve this feat. With ExistentialSpecializer which
2525
// enables generic specialization recursively in a call chain, we're able to
26-
// specialize line 90 for `InsertionSort` on integers.
26+
// specialize line 89 for `InsertionSort` on integers.
2727

2828
import TestsUtils
29-
import Foundation
3029

3130
public let BucketSort = BenchmarkInfo(
3231
name: "BucketSort",
@@ -117,7 +116,8 @@ let items: [Int] = {
117116
let buckets: [Bucket<Int>] = {
118117
let bucketCount = 10
119118
let maxValue = items.max()!.convertToInt()
120-
let maxCapacity = Int(ceil(Double(maxValue + 1) / Double(bucketCount)))
119+
let maxCapacity = Int(
120+
(Double(maxValue + 1) / Double(bucketCount)).rounded(.up))
121121
return (0..<bucketCount).map { _ in Bucket<Int>(capacity: maxCapacity) }
122122
}()
123123

branches/rxwei-patch-1/benchmark/single-source/ByteSwap.swift

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -13,7 +13,6 @@
1313
// This test checks performance of Swift byte swap.
1414
// rdar://problem/22151907
1515

16-
import Foundation
1716
import TestsUtils
1817

1918
public let ByteSwap = BenchmarkInfo(

branches/rxwei-patch-1/benchmark/single-source/CString.swift

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -13,6 +13,8 @@
1313
import TestsUtils
1414
#if os(Linux)
1515
import Glibc
16+
#elseif os(Windows)
17+
import MSVCRT
1618
#else
1719
import Darwin
1820
#endif

branches/rxwei-patch-1/benchmark/single-source/Calculator.swift

Lines changed: 0 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -11,7 +11,6 @@
1111
//===----------------------------------------------------------------------===//
1212

1313
import TestsUtils
14-
import Foundation
1514

1615
public let Calculator = BenchmarkInfo(
1716
name: "Calculator",
@@ -53,4 +52,3 @@ public func run_Calculator(_ N: Int) {
5352
}
5453
CheckResults(c == 0)
5554
}
56-

0 commit comments

Comments
 (0)