Commit Graph

4650 Commits

Author SHA1 Message Date
Dave Abrahams
198bf8072c [stdlib] Put "Lazy" in the names of new lazy things
Once you buy into the lazy system with a.lazy... you should see it in
the type.

Swift SVN r30216
2015-07-15 06:16:45 +00:00
Slava Pestov
f456f0c25c Runtime: Enable reflection for multi-payload enums with non-trivial layout
This came up for multi-payload enums without generic parameters, eg

enum MyError {
  case BusError
  case TrainError(Int)
  case DataLoss(String)
}

Fixes <rdar://problem/21739870>.

Swift SVN r30215
2015-07-15 06:03:30 +00:00
Slava Pestov
cdd5a4121c IRGen: Generate value witnesses to get enum tag and project payload
These will be used for reflection, and eventually to speed up generic
operations on single payload enums as well.

Progress on <rdar://problem/21739870>.

Swift SVN r30214
2015-07-15 06:03:18 +00:00
Dave Abrahams
91f17ec375 [stdlib] ReverseCollection isn't implicitly lazy
You have to ask for it explicitly at some point in the chain.

Swift SVN r30213
2015-07-15 05:45:47 +00:00
Dave Abrahams
34bc4068d6 [stdlibunittest] Suppress some pesky warnings
Swift SVN r30212
2015-07-15 05:45:46 +00:00
Dmitri Hrybenko
e96251b0c4 stdlib: document complexity requirements for some CollectionType APIs
rdar://20167702

Swift SVN r30209
2015-07-15 01:59:47 +00:00
Michael Gottesman
4ce5cdad17 [llvm-arc-opts] Implement swift_{retain,release}_n.
rdar://21803771

Swift SVN r30204
2015-07-15 00:03:03 +00:00
Jordan Rose
497e990c0b Handle UIGraphicsGetCurrentContext's return value becoming optional.
...in such a way that both older and newer SDKs are supported (at least for now).

rdar://problem/21819293

Swift SVN r30193
2015-07-14 20:31:44 +00:00
Andrew Trick
77ff5b7e57 Convert the new ArrayBuffer assert to _sanityCheck. We don't need it at -Onone.
Swift SVN r30185
2015-07-14 06:14:12 +00:00
Andrew Trick
6d03fe0a73 Add an assert to ArrayBuffer.getElementSlowPath.
The implementation is making a strong assumption about the array
element type (single-reference layout), but it is extremely
non-obvious that this helper is only called for those element types.

Swift SVN r30183
2015-07-14 05:09:46 +00:00
Joe Groff
f739f85137 StdlibUnittest: Keep qualified type names in failure output.
The unambiguous qualification is likely desirable to someone figuring out why their tests failed.

Swift SVN r30170
2015-07-13 22:31:37 +00:00
Joe Groff
db0fea590e stdlib: Use unqualified names in 'print'.
Leave the qualification off of enum cases and type names when 'print'-ing them, but keep them on 'debugPrint'. (At least, at the outermost level; since ad-hoc printing of structs and tuples uses debugPrint, we'll still get qualification at depth, which kind of sucks but needs more invasive state management in print to make possible.) Implements rdar://problem/21788604.

Swift SVN r30166
2015-07-13 21:42:11 +00:00
Joe Pamer
0e35bad9dc Revert "[stdlib] Remove workarounds for fixed bug"
This reverts commit r30148, since it regresses the following tests:

   Swift :: ClangModules/script.swift
   Swift :: Interpreter/currying_protocols.swift
   Swift :: Interpreter/if_expr.swift
   Swift :: Interpreter/protocol_extensions.swift
   Swift :: Interpreter/weak.swift
   Swift :: Interpreter/weak_objc.swift
   Swift :: PlaygroundTransform/array_did_set.swift
   Swift :: PlaygroundTransform/print.swift

Swift SVN r30159
2015-07-13 19:48:08 +00:00
Dave Abrahams
c0399e240f [stdlib] Remove workarounds for fixed bug
Also fixes rdar://21582758

Swift SVN r30148
2015-07-13 16:52:57 +00:00
Dave Abrahams
88aaed0a0c [stdlib] Move most of the lazy prototype into the stdlib
Swift SVN r30144
2015-07-13 15:36:17 +00:00
Dmitri Hrybenko
7ae303aeb3 Update Unicode data files to 8.0.0
rdar://19582621

Swift SVN r30141
2015-07-13 08:00:39 +00:00
Dave Abrahams
7221cd84df [stdlibunittest] Add expectations to TypeIndexed
Swift SVN r30138
2015-07-13 06:40:44 +00:00
Joe Groff
45e9c71b69 Fix paste-o.
Swift SVN r30127
2015-07-12 01:06:11 +00:00
Dmitri Hrybenko
4cfe818c43 StdlibUnittest: extract collection tests into a reusable generic testsuite
Swift SVN r30124
2015-07-12 01:04:38 +00:00
Dmitri Hrybenko
1d38db56da StdlibUnittest: add {Minimal|Default}***MutableCollection types
Swift SVN r30115
2015-07-11 08:48:38 +00:00
Dmitri Hrybenko
b4ec45d625 stdlib: make Slice.init(base:bounds:) public
Swift SVN r30113
2015-07-11 05:58:06 +00:00
Dmitri Hrybenko
be5ef02bd0 Revert "stdlib: make Slice.init(base:bounds:) public"
This reverts commit 30111.  It broke the buildbots.

Swift SVN r30112
2015-07-11 05:34:05 +00:00
Dmitri Hrybenko
26ebe14178 stdlib: make Slice.init(base:bounds:) public
Swift SVN r30111
2015-07-11 05:20:41 +00:00
Dave Abrahams
069ba3ecf6 [stdlibunittest] Gyb-away code duplication in logging wrappers
Swift SVN r30110
2015-07-11 04:02:11 +00:00
Dave Abrahams
645e62769f [stdlibunittest] LoggingCollection should log *all* SequenceType operations.
Swift SVN r30108
2015-07-11 03:25:40 +00:00
Dave Abrahams
9d07acd368 [stdlib] SequenceType's _initializeTo should return the end position
Otherwise, the length of the sequence is in principle lost.  If you know
you have a sequence of less than 100 elements, you still want to know
exactly how many elements you initialized from it.

Swift SVN r30104
2015-07-11 01:43:27 +00:00
Enrico Granata
88e3c41f39 Provide a specific (legacy) Mirror for NSString
This does not cause any functionality change, except it solves the issue I was running into last night where an array of NSString-s would expose its child values as plain Strings



Swift SVN r30092
2015-07-10 21:37:46 +00:00
Ted Kremenek
56a3ddbdb4 Make UIEdgeInsets and UIOffset conform to Equatable.
Implemented at the behest of the UIKit team.

Implements <rdar://problem/18109916>.

Swift SVN r30089
2015-07-10 21:11:25 +00:00
Dave Abrahams
6ab88e2ade [stdlibunittest] Add/use checkRandomAccessIndex
Swift SVN r30077
2015-07-10 18:51:19 +00:00
Joe Groff
7e78f0d3dc Add missing return.
Swift SVN r30076
2015-07-10 18:51:09 +00:00
Doug Gregor
29764dc34d Remove the ability to access the "0" member of a scalar.
This is a travesty that makes it hard to reason about tuple vs. scalar
types. It's only use in our own code involved dealing with the
difference in element types between Set and Dictionary in
gyb-generated code. Ewww. Fixes rdar://problem/17963034.

Swift SVN r30074
2015-07-10 17:28:53 +00:00
Joe Groff
a1a00e7a24 Runtime: Fix incorrect implementation of pod_indirect_initializeBufferWithTakeOfBuffer.
Fixes rdar://problem/21375421.

Swift SVN r30073
2015-07-10 17:23:30 +00:00
Dave Abrahams
c1f371a5b8 [stdlibunittest] Add checkStrideable
Also, apply it, in a rudimentary way, to our floating point types.

Swift SVN r30068
2015-07-10 14:27:11 +00:00
Jordan Rose
cbda31eba4 [stdlib] Underscore the 'value' members of DarwinBoolean and ObjCBool.
Per Dmitri's request and stdlib conventions. Also, remove the reference to
what's now '_value' from the DarwinBoolean tests, and use unsafeBitCast
instead to mimic representation-compatible access from C.

Swift SVN r30066
2015-07-10 06:25:06 +00:00
Jordan Rose
0b5428fcd3 Import DarwinBoolean as Bool in fully-bridgeable contexts.
These are contexts where we have enough information to bridge /back/
properly; that is, where we can distinguish CBool, ObjCBool, and
DarwinBoolean. In cases where we can't, we keep the three separate;
only CBool is really the same type as Bool.

This also affects current import behavior for ObjCBool, which was previously
incorrectly conflated with CBool in certain cases.

More rdar://problem/19013551

Swift SVN r30051
2015-07-10 01:11:30 +00:00
Jordan Rose
e1ffbbbcf5 Import MacTypes.Boolean as a dedicated DarwinBoolean type.
Like ObjCBool is a legitimate boolean type rather than a typealias for Int8,
DarwinBoolean is better than a typealias for UInt8. It's a BooleanType
(meaning you can use it directly in if/while/?:) and BooleanLiteralConvertible
(meaning you can use 'true' and 'false').

The next commit goes even further, so that you only have to deal with
DarwinBoolean when ABI is important. At all other times it should be
bridged with Bool, just like ObjCBool.

rdar://problem/19013551

Swift SVN r30050
2015-07-10 01:11:25 +00:00
Dmitri Hrybenko
a725d1e7e3 Fix a comment in a test
Swift SVN r30046
2015-07-09 23:24:59 +00:00
Dave Abrahams
c2b3005dba [stdlibunittest] Add/use checkComparable that tests laws
Swift SVN r30042
2015-07-09 21:40:58 +00:00
Dave Abrahams
ce8e51346c [stdlib] Remove a redundant and un-specific protocol extension
There's a better one in Sequence.swift; moving the comment there.

Swift SVN r30038
2015-07-09 20:27:19 +00:00
Dave Abrahams
913f09838a [stdlib] Add a default generate() for generators...
...that are also sequences, and rip out all redundant implementations of
generate() that match a default.

Swift SVN r30035
2015-07-09 19:49:24 +00:00
Mark Lacey
da983196a3 Add a specialization of extend for collections.
The specialization uses += operator for collections, which performs much
better than the += operator for sequences.

The extend benchmark from rdar://problem/21689050 improves by:
- 2500x with -O
- 15x with -O -whole-module-optimization

Unfortunately we still seem to be about 100x slower than the user's
memcpy version of the same benchmark with -O -whole-module-optimization.

Swift SVN r30033
2015-07-09 18:28:03 +00:00
Joe Groff
16c8a3b6c0 Runtime: Fix crash when first allocation for a metadata cache is page-sized or greater.
We incorrectly tested the uninitialized "next" pointer against MAP_FAILED, instead of the real result of mmap. Fixes rdar://problem/21659505.

Swift SVN r30030
2015-07-09 18:19:59 +00:00
Dave Abrahams
1870bb747e [stdlib] var => let suppresses a warning
Swift SVN r30027
2015-07-09 17:22:48 +00:00
Dave Abrahams
b023c10640 [stdlib] Concatenate.swift.gyb cleanups/optimizations
Swift SVN r30024
2015-07-09 17:10:33 +00:00
Dave Abrahams
7a614f76fc [stdlibunittest] Add/Use checkBidirectionalIndex
Swift SVN r30022
2015-07-09 17:10:27 +00:00
Joe Groff
482c82c4f1 Runtime: Don't rewrap an NSError when trying to dynamic cast to NSError.
Fixes rdar://problem/21610394.

Swift SVN r30015
2015-07-09 04:32:09 +00:00
Devin Coughlin
007dfe15bf Runtime: Allow protocol extensions for weakly-linked Objective-C classes
Change ProtocolConformanceRecord::getCanonicalTypeMetadata() to return null if
the class metadata in the protocol conformance record is null. This fixes a
runtime crash in swift_conformsToProtocol when there is a protocol extension of
a missing weakly-linked class.

rdar://problem/21541766

Swift SVN r30012
2015-07-09 03:36:57 +00:00
Joe Groff
ae7f8bdb65 simd module: Only provide '&+', '&-', and '&*' variants of arithmetic operators.
Checked arithmetic is probably not what you want from the vector unit, but we still want code to be explicit about the fact that it's using wrapping semantics instead of trapping or UB semantics. Provide the wrapping variations of the operators, and leave behind unavailable definitions to direct users to the wrapping operations if they try to use the standard ones.

Swift SVN r30008
2015-07-09 01:20:20 +00:00
Joe Groff
0b54e21629 simd overlay: Use LLVM vector types.
This brings the David Owens benchmark from http://owensd.io/2015/06/27/performance-xcode7-beta-2.html from parity with simd.h-based C to 3x faster.

Before:

RenderGradient ([UInt32].withUnsafeMutablePointer (SIMD))                 │ 7.035851 │ 6.304739 │ 9.815832 │  1.212 │

After:

RenderGradient ([UInt32].withUnsafeMutablePointer (SIMD))                 │ 2.318357 │ 2.223325 │ 2.697981 │ 0.1490 │

This also addresses rdar://problem/21574425, since Builtin.add_VecNxIntM isn't overflow-checked, and overflow checks really aren't wanted when working with vector types directly.

Reapplying now that Nadav's fixed the ARM64 SelectionDAG issue this exposed before, and Arnold's fixed
yet another SelectionDAG issue exposed after that.

Swift SVN r30006
2015-07-09 01:20:01 +00:00
Joe Groff
ab1f459a40 Runtime/stdlib: Non-verbatim bridging of metatypes.
Metatypes can't directly conform to _ObjectiveCBridgeable, but we can pretend they do by making a struct with the same ABI conform and returning that conformance when we call findBridgeWitness on a metatype. Fixes rdar://problem/16238475.

Swift SVN r29999
2015-07-08 23:23:55 +00:00