Commit Graph

1397 Commits

Author SHA1 Message Date
Dmitri Hrybenko
0194e2675b stdlib/UnsafePointer: add more doc comments
Swift SVN r20822
2014-07-31 14:28:04 +00:00
Dave Abrahams
50aac71847 [stdlib] Arrays : RangeReplaceableCollectionType
Add the missing APIs and make the conformance complete

Swift SVN r20807
2014-07-31 02:54:27 +00:00
Dave Abrahams
bd2bd78b23 [stdlib] Add RangeReplaceableCollectionType
Swift SVN r20791
2014-07-31 00:38:24 +00:00
Dave Abrahams
80a21c8c09 [stdlib] Fix my last commit (oops!)
Swift SVN r20772
2014-07-30 20:42:02 +00:00
Dave Abrahams
287e43ad3c [stdlib] Clean up the other half of array casts
Swift SVN r20771
2014-07-30 20:39:47 +00:00
Dave Abrahams
ab21c59977 [stdlib] Clean up half the array cast machinery
Swift SVN r20765
2014-07-30 18:22:31 +00:00
Dmitri Hrybenko
ec4f8d37f7 stdlib: fix a heap overflow that colud happen when appending to a string
slice

rdar://17855908

Swift SVN r20762
2014-07-30 18:04:36 +00:00
Dmitri Hrybenko
6296c14623 stdlib/_StringBuffer: documentation comments, coding style
Swift SVN r20759
2014-07-30 14:43:30 +00:00
Dmitri Hrybenko
190db64c18 stdlib: document current plan of record for reserveCapacity() semantics
rdar://16970908


Swift SVN r20758
2014-07-30 14:42:24 +00:00
Dmitri Hrybenko
ac0d9b8175 stdlib/CGFloat: GYB'ify initializers that convert between CGFloat and
integer types.  Never miss an integer type again.

rdar://17853313

Swift SVN r20751
2014-07-30 11:24:11 +00:00
Dmitri Hrybenko
c17b692e20 stdlib: pull out information about integer types into a reusable file
Swift SVN r20750
2014-07-30 10:16:47 +00:00
Dave Abrahams
6e7f83fe98 Internalize old array casting entry-points
The core compiler now uses just two entry points for array casting

Swift SVN r20725
2014-07-29 23:56:51 +00:00
Dave Abrahams
6a80cbbaa2 [stdlib] Capitalize the cases of Bit
Fixes <rdar://problem/17821517>

Swift SVN r20718
2014-07-29 23:25:28 +00:00
Dave Abrahams
7c7fb3eea0 Restore "[Release note] deferred array cast checks"
I had just gone too far with the laziness; everything was already
working after only one change

Swift SVN r20717
2014-07-29 23:25:27 +00:00
Dave Abrahams
0b562db701 Revert "[Release note] deferred array cast checks"
This reverts commit r20700 and r20702

I'll bring these back when I work out the problems.

Swift SVN r20708
2014-07-29 22:52:28 +00:00
Dave Abrahams
18b81228d5 [stdlib] Defer array bridge cast checks
Part 2 (of 2) of <rdar://problem/17340393>

Swift SVN r20700
2014-07-29 21:41:11 +00:00
Dave Abrahams
5847a0f7c3 [stdlib] defer Array element down-cast checks
Part 1 of <rdar://problem/17340393>

Swift SVN r20699
2014-07-29 21:41:10 +00:00
Dave Abrahams
ebcaab1e52 [stdlib/core] add Array init from _CocoaArrayType
Swift SVN r20698
2014-07-29 21:41:09 +00:00
Dave Abrahams
01dd78ae99 [stdlib] Add missing _sanityCheck diagnostic
Swift SVN r20691
2014-07-29 21:01:26 +00:00
Dave Abrahams
a8225dabee [stdlib] ArrayBridge.swift => ArrayCast.swift
This file is really about array casting, and not (necessarily) bridging.
Bridging may be involved in some array casts, but is not involved in all
of them.

Swift SVN r20690
2014-07-29 20:58:54 +00:00
Dave Abrahams
0320ef85ab [stdlib] Consolidate array casting entry points
Swift SVN r20689
2014-07-29 20:54:24 +00:00
Dmitri Hrybenko
bdc78be4e5 Reflection: reorder dump() arguments so that one can print to a stream and take
advantage of default values

Also, fix dump() to actually print everything into the supplied stream.


Swift SVN r20670
2014-07-29 15:07:25 +00:00
Dave Abrahams
9a13a7148b [stdlib] Consolidate bridging protocols
Squash _[Conditionally]BridgedToObjectiveC into one protocol.  This
change results in simpler bridging code with fewer dynamic protocol
conformance checks, and solves the nasty naming/semantics problem that
resulted from having _ConditionallyBridgedToObjectiveC refining
_BridgedToObjectiveC.

Also, rename things so they're more symmetrical and less confusing.

Swift SVN r20664
2014-07-29 01:30:27 +00:00
Dave Abrahams
5496c4beac [stdlib] Default == for Strideables
...which we can provide now that <rdar://problem/17620349> is fixed.
Thanks, JoeP!

Swift SVN r20645
2014-07-28 21:14:53 +00:00
Dave Abrahams
6d1f574089 [stdlib] Separate file for Array bridging/casting
This stuff will require a nice big comment and will go through several
rounds of cleanup; let's get it out of the regular Array flow.

Swift SVN r20642
2014-07-28 20:34:08 +00:00
Joe Pamer
96a5df8281 Remove one more optional-as-boolean.
Swift SVN r20640
2014-07-28 19:20:42 +00:00
Joe Pamer
94dac129d4 Remove the BooleanType conformance from optional types (rdar://problem/17110911)
To limit user confusion when using conditional expressions of type Bool?, we've decided to remove the BooleanType (aka "LogicValue") conformance from optional types. (If users would like to use an expression of type Bool? as a conditional, they'll need to check against nil.)

Note: This change effectively regresses the "case is" pattern over types, since it currently demands a BooleanType conformance. I've filed rdar://problem/17791533 to track reinstating it if necessary.

Swift SVN r20637
2014-07-28 19:20:39 +00:00
Dave Abrahams
c76eeec0a5 [stdlib] Drop obsolete @availability
Swift SVN r20634
2014-07-28 18:31:34 +00:00
Dave Abrahams
214e2f03de [stdlib] Drop @availability for renamed protocols
...now that seed 5 has branched.

Fixes <rdar://problem/17672088> #Seed 6: Remove @availability for protocols

Swift SVN r20632
2014-07-28 18:14:27 +00:00
Dave Abrahams
4ece9b1734 [stdlib] Default bitwise assignment operators
|=, &=, and ^= now come along for free with a BitwiseOperationsType
conformance, so we can remove the special-cased operators for
RawOptionSetType.

Also, release notes.

Swift SVN r20630
2014-07-28 16:39:23 +00:00
Dave Abrahams
d90f34a479 [stdlib] RawOptionSetType : BitwiseOperationsType
Add the missing conformance now that Jordan implemented allZeros.

Swift SVN r20625
2014-07-28 15:52:45 +00:00
Dmitri Hrybenko
f75968d9cd stdlib: add a trap() function that traps in debug and release modes
rdar://17792445


Swift SVN r20620
2014-07-28 11:30:42 +00:00
Dmitri Hrybenko
ca07053adc stdlib: rename fatalError() to debugTrap()
Part of rdar://17792445


Swift SVN r20619
2014-07-28 11:14:52 +00:00
Doug Gregor
0b802ce6e9 String: add some unavailable subscript overloads for String with integer (or integer range) indices.
The compiler's QoI for these cases is horrible, and it's a common
pitfall, so be more direct about the fact that this cannot be done.


Swift SVN r20613
2014-07-28 03:50:26 +00:00
Dave Abrahams
31d6f95452 [stdlib] UnsafeBufferPointer: add ".count"
In answering a forum post I noiced that I wanted this and it was
missing.

Also, extensive comments

Also, rename the length: init parameter to count:.  When writing the
comments for the init function it became painfully clear why we use
"count" is better than "length" especially around pointers and memory:
the former is much less easy to mistake for "length in bytes".  Plus
it's consistent with the new ".count" property

Swift SVN r20609
2014-07-28 01:03:09 +00:00
Dmitri Hrybenko
06a9ea552c stdlib/String: fix hasPrefix() and hasSuffix() to perform proper Unicode
comparison

rdar://17498444


Swift SVN r20603
2014-07-27 18:12:02 +00:00
Dmitri Hrybenko
a4c1ef90e7 stdlib/Algorithm: add an overload for startsWith that accepts a
comparison predicate

Swift SVN r20601
2014-07-27 01:00:26 +00:00
Joe Groff
61f64f3323 stdlib: Add a '??' nil-coalescing operator.
Similar to nil-coalescing operators in other languages, this operator takes an optional on the left and a non-optional expression on the right, and if the optional is nil, evaluates the right side, otherwise returning the value from the optional itself. <rdar://problem/15247356>

Swift SVN r20593
2014-07-26 19:48:50 +00:00
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