Commit Graph

1309 Commits

Author SHA1 Message Date
Dmitri Hrybenko
729266205d stdlib: mark Float.value as private
Swift SVN r20590
2014-07-26 19:48:03 +00:00
Dave Abrahams
7fcc484e30 [stdlib] Construct UnicodeScalar from UInt16/UInt8
Fixes <rdar://problem/17819254>

Swift SVN r20588
2014-07-26 05:12:24 +00:00
Dave Abrahams
b81c4b2dca Revert "[stdlib] Concise operators for advance(i, +/-n)"
This reverts r20561 until we've had a chance to discuss it in a design meeting

Swift SVN r20579
2014-07-25 23:52:38 +00:00
Dave Abrahams
96e9bfbe13 [stdlib] Fix Range trap test
We need to detect wrapping end indexes now

Swift SVN r20578
2014-07-25 23:50:33 +00:00
Dave Abrahams
92637e786b [stdlib] Integer index operations don't overflow
When an integer type T is used as an Index, there are always
bounds---more restrictive than the full range of T---against which we're
not able to check.  Overflows are not useful indicators of precondition
violations in this context.  Therefore, use masked arithmetic for
RandomAccessIndex conformance.

Performance changes of magnitude >= 5% are below.  Someone might want to
investigate why Fibonacci got 21% faster in -Ounchecked, since nothing
in this change should have removed checks from that build.  (That test
does seem particularly sensitive; see also <rdar://problem/17815767>
Adding three overloads to stdlib slows Fibonacci by 18-19%)

Fixes <rdar://problem/17780469> Integer ranges shouldn't use overflowing adds

====================`PrecommitBench_O`====================
````benchmark`|`baserun0`|`baserun1`|`optrun0`|`optrun1`|``delta`|`speedup`
````Ackermann`|``1428.00`|``1466.00`|`1661.00`|`1657.00`|`229.00`|``-13.8%`
`````ForLoops`|``2021.00`|``1986.00`|`1249.00`|`1255.00`|`737.00`|```59.0%`
`````````Hash`|``1038.00`|```979.00`|``898.00`|``922.00`|``81.00`|````9.0%`
`````````Life`|````63.00`|````63.00`|```60.00`|```61.00`|```3.00`|````5.0%`
```````Memset`|````55.00`|````54.00`|```42.00`|```42.00`|``12.00`|```28.6%`
``MonteCarloE`|``1243.00`|``1265.00`|``885.00`|``880.00`|`363.00`|```41.3%`
`MonteCarloPi`|```994.00`|``1004.00`|``613.00`|``605.00`|`389.00`|```64.3%`
````````NBody`|````45.00`|````45.00`|```42.00`|```43.00`|```3.00`|````7.1%`
````QuickSort`|```105.00`|```103.00`|```83.00`|```83.00`|``20.00`|```24.1%`
````R17315246`|``1080.00`|``1080.00`|``805.00`|``808.00`|`275.00`|```34.2%`
``````SmallPT`|``1008.00`|``1007.00`|``789.00`|``795.00`|`218.00`|```27.6%`
````````Walsh`|```136.00`|```136.00`|``129.00`|``130.00`|```7.00`|````5.4%`
====================`PrecommitBench_Ounchecked`====================
````benchmark`|`baserun0`|`baserun1`|`optrun0`|`optrun1`|``delta`|`speedup`
``Dictionary3`|``1060.00`|``1039.00`|``982.00`|`1029.00`|``57.00`|````5.8%`
````Fibonacci`|```842.00`|```848.00`|``694.00`|``694.00`|`148.00`|```21.3%`
```StringWalk`|```945.00`|```924.00`|``989.00`|``995.00`|``65.00`|```-6.6%`
====================`PrecommitBench_Onone`====================
````benchmark`|`baserun0`|`baserun1`|`optrun0`|`optrun1`|``delta`|`speedup`
`EditDistance`|``2086.00`|``1981.00`|`1492.00`|`1622.00`|`489.00`|```32.8%`
`````````Life`|``1256.00`|``1216.00`|`1110.00`|`1142.00`|`106.00`|````9.5%`
```````MatMul`|``1210.00`|``1245.00`|``705.00`|``705.00`|`505.00`|```71.6%`
````R17315246`|```205.00`|```209.00`|``195.00`|``200.00`|``10.00`|````5.1%`

Swift SVN r20576
2014-07-25 23:37:01 +00:00
Pete Cooper
16f6c73db9 Use unchecked arithmetic for offsets to HeapBuffer values and elements. If these were able to overflow then we'd have already failed in the initializer of the HeapBuffer
Performance numbers are being noisy, but overall there are some good wins.  The losses are the noisy ones unfortunately.

2Sum           ,        1273.00   ,                1292.00   ,        19.00   ,                -1.5%
Ackermann      ,        1423.00   ,                1663.00   ,        240.00  ,                -14.4%
ArrayLiteral   ,        913.00    ,                869.00    ,        44.00   ,                5.1%
Ary            ,        1278.00   ,                1278.00   ,        0.00    ,                0.0%
Ary2           ,        1667.00   ,                1656.00   ,        11.00   ,                0.7%
Ary3           ,        1418.00   ,                1380.00   ,        38.00   ,                2.8%
DeltaBlue      ,        2480.00   ,                2437.00   ,        43.00   ,                1.8%
Dictionary     ,        606.00    ,                594.00    ,        12.00   ,                2.0%
Dictionary2    ,        879.00    ,                862.00    ,        17.00   ,                2.0%
Dictionary3    ,        878.00    ,                871.00    ,        7.00    ,                0.8%
EditDistance   ,        1427.00   ,                1404.00   ,        23.00   ,                1.6%
Fibonacci      ,        1351.00   ,                1335.00   ,        16.00   ,                1.2%
ForLoops       ,        1978.00   ,                1976.00   ,        2.00    ,                0.1%
Forest         ,        1091.00   ,                1076.00   ,        15.00   ,                1.4%
GlobalClass    ,        1714.00   ,                1619.00   ,        95.00   ,                5.9%
Hash           ,        971.00    ,                915.00    ,        56.00   ,                6.1%
HeapSort       ,        1321.00   ,                1261.00   ,        60.00   ,                4.8%
Histogram      ,        1085.00   ,                1079.00   ,        6.00    ,                0.6%
Life           ,        67.00     ,                63.00     ,        4.00    ,                6.3%
LinkedList     ,        1586.00   ,                1535.00   ,        51.00   ,                3.3%
MatMul         ,        239.00    ,                240.00    ,        1.00    ,                -0.4%
Memset         ,        53.00     ,                53.00     ,        0.00    ,                0.0%
MonteCarloE    ,        1243.00   ,                1242.00   ,        1.00    ,                0.1%
MonteCarloPi   ,        993.00    ,                1010.00   ,        17.00   ,                -1.7%
NBody          ,        44.00     ,                43.00     ,        1.00    ,                2.3%
Phonebook      ,        1416.00   ,                1402.00   ,        14.00   ,                1.0%
PrimeNum       ,        347.00    ,                351.00    ,        4.00    ,                -1.1%
Prims          ,        1556.00   ,                1523.00   ,        33.00   ,                2.2%
QuickSort      ,        103.00    ,                101.00    ,        2.00    ,                2.0%
R17315246      ,        1080.00   ,                1076.00   ,        4.00    ,                0.4%
RC4            ,        26.00     ,                25.00     ,        1.00    ,                4.0%
RIPEMD         ,        798.00    ,                767.00    ,        31.00   ,                4.0%
Rectangles     ,        1008.00   ,                972.00    ,        36.00   ,                3.7%
SmallPT        ,        1004.00   ,                1040.00   ,        36.00   ,                -3.5%
StrToInt       ,        795.00    ,                815.00    ,        20.00   ,                -2.5%
StringBuilder  ,        795.00    ,                858.00    ,        63.00   ,                -7.3%
StringWalk     ,        1233.00   ,                1322.00   ,        89.00   ,                -6.7%
Totals         ,        38274.00  ,                38145.00  ,        129.00  ,                0.3%
Walsh          ,        135.00    ,                140.00    ,        5.00    ,                -3.6%

Swift SVN r20569
2014-07-25 22:49:24 +00:00
Dave Abrahams
71d8e16fbf [stdlib] bitwise assignments for NS_OPTIONS
Fixes <rdar://problem/17797711>

This is rather a kluge because of two other problems.  Having these
fixed would allow a cleaner solution:

<rdar://problem/17815538> synthesize an allZeros static var for
BitwiseOperationsType conformance of imported NS_OPTIONS

<rdar://problem/17815767> Adding three overloads to stdlib slows
Fibonacci by 18-19%

Swift SVN r20563
2014-07-25 22:05:08 +00:00
Dave Abrahams
b2ac0e32dd [stdlib] Concise operators for advance(i, +/-n)
Fixes <rdar://problem/17814560>.

Swift SVN r20561
2014-07-25 20:53:38 +00:00
Dave Abrahams
fedd70715d [stdlib] Add missing mode string to .gyb file
Swift SVN r20560
2014-07-25 20:53:36 +00:00
Dave Abrahams
7d30512409 [stdlib] Improved doc comments
Swift SVN r20557
2014-07-25 20:18:15 +00:00
Dmitri Hrybenko
9b1cf666c2 stdlib: add semantic requirements to the doc comments of Equatable and
Comparable


Swift SVN r20555
2014-07-25 18:43:46 +00:00
Dmitri Hrybenko
ed855afb68 stdlib/String: use the Unicode collation algorithm in String's and Character's conformance to Comparable
rdar://17498444


Swift SVN r20554
2014-07-25 18:32:36 +00:00
Dmitri Hrybenko
c52e9270b8 stdlib: fix grammar in doc comments
Swift SVN r20552
2014-07-25 18:28:01 +00:00
Dmitri Hrybenko
2470d2f439 stdlib: add doc comments for Equatable and Comparable
Swift SVN r20551
2014-07-25 18:21:51 +00:00
Chris Lattner
6d0934d33d Introduce a new 'renamed' modifier on unavailable attributes. This allows Xcode
to emit fixit's when we rename something, e.g.:

t.swift:6:9: error: 'float' has been renamed to Float
var y : float
        ^~~~~
        Float

Adopt this in the stdlib.



Swift SVN r20549
2014-07-25 18:00:37 +00:00
Dmitri Hrybenko
089fd8d6ec stdlib/String: rename the function in one more place, follow-up for
r20543

Swift SVN r20544
2014-07-25 14:55:26 +00:00
Dmitri Hrybenko
c44b42c7aa stdlib/String: add a test that shows that equality comparison of strings
is performed according to the deterministic Unicode collation algorithm,
which allows us to use the hash of the NFD form.

rdar://17498444

Swift SVN r20543
2014-07-25 14:31:07 +00:00
Dmitri Hrybenko
eff383932c stdlib/Character: add Hashable conformance
Swift SVN r20539
2014-07-25 10:32:00 +00:00
Dmitri Hrybenko
fbcbd2e118 stdlib/Hashable: add a doc comment about hashValue/equality comparison
consistency requirement

Swift SVN r20538
2014-07-25 10:31:44 +00:00
Dmitri Hrybenko
9302423c3d stdlib/Character: trap when trying to construct a Character from more
than one grapheme cluster

Swift SVN r20535
2014-07-25 10:06:18 +00:00
Dmitri Hrybenko
27cbb5a9d5 stdlib/String: change == to perform string comparison after NFD
normalization

There is still some obscure bug with != on NSString, probably caused by
an ill-thought overload somewhere.

Part of rdar://17498444

Swift SVN r20518
2014-07-24 21:36:01 +00:00
Dave Abrahams
e00e41af39 [stdlib] Remove String.compare()
This was added for benchmarking purposes, without the realization that
it conflicts with the NSString API we adopt when importing Foundation.
http://oleb.net/blog/2014/07/swift-strings/#comparing-strings describes
the problem.

Fixes <rdar://problem/17800504>

Swift SVN r20517
2014-07-24 21:29:48 +00:00
Dmitri Hrybenko
2324d843ec StdlibUnittest: demangle names in error output
Swift SVN r20515
2014-07-24 21:19:21 +00:00
Pete Cooper
b68de9d4c0 Update strideof in stdlib to call new strideof_nonzero.
This hides the call to max in the compiler and removes the control flow
associated with max.  The resulting -O3 performance is

2Sum           ,  1303.00   ,  1286.00   ,  17.00     ,        1.3%
Ackermann      ,  4077.00   ,  4498.00   ,  421.00    ,        -9.4%
DeltaBlue      ,  19473.00  ,  17265.00  ,  2208.00   ,        12.8%
Dictionary     ,  882.00    ,  817.00    ,  65.00     ,        8.0%
EditDistance   ,  1467.00   ,  1416.00   ,  51.00     ,        3.6%
ForLoops       ,  1998.00   ,  2014.00   ,  16.00     ,        -0.8%
Forest         ,  1125.00   ,  1055.00   ,  70.00     ,        6.6%
GlobalClass    ,  1633.00   ,  1640.00   ,  7.00      ,        -0.4%
Hash           ,  1634.00   ,  945.00    ,  689.00    ,        72.9%
Histogram      ,  1196.00   ,  1054.00   ,  142.00    ,        13.5%
Life           ,  71.00     ,  64.00     ,  7.00      ,        10.9%
LinkedList     ,  1573.00   ,  1573.00   ,  0.00      ,        0.0%
Memset         ,  5987.00   ,  273.00    ,  5714.00   ,        2093.0%
NBody          ,  208.00    ,  44.00     ,  164.00    ,        372.7%
Phonebook      ,  2193.00   ,  1486.00   ,  707.00    ,        47.6%
PrimeNum       ,  1093.00   ,  393.00    ,  700.00    ,        178.1%
Prims          ,  1710.00   ,  1712.00   ,  2.00      ,        -0.1%
QuickSort      ,  121.00    ,  112.00    ,  9.00      ,        8.0%
R17315246      ,  1109.00   ,  1273.00   ,  164.00    ,        -12.9%
RC4            ,  745.00    ,  63.00     ,  682.00    ,        1082.5%
Rectangles     ,  947.00    ,  1015.00   ,  68.00     ,        -6.7%
SmallPT        ,  1071.00   ,  1088.00   ,  17.00     ,        -1.6%
StringBuilder  ,  928.00    ,  799.00    ,  129.00    ,        16.1%
StringWalk     ,  1221.00   ,  1264.00   ,  43.00     ,        -3.4%
Totals         ,  54980.00  ,  43284.00  ,  11696.00  ,        27.0%
Walsh          ,  1215.00   ,  135.00    ,  1080.00   ,        800.0%

Swift SVN r20509
2014-07-24 18:44:42 +00:00
Pete Cooper
3590f4a896 Alignof can never return 0, so don't max against 1
Swift SVN r20507
2014-07-24 18:44:41 +00:00
Dmitri Hrybenko
c2adafc897 Revert "stdlib/String: change == to perform string comparison after NFD"
This breaks consistency between == comparison and hash value.

Swift SVN r20500
2014-07-24 17:28:40 +00:00
Dave Abrahams
4866705260 [stdlib] Fix typo in availability message
Swift SVN r20497
2014-07-24 17:15:15 +00:00
Dmitri Hrybenko
a3d5a8a0de stdlib/String: change == to perform string comparison after NFD
normalization

There is still some obscure bug with != on NSString, probably caused by
an ill-thought overload somewhere.

Part of rdar://17498444

Swift SVN r20495
2014-07-24 16:51:48 +00:00
Ben Langmuir
6742613a19 Swap an em dash for -- in a comment to satisfy the sourcekit tests
We're checking for ascii-only comments in the stdlib.  It kind of sucks
that we can't have nice things.

Swift SVN r20493
2014-07-24 16:00:04 +00:00
Doug Gregor
a6a3e48d1e Work around inability to deserialize local typealiases <rdar://problem/17795074>.
Swift SVN r20491
2014-07-24 15:53:38 +00:00
Doug Gregor
5fc8ac7fd1 Require the 'override' keyword for initializers that override designated initializers.
Swift SVN r20490
2014-07-24 15:38:33 +00:00
Dave Abrahams
a792eb68a4 [stdlib] release notes, @availability attributes
Swift SVN r20488
2014-07-24 13:17:39 +00:00
Dave Abrahams
d00e888d95 [stdlib] Rename reinterpretCast => unsafeBitCast
Also give unsafeBitCast an explicit type parameter.  So

  let x: T = reinterpretCast(y)

becomes

  let x = unsafeBitCast(y, T.self)

Swift SVN r20487
2014-07-24 13:17:36 +00:00
Dmitri Hrybenko
89420772a2 stdlib/String: move enough bridging machinery into the core standard
library so that core library can bridge a String to Objective-C

Part of rdar://17498444

Swift SVN r20485
2014-07-24 13:07:12 +00:00
Dmitri Hrybenko
297c0a78f4 stdlib: coding style
Swift SVN r20484
2014-07-24 13:07:07 +00:00
Dave Abrahams
304b4f33ae [stdlib] Sequence and Generator documentation detail
Front-loaded reference to trap() will become valid when
rdar://problem/17792445 is handled, shortly.

Fixes <rdar://problem/17392226>

Swift SVN r20483
2014-07-24 09:06:49 +00:00
Dmitri Hrybenko
d0369e650b stdlib: mark init(bitPattern:) @transparent, this should be a free abstraction
Swift SVN r20482
2014-07-24 08:26:26 +00:00
Dmitri Hrybenko
2d27594d4e stdlib: clarify the comment: "same value" -> "same numeric value"
Can not say "may not compare equal" because there is no mixed-type overload of ==.


Swift SVN r20481
2014-07-24 08:24:27 +00:00
Dave Abrahams
993c7e0bae [stdlib] Replace .toSigned()/.toUnsigned() methods
...because their semantics were unclear.  The new idiom is explicit
construction of the target type using the "bitPattern:" argument label:

    myInt.toUnsigned() => UInt(bitPattern: myInt)

Fixes <rdar://problem/17000821>

Swift SVN r20479
2014-07-24 08:07:07 +00:00
Mark Lacey
c69ea64c0d Add specializations of prefix/postfix increment/decrement for integer types.
A few benchmarks in PreCommitBench improve at Onone (typically by a few
percent but for StringWalk it is 10%).

Swift SVN r20468
2014-07-24 05:10:12 +00:00
Dave Abrahams
8f5180cf71 [stdlib] Add entry point for array literals
Array literal construction currently goes through an expensive dance;
Adding _allocateUninitialized will allow SILGen to do something much
smarter.

Swift SVN r20448
2014-07-23 23:46:02 +00:00
Andrew Trick
f36ff584cf Add array.init semantics.
This way, array optimization can see initialization as a copy of the
whole array value into a local variable, regardless of whether it's
from a factory method or Array initializer.

I'm making an assumption that when we return an Array by value, we
can't have an alias of the array buffer without retaining it.

Swift SVN r20444
2014-07-23 23:25:17 +00:00
Doug Gregor
1cc28d4f80 An initializer requirement can only be satisfied by a required class initializer in a non-final class.
This is part of eliminating the notion of non-inheritable
conformances. Fixes <rdar://problem/17408284>.

Swift SVN r20430
2014-07-23 22:16:38 +00:00
Dmitri Hrybenko
766c9816de stdlib: underscore-prefix String.core
Swift SVN r20411
2014-07-23 16:28:57 +00:00
Dmitri Hrybenko
52f3ba25b4 stdlib: underscore a private String initializer
Swift SVN r20408
2014-07-23 16:15:17 +00:00
Dmitri Hrybenko
b46f1fae25 stdlib: remove 'public' from two functions on underscored types
Swift SVN r20401
2014-07-23 15:28:01 +00:00
Dave Abrahams
fd2c67c89c [stdlib] Generic String init from integers
also, dump a bunch of other init() functions from other types.

Fixes <rdar://problem/16925296> #Seed 5: Remove unneeded String initializers

Swift SVN r20395
2014-07-23 14:09:01 +00:00
Dmitri Hrybenko
61e5cbb805 stdlib: coding style: don't hide 'public' at the end of line with attributes
Swift SVN r20394
2014-07-23 13:44:42 +00:00
Dmitri Hrybenko
26c3285534 stdlib: StaticString and UnsafePointer should be free abstractions even in
debug builds

On -O0 pre-commit benchmarks, this change has only effects at noise level for
most benchmarks, but +10% for StringWalk.


Swift SVN r20393
2014-07-23 13:43:51 +00:00
Dmitri Hrybenko
d168ad3d13 stdlib: don't use Builtin types in public APIs, this is quite pointless
Swift SVN r20392
2014-07-23 13:05:37 +00:00