Commit Graph

4650 Commits

Author SHA1 Message Date
Dmitri Hrybenko
2bccb13463 stdlib: add an extension point for SequenceType.contains()
This makes the protocol extension as fast as static dispatch for
Set.contains().

Swift SVN r27396
2015-04-17 02:09:59 +00:00
Dmitri Hrybenko
0d6374bb58 stdlib/HashedCollections: skip computing the hash for lookups in empty
collections

Swift SVN r27395
2015-04-17 01:56:19 +00:00
John McCall
63f3232b96 Handle throwing initializers in allocating constructors.
Swift SVN r27391
2015-04-17 00:02:46 +00:00
Dmitri Hrybenko
a03604a1b2 stdlib: remove a redundant protocol requirement re-declaration
Swift SVN r27381
2015-04-16 20:49:41 +00:00
Dmitri Hrybenko
8628a3d4e8 stdlib: _copyToNativeArrayBuffer(): use unsafe more
Now we initialize the array buffer from sequences using unsafe pointer
arithmetic, which avoids extra retain/release traffic.  But since the
size of the sequence is not known in advance, we only initialize as much
as underestimateCount() promises, and fall back to the slow approach for
the tail.  Nevertheless, for collections, where the size is known
precisely, this technique is suboptimal only by one branch.

rdar://20530390

Swift SVN r27380
2015-04-16 20:49:22 +00:00
Doug Gregor
f554fb9680 Member type lookup: when we have a type witness, use it.
This doesn't actually break the circular type-checking issues with
have with associated type inference, but it makes them less
painful. Fixes rdar://problem/20549165.

While here, and as a test, remove the _prext_underestimateCount
workound from the library. _CollectionDefaultsType now refines
_SequenceDefaultsType.

Swift SVN r27368
2015-04-16 19:55:53 +00:00
John McCall
a67452c72c SILGen for throwing foreign errors out of @objc thunks.
Also, create a new file specifically for the foreign-error
code.

Swift SVN r27347
2015-04-16 05:16:54 +00:00
Dmitri Hrybenko
c48d6aa0ab stdlib: change underestimateCount() into a method
rdar://19895265

Swift SVN r27346
2015-04-16 05:05:17 +00:00
Joe Groff
1b2fcd1852 IRGen/Runtime: AnyObject never has a witness table, even if it isn't @objc.
@objc protocols aren't supported with an ObjC runtime, but we still want values of AnyObject type to be word-sized. Handle this by turning the binary "needsWitnessTable" condition into a "dispatch strategy" enum, so we can recognize the condition "has no methods, so neither swift nor objc dispatch" as distinct from either swift or ObjC protocol representations. Assign this dispatch strategy when we lower AnyObject. Should be NFC for the ObjC-enabled build.

(It would also be beneficial for the ObjC-runtime-enabled version of Swift if AnyObject weren't an @objc protocol; that would mean we could give it a canonical protocol descriptor in the standard library, among other things. There are fairly deep assumptions in Sema that AnyObject is @objc, though, and it's not worth disturbing those assumptions right now.)

Reapplying with updates to the runtime unit tests.

Swift SVN r27341
2015-04-16 00:24:51 +00:00
Joe Groff
af6e1933f0 Revert "IRGen/Runtime: AnyObject never has a witness table, even if it isn't @objc."
This reverts commit r27338. Runtime unit tests need to be updated.

Swift SVN r27340
2015-04-16 00:13:52 +00:00
Joe Groff
2b93411ba7 IRGen/Runtime: AnyObject never has a witness table, even if it isn't @objc.
@objc protocols aren't supported with an ObjC runtime, but we still want values of AnyObject type to be word-sized. Handle this by turning the binary "needsWitnessTable" condition into a "dispatch strategy" enum, so we can recognize the condition "has no methods, so neither swift nor objc dispatch" as distinct from either swift or ObjC protocol representations. Assign this dispatch strategy when we lower AnyObject. Should be NFC for the ObjC-enabled build.

(It would also be beneficial for the ObjC-runtime-enabled version of Swift if AnyObject weren't an @objc protocol; that would mean we could give it a canonical protocol descriptor in the standard library, among other things. There are fairly deep assumptions in Sema that AnyObject is @objc, though, and it's not worth disturbing those assumptions right now.)

Swift SVN r27338
2015-04-15 23:53:25 +00:00
Joe Groff
225a0ebd70 Runtime: Non-ObjC-interoperable version of ErrorObject implementation.
This gets the runtime building again with ObjC interop disabled, though the standard library still has issues.

Swift SVN r27326
2015-04-15 20:27:24 +00:00
Dmitri Hrybenko
1e5dba8085 SceneKit overlay: add a generic overlay for -[SCNSceneSource entryWithIdentifier:withClass:]
This change depends on a coordinated SceneKit change which makes the
original method unavailable to avoid ambiguity.  The API also requires a
data file, so no tests yet.

rdar://20384835

Swift SVN r27319
2015-04-15 16:18:49 +00:00
Dmitri Hrybenko
581e853428 stdlib: make filter() a protocol requirement for range replaceable collections
This allows array types to get the best performance.  The default
implementation for range replaceable collections appends elements one by
one, and the optimizer can't hoist uniqueness checks from the loop in
that case yet.

Swift SVN r27314
2015-04-15 05:17:28 +00:00
Dmitri Hrybenko
0af19e7ff3 stdlib: use unsafeBitCast to implement map() and filter() on top of lazy()
Array(other_collection) is using an optimized code path for copying
collections.  An explicit for loop does not.

This commit should recover the performance regression in
rdar://20530390.

Swift SVN r27313
2015-04-15 05:17:27 +00:00
Dmitri Hrybenko
c4b82718d5 stdlib: correct comment
Swift SVN r27312
2015-04-15 05:17:20 +00:00
Chris Willmore
98d17e318d Add support for AppleTV simulator tests.
You can run tests with e.g. 'ninja check-swift-appletvsimulator-x86_64'.

Swift SVN r27297
2015-04-14 23:53:03 +00:00
Dmitri Hrybenko
f1de46300a stdlib: move readLine() API to the core standard library
This API has passed API review.

rdar://15911365

Swift SVN r27287
2015-04-14 20:30:12 +00:00
Dmitri Hrybenko
6e09dad1e6 stdlib: move sequence and collection algorithms to topic-centered files
Swift SVN r27273
2015-04-14 07:03:49 +00:00
Devin Coughlin
d08b98b1ca Sema: Turn on availability checking by default
Enable checking for uses of potentially unavailable APIs. There is
a frontend option to disable it: -disable-availability-checking.

This commit updates the SDK overlays with @availability() annotations for the
declarations where the overlay refers to potentially unavailable APIs. It also changes
several tests that refer to potentially unavailable APIs to use either #available()
or @availability annotations.

Swift SVN r27272
2015-04-14 06:44:01 +00:00
John McCall
156a4c7ed0 SILGen for calls under foreign error conventions. WIP.
Swift SVN r27270
2015-04-14 02:35:54 +00:00
Dmitri Hrybenko
d267b86cb6 stdlib: move the bulk of SequenceType algorithms to protocol extensions
rdar://19895265

Swift SVN r27269
2015-04-14 01:53:19 +00:00
Joe Groff
c0a2994564 AST: Start printing function types with @convention instead of old attributes.
And update tests to match.

Swift SVN r27262
2015-04-13 22:51:34 +00:00
Dmitri Hrybenko
a03680e7fd stdlib: print struct members, in addition to the type name
Swift SVN r27250
2015-04-13 07:22:36 +00:00
Dmitri Hrybenko
5bb6490636 stdlib: when doing ad-hoc printing, use the debug representation
Swift SVN r27249
2015-04-13 06:04:13 +00:00
Dmitri Hrybenko
29b15adff1 stdlib: make println() output atomic within one call
rdar://17016326

Swift SVN r27248
2015-04-13 05:51:47 +00:00
Dmitri Hrybenko
3b57d578bf StdlibUnittest: hide state inside the function scope with a local type
... because Swift does not have C-style function-local statics, but
globally-visible state is bad in any case.

Swift SVN r27235
2015-04-11 06:13:54 +00:00
Dmitri Hrybenko
a84793c60b Fix and re-enable StdlibUnittestRunAllTestsCalledTwice.swift on iOS
Swift SVN r27234
2015-04-11 06:13:52 +00:00
Greg Parker
69757f2b60 Fix 32-bit build after r27225.
On 32-bit, swift_allocBox() returns something that implicitly 
converts to BoxPair; it doesn't return a BoxPair directly.


Swift SVN r27226
2015-04-11 01:20:18 +00:00
Joe Groff
9869aed7bf Runtime: Allow value type ErrorTypes to dynamically coerce to NSError.
If we see an ErrorType-conforming value type while casting to NSError, do the coercion in the runtime, so that e.g. 'error as Any as! NSError' works as well as 'error as NSError'.

Unfortunately, we can't do this for ErrorType-conforming classes without shattering SIL's brittle view of the world due to rdar://problem/20507075. Casts between class types are fairly deeply assumed not to change the identity of the reference.

Swift SVN r27225
2015-04-11 00:18:33 +00:00
Dmitri Hrybenko
a5d6aec352 StdlibUnittest: add a diagnostic for calling runAllTests() twice
... and fix this issue in the sort() test.

Swift SVN r27215
2015-04-10 21:54:56 +00:00
Joe Groff
768420d33b IRGen/Runtime: Give ErrorType its own retain/release entry points.
Some future-proofing to let us change ErrorType's reference counting in the future, or to use various tagged pointer optimizations in its representation.

Swift SVN r27213
2015-04-10 18:54:16 +00:00
Joe Groff
7612df1918 Runtime: Rename 'becomeNSError' to 'bridgeErrorTypeToNSError'.
We may want to use optimized ErrorType representations that don't naturally "become" NSErrors, such as tagged-pointer representations of small error enums, or a tagged function pointer to a deferred error type constructor. Rename the runtime function to something a bit more descriptive of its real purpose, not its implementation.

Swift SVN r27209
2015-04-10 17:37:40 +00:00
Devin Coughlin
857a60dea1 Runtime: Cache OS version for availability in a thread-safe manner.
On OS X 10.9 and iOS 7 the runtime support for #availability was reading the system plist
on every query. Now, use dispatch_once to cache the results of the expensive
plist lookup ourselves.

rdar://problem/18471069

Swift SVN r27199
2015-04-10 02:24:32 +00:00
Dave Abrahams
3cebb1444c [stdlib] Make staging typealiases public
Really unbreak external projects this time!

Swift SVN r27187
2015-04-09 22:43:14 +00:00
Roman Levenstein
d1698ba1cb Use a _bridgeable suffix for newly introduced fast bridging functions. NFC.
Dave explained that stdlib usually uses the suffix notation in such cases. This change follows his advice.

Swift SVN r27177
2015-04-09 20:59:42 +00:00
Erik Eckstein
4c2ce1ee84 stdlib: some simplifications in Arrays.swift.gyb source code.
It's not just refactoring. It is a functional change. But it should not have a significant effect on performance.



Swift SVN r27168
2015-04-09 15:49:58 +00:00
Erik Eckstein
36fae15313 stdlib: rewrite Array.append to simplify the generated SIL code.
Swift SVN r27167
2015-04-09 15:37:14 +00:00
Dmitri Hrybenko
c8af957f08 stdlib: fix a typo in comments
Swift SVN r27161
2015-04-09 04:45:37 +00:00
Dmitri Hrybenko
9c03811987 stdlib: add initializers from String to integer and floating-point types
rdar://17232531

Swift SVN r27159
2015-04-09 03:20:41 +00:00
Roman Levenstein
8341a4f5b3 As suggested by DaveA, remove useless information, which just repeats the declaration. NFC.
Swift SVN r27158
2015-04-09 02:35:28 +00:00
Erik Eckstein
43d41147a6 stdlib: implement nativeOwner in all array buffers to avoid %else in Arrays.swift.gyb. NFC.
Swift SVN r27133
2015-04-08 19:48:48 +00:00
Erik Eckstein
d79078a391 stdlib: fix coding style in ArrayBuffer
Swift SVN r27131
2015-04-08 19:24:39 +00:00
Dave Abrahams
72585a7bdd [stdlib] Restore GeneratorOf/SequenceOf for staging
Let's keep internal projects building for a while

Swift SVN r27128
2015-04-08 18:10:19 +00:00
Dave Abrahams
5671f7399d [stdlib] fix comments
Swift SVN r27127
2015-04-08 17:40:49 +00:00
Dave Abrahams
4400bce00a Revert "[stdlib] Workaround for <rdar://20409234>"
This reverts commit r27091 because Doug fixed the underlying bug.

Swift SVN r27126
2015-04-08 17:38:55 +00:00
Dave Abrahams
00bc80b5d0 [stdlib] Bring back toString & co. for staging
Renaming broke external projects and we want to handle this more
smoothly.

Swift SVN r27125
2015-04-08 15:26:25 +00:00
Erik Eckstein
ddb25915b6 stdlib: Avoid a isNative check in _getOwner in the Array's mutableAddressWithPinnedNativeOwner
When calling _getOwner at this point we know that it is a native array.
This simplifies the SIL code for assigning a class array element (a[i] = x).



Swift SVN r27124
2015-04-08 09:54:04 +00:00
Erik Eckstein
10166ba228 stdlib: return the correct buffer property in _getArrayPropertyIsNative
As _getArrayPropertyIsNative is not use yet, there is NFC.



Swift SVN r27123
2015-04-08 09:32:36 +00:00
Dmitri Hrybenko
e5ca5f5952 stdlib: remove unused typealias that was added by mistake
Swift SVN r27114
2015-04-08 00:41:21 +00:00