Commit Graph

4650 Commits

Author SHA1 Message Date
Joe Groff
c749f51bcb Don't include class metatypes in the "canBeClass" bucket.
The stdlib uses this condition to recognize types that represent classes without representation changing, which isn't true for metatypes. They will natively be pointers to the Swift type metadata instead of the ObjC class object, so a conversion step is necessary. This doesn't directly fix container bridging, but it prevents the runtime from trying to bridge verbatim metatypes without first changing them to ObjC representation.

Swift SVN r29998
2015-07-08 23:23:49 +00:00
Mark Lacey
9c713556d7 Remove a work-around from extend().
The test case in the radar appears to compile without issue now, and
moving this code back inline appears to work.

Swift SVN r29992
2015-07-08 20:56:08 +00:00
Dave Abrahams
76ec395dae [stdlibunittest] WIP Adding axiom checking
Check that the expected laws hold for models of Equatable, Hashable,
Incrementable, and ForwardIndexType.

Swift SVN r29988
2015-07-08 20:04:37 +00:00
Mark Lacey
081425fa96 Small clean-up.
Consistently use the local that has been initialized with the witness
table flags rather than sometimes using it, and sometimes not.

Swift SVN r29985
2015-07-08 19:45:28 +00:00
Dave Abrahams
b650ca7b6d [stdlib] Fix a bug in advance(start, n, end)
Long-standing bug: it didn't work for random access indices
when start == end!

Swift SVN r29982
2015-07-08 18:37:11 +00:00
Erik Eckstein
facf122848 stdlib: replace some overflow with non-overflow additions/subtractions in hashed collections.
This removes some unneeded overflow checks in the loop which iterates over the buckets.



Swift SVN r29975
2015-07-08 15:29:20 +00:00
Joe Groff
177575510d Runtime: Additional fix for casting class types to existential metatypes.
Tested in following commit.

Swift SVN r29961
2015-07-08 05:03:25 +00:00
Doug Gregor
c410bce986 We cannot validate a declaration while its context is being type-checked.
Fixes rdar://problem/21538521 and a few crashers.

Swift SVN r29957
2015-07-08 04:21:51 +00:00
Joe Groff
6760567659 Runtime: Handle casting from class types to class metatypes.
Implement casting support for taking an AnyObject and conditionally converting it to a T.Type for some class type. Fix some memory management bugs too, where we used swift_release to release an object not known to have Swift refcounting. This mostly fixes rdar://problem/16238475, though the SIL optimizer still improperly folds away attempted casts from NSObject to a class metatype, and I haven't yet validated bridging support for NSArray<Class>*.

Swift SVN r29956
2015-07-08 03:39:55 +00:00
Dave Abrahams
ef198daa2b [stdlibunittest] Finish threading new trace facility through
Swift SVN r29955
2015-07-08 02:52:27 +00:00
Jordan Rose
1edf9b3ae8 Check access for associated type requirements, too.
This is a straight-up "oops". You could always get to these typealiases via
the protocol, but like the member requirements you should have to say so.

Swift SVN r29952
2015-07-08 00:43:37 +00:00
Dave Abrahams
ce93b0a9e0 [stdlibunittest] Still more de-boilerplating WIP
Swift SVN r29951
2015-07-08 00:28:33 +00:00
Arnold Schwaighofer
8517b7ba08 Revert "Un-XFAIL test on Linux."
Revert "simd overlay: Use LLVM vector types."

This reverts commit r29922 and r29924.

More arm64 instruction selection errors.

rdar://21703486

Swift SVN r29941
2015-07-07 16:45:08 +00:00
Dave Abrahams
70ee2adc84 [stdlibunittest] More de-boilerplating WIP
Step 2.

Swift SVN r29936
2015-07-07 04:54:03 +00:00
Dave Abrahams
9abf32d521 [stdlibunittest] WIP uniformity/de-boilerplating
The way we pass and compose source locations, messages, etc. needs to be
brought under control before too many more tests get written.  This is
the first step.

Swift SVN r29928
2015-07-07 00:46:54 +00:00
David Farler
4d17bf0691 Remove SinkType and SinkOf
Remove these standard library types in favor of (T) -> () closures.

It was originally believed that generic optimizations would make these
types profitable, however:

// FIXME: Insert benchmarks here.

rdar://problem/21663799

Swift SVN r29927
2015-07-07 00:36:12 +00:00
Joe Groff
9a23fa9040 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.

Swift SVN r29922
2015-07-06 22:56:42 +00:00
Dmitri Hrybenko
4603431bd4 StdlibUnittest: implement more strict checks for using invalid indices
Add a shared buffer to every range replaceable mutable collection to
track logical mutations, and invalidate all indices on every mutation.

Swift SVN r29917
2015-07-06 16:12:03 +00:00
David Farler
402bbd3813 RangeReplaceableCollectionType review changes
- Clean up tests
  - Create API-specific test structures with clearer labels
  - Use `OpaqueValue`s in test collections
  - Make tests non-generic to allow array literal declarations
  - Remove some unused functions
  - Test return values for mutating functions that return a value
  - Add expect* test source locations
- Add _customRemoveLast ad-hoc default implementation for `removeLast`
- Add default implementation for reserveCapacity that does nothing.

Swift SVN r29905
2015-07-03 02:14:22 +00:00
Dave Abrahams
fb241acf6f [stdlib] kill __ArrayType
Swift SVN r29895
2015-07-02 18:47:05 +00:00
Joe Groff
e692c87bbf Revert "simd overlay: Use LLVM vector types."
This reverts commit r29891. It causes an LLVM assertion failure in SelectionDAG on appletvos-arm64.

Swift SVN r29893
2015-07-02 17:31:34 +00:00
Joe Groff
8103dfb825 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.

Swift SVN r29891
2015-07-02 17:05:29 +00:00
Dmitri Hrybenko
1edcc49ff9 stdlib: remove Slice.Element typealias
It is misleading in generic code.  A testcase that was failing:

  expectEqualType(C.Generator.Element.self, Slice<C>.Element.self)

Swift SVN r29887
2015-07-02 06:44:38 +00:00
Joe Groff
a9e69dda79 IRGen/Runtime: Mark indirect cases in an enum's field type infos.
And use this information in EnumMirror to project boxed payloads when we encounter them.

Swift SVN r29866
2015-07-02 00:00:42 +00:00
David Farler
060b1ab61b Remove redundant MinimalCollection for RangeReplaceable tests
There are usable variants gybbed into StdlibUnittest.

Swift SVN r29864
2015-07-01 23:44:15 +00:00
Jordan Rose
d0a6713f66 [stdlib] Make some typealiases more public, since they're used in public ways.
The next commit will start enforcing this.

Swift SVN r29862
2015-07-01 23:34:35 +00:00
Dave Abrahams
59997efa2a [stdlib] Make _CollectionWrapperType usable
It was neither testable (because it was internal) nor usable (because in
practice models would be full of ambiguities with methods provided in
extensions for CollectionType.

Swift SVN r29859
2015-07-01 22:51:37 +00:00
David Farler
438119d558 Fold ExtensibleCollectionType into RangeRaplaceableCollectionType
ExtensibleCollectionType's operations can all be represented by the
primitive range replacement operation, so fold it into
RangeReplaceableCollectionType.

In addition, provide default implementations of
RangeReplaceableCollectionType's methods.

- New tests added for combinations of (static, generic) calls and
  (default, custom) implementations.
- Mark free Swift functions as unavailable with a message to direct the
  developer to the protocol methods.
- Mark ExtensibleCollectionType as available with a message added to
  direct the developer to the right protocol.

rdar://problem/18220295

Swift SVN r29857
2015-07-01 22:33:04 +00:00
Dmitri Hrybenko
a3f74461fb stdlib: remove an explicit Slice.generate(), it is supplied by a protocol extension
Swift SVN r29848
2015-07-01 18:44:59 +00:00
Dmitri Hrybenko
fc0fa96371 stdlib: de-underscore Indexable and add tests for it
Swift SVN r29847
2015-07-01 18:31:31 +00:00
Dmitri Hrybenko
76f5706b50 stdlib: de-underscore the Slice type and add tests for it
Swift SVN r29846
2015-07-01 18:31:29 +00:00
Dmitri Hrybenko
80b1380fe8 stdlib: fold Sliceable into CollectionType and de-underscore SubSequence
Swift SVN r29845
2015-07-01 18:31:25 +00:00
Joe Groff
d7d3ff2b10 IRGen/Runtime: Keep the payload offset inside both compiler- and runtime-generated box metadata.
A missing link in our polymorphic box projection story, and likely a perf improvement for the generic case as well.

Swift SVN r29835
2015-07-01 04:51:56 +00:00
Dmitri Hrybenko
4eb24da01b stdlib: underscore MirrorType
Part of removing the old mirrors.

rdar://21428474

Swift SVN r29833
2015-07-01 04:05:48 +00:00
Dmitri Hrybenko
9da16e592e stdlib: underscore reflect() and unsafeReflect()
Part of removing the old mirrors.

rdar://21428474

Swift SVN r29826
2015-07-01 00:31:39 +00:00
Dmitri Hrybenko
8d79d9e142 stdlib: underscore MirrorDisposition
Part of removing the old mirrors.

rdar://21428474

Swift SVN r29825
2015-07-01 00:31:37 +00:00
Dmitri Hrybenko
6bc93d4d79 stdlib: finish renaming QuickLookObject to PlaygroundQuickLook
Part of removing the old mirrors.

rdar://21428474

Swift SVN r29824
2015-07-01 00:31:35 +00:00
Dmitri Hrybenko
7ee84ed6b3 stdlib: rename Reflectable.{getMirror() -> _getMirror()}
Start removing the old mirrors.

rdar://21428474

Swift SVN r29823
2015-07-01 00:31:32 +00:00
Dave Abrahams
80ebf972f0 [stdlib] Add _SequenceWrapperType and _CollectionWrapperType
These form an important part of the basis of the new lazy sequence
system.  Tests for _CollectionWrapperType are currently blocked on
<rdar://problem/21599265>

Swift SVN r29814
2015-06-30 22:36:46 +00:00
Dave Abrahams
10d7c3db50 [stdlibunittest] Use a legitimate TypeIdentifier
...instead of ObjectIdentifier, to wrap Any.Type, and add protocol
conformances.  ObjectIdentifier doesn't print nicely, because there's
really no type information left, and TypeIdentifier makes for better
output when tests fail.

Swift SVN r29813
2015-06-30 22:36:41 +00:00
Chris Lattner
bb4e2ad80b Eliminate the ability to 'if' branch directly on a Builtin.Int1 value, instead
always require BooleanType.  It isn't necessary and it is in the way of progress.


Swift SVN r29812
2015-06-30 22:10:14 +00:00
Dmitri Hrybenko
ad81277931 stdlib: remove Set<T>.GeneratorType
This API was added by mistake, and the type alias should have been
called ``Generator``.  In fact, a nested type alias is already inferred
to satisfy the associated type ``Generator`` in Set's ``SequenceType``
conformance.

rdar://20171363

Swift SVN r29796
2015-06-29 22:43:53 +00:00
Dave Abrahams
4bc3815135 [stdlibunittest] Missed update to CMakeLists.txt
Swift SVN r29791
2015-06-29 20:47:10 +00:00
Dave Abrahams
8c855e1ecf [stdlibunittest] automatic LifetimeTracked checking/setup
In setup and teardown, we can initialize and check for leaks

Swift SVN r29789
2015-06-29 20:45:50 +00:00
Dave Abrahams
e3ab9d4e27 [stdlibunittest] Make some globals class static
Swift SVN r29788
2015-06-29 20:45:49 +00:00
Dave Abrahams
7aed41190f [stdlibunittest] Automatically reset common test environment
Swift SVN r29787
2015-06-29 20:45:48 +00:00
Dave Abrahams
a35204ca55 [stdlibunittest] logging sequence/generator wrappers
Swift SVN r29786
2015-06-29 20:45:46 +00:00
Joe Groff
2630dba793 Runtime: Rename Box2 functions to Box.
Swift SVN r29763
2015-06-27 18:10:17 +00:00
Dmitri Hrybenko
82122f9362 stdlib: fixit-based migrations for generic parameter renames
rdar://21538940

Swift SVN r29756
2015-06-27 04:06:27 +00:00
Dave Abrahams
dcd46ea6df [stdlib] A system for concise testing of customization points.
This approach should help us massively reduce the amount of code it
takes to verify that the architecture of our protocols works as
expected.  Pair-programmed with Dmitri Hrybenko.

Swift SVN r29752
2015-06-27 02:31:26 +00:00