Commit Graph

10155 Commits

Author SHA1 Message Date
Gwen Mittertreiner
defd518fa3 Merge pull request #25334 from gmittert/DeviceIoControl
Add WinSDK constants to get Symlink Information
2019-06-11 09:39:21 -07:00
Slava Pestov
712927c494 Sema: Go back to synthesizing hashValue on _StoredBridgedNSError conformers
Commit e0bba70 added a default implementation, however this is wrong
for non-imported types.

Instead, synthesize the body as before. Since this is one of the few
derived methods that can appear on an imported type, make sure to
build fully type-checked AST.

Fixes <rdar://problem/51322302>.
2019-06-11 02:46:10 -07:00
Pavol Vaskovic
2bc648c26b [stdlib] Lemire’s Nearly Divisionless Random Integer Generation (#25286)
* [stdlib] Lemire’s nearly divisionless random int

Implementation of Daniel Lemire’s “Fast Random Integer Generation in Interval”
See https://arxiv.org/pdf/1805.10941.pdf

* [stdlib] Simpler, optimized expression

* [stdlib] O'Neill’s modulo optimization

See http://www.pcg-random.org/posts/bounded-rands.html#optimizing-modulo

* [stdlib] Remove modulo optimization

Swift, compared to C, seems unable to generate tightly fused instructions here for some reason (probably the division by zero check?)… removing.

* [stdlib] Keep OpenBSD debiasing method on 32-bit

systems until the https://bugs.swift.org/browse/SR-10910 is resolved.

* [stdlib] TODO FIXME SR-10912

Remove the old OpenBSD generation method, once 32-bit systems support multipliedFullWidth on UInt64.
2019-06-10 22:44:09 -04:00
Karoy Lorentey
89b918a35a [Foundation] Temporarily revert to 9999 versions 2019-06-10 17:46:03 -07:00
Scott Perry
b10632811f [Foundation] Bridge difference APIs between Foundation and swift stdlib
rdar://problem/51604652
2019-06-10 17:45:54 -07:00
Gwen Mittertreiner
2a76bcb032 Add WinSDK constants to get Symlink Information
Added FSCTL_GET_REPARSE_POINT, FSCTL_SET_REPARSE_POINT,
FSCTL_DELETE_REPARSE_POINT to allow manipulation of reparse points via
DeviceIoControl
2019-06-10 14:12:31 -07:00
Saleem Abdulrasool
ad913239ee Merge pull request #25161 from drodriguez/android-backtraces
[android] Basic support for backtraces.
2019-06-10 13:44:51 -07:00
Steve (Numerics) Canon
4b5a85a34d Fix a bug in root and add a test case for it.
For odd roots of negative values, we need to take the root of the *magnitude* of the number to avoid a NaN from the platform's implementation of `pow`, then restore the sign afterwards. We had the basic logic in place already, but were missing the step of taking the magnitude first. Also modified a test case to find this error.
2019-06-10 11:50:36 -04:00
Saleem Abdulrasool
2bc397be59 Merge pull request #25292 from drodriguez/windows-fix-numeric-parsing
[windows] Fix usage of strtof/d/ld function usage.
2019-06-08 16:21:00 -07:00
Azoy
f79eb3b8d0 swift_demangle: update buffer size after copying 2019-06-07 18:06:32 -05:00
Kristaps Grinbergs
f0e3a99f97 [Doc] [SR-10094] Add missing documentation for SE-0237
https://bugs.swift.org/browse/SR-10094
2019-06-07 14:32:42 -07:00
Daniel Rodríguez Troitiño
19a1e2c07d [windows] Fix usage of strtof/d/ld function usage.
The error conditions for underflow or overflow weren't being checked,
which caused problems in some tests.
2019-06-06 13:09:15 -07:00
Mishal Shah
c2848e793f Merge pull request #25236 from apple/update-master-xcode-11-beta1
Update master to build with Xcode 11 beta, macOS 10.15, iOS 13, tvOS 13, and watchOS 6 SDKs
2019-06-06 11:22:40 -07:00
Mishal Shah
817ea129f2 Revert "Use the remaining half bit in the refcount to bypass ObjC deallocation overhead" 2019-06-05 23:10:34 -07:00
swift-ci
189bd6c13b Merge pull request #25102 from Catfish-Man/no-objc-complications-2 2019-06-05 21:24:41 -07:00
David Smith
8abffa7d89 Use the remaining half bit in the refcount to bypass ObjC deallocation overhead 2019-06-05 14:10:19 -07:00
Daniel Rodríguez Troitiño
a7025522a4 [android] Basic support for backtraces.
Android doesn't support the GNU backtrace call, but unwind.h is there to
help. The code is a little bit more complicated than a simple backtrace
call, but it is just a callback and the context struct.

Sadly, it seems that -funwind-tables is needed in every piece of code
that the backtrace needs to traverse, which means that at least the
runtime and the stubs need -funwind-tables. However, the flag has been
enabled for all targets (only on Android), just in case some other code
ends up being in the stack. This might only be necessary for ARM
targets, but currently we only build ARM targets in Android. The Swift
parts of the stack seems to have unwind information and can be unwind.

Another problem at the moment is the symbols from the executable are
normally missing. To get symbol names two things need to happen: the
symbol has to be public (so it is an exported symbol, and not just a
local symbol that dladdr seems to not provide the name), and the linker
has to be invoked with -export-dynamic. Without those two pieces, the
addresses are returned (and match the binary just fine), but no names
are printed.
2019-06-05 13:12:04 -07:00
mishal_shah
1e38fc3030 Update master to build with Xcode 11 beta, macOS 10.15, iOS 13, tvOS 13, and watchOS 6 SDKs 2019-06-03 22:50:02 -07:00
Joe Groff
4ed8de10f9 Revert "Revert "Use autolinking to pull in compatibility libraries."" 2019-06-03 20:10:51 -07:00
Joe Groff
a7cc3a38cc Revert "Use autolinking to pull in compatibility libraries." 2019-06-03 14:18:39 -07:00
Joe Groff
a740ee55b2 Merge pull request #25148 from jckarter/runtime-compatibility-autolink
Use autolinking to pull in compatibility libraries.
2019-06-03 08:22:49 -07:00
Saleem Abdulrasool
33767d6052 runtime: silence a unused definition warning (NFC)
When building without assertions, the variable will be unreferenced on
non-ObjC runtimes.  Sink the evaluation into the assertion and move the
declaration into the ObjC runtime case.
2019-06-02 11:22:35 -07:00
moatom
2e95a0d265 Fix include guards 2019-06-02 12:10:43 +09:00
Slava Pestov
ec4c597156 stdlib: ManagedBuffer.init(_doNotCallMe:) was ABI in Swift 5 and should be @usableFromInline 2019-06-01 00:08:05 -04:00
Karoy Lorentey
fb55fc3be8 [redux][Foundation] Fix availability of NSValue.value(of:) (#25179)
* [Foundation] Fix availability of NSValue.value(of:)

(cherry picked from commit fbe5563d60)

* [Foundation] NSValue.value(of:): Reinstate runtime OS version check
2019-05-31 17:36:24 -07:00
Joe Groff
dd91bc2180 Install compatibility archive alongside shared libraries.
Although it's a static archive, its use is only relevant to dynamically linked builds of the
standard library. (If you're statically linking a Swift runtime into your process, you don't
need to worry about compatibility with older runtimes.)
2019-05-31 13:11:20 -07:00
Joe Groff
6442f3ede0 Install swiftCompatibility50 as part of the compiler component 2019-05-31 13:11:20 -07:00
Joe Groff
dffd1b27a1 Use autolinking to pull in compatibility libraries.
Many build systems that support Swift don't use swiftc to drive the linker. To make things
easier for these build systems, also use autolinking to pull in the needed compatibility
libraries. This is less ideal than letting the driver add it at link time, since individual
compile jobs don't know whether they're building an executable or not. Introduce a
`-disable-autolink-runtime-compatibility` flag, which build systems that do drive the linker
with swiftc can pass to avoid autolinking.

rdar://problem/50057445
2019-05-31 13:11:14 -07:00
eeckstein
896a0b0fe3 Merge pull request #25154 from eeckstein/dynamic-replaceable
IRGen/runtime: change the code generation for dynamically replaceable functions
2019-05-30 20:00:57 -07:00
Ben Cohen
e9d4687e31 De-underscore @frozen, apply it to structs (#24185)
* De-underscore @frozen for enums

* Add @frozen for structs, deprecate @_fixed_layout for them

* Switch usage from _fixed_layout to frozen
2019-05-30 17:55:37 -07:00
Erik Eckstein
7a5de47aa1 runtime: change the naming of TLS related stuff to make it more general and not specific to exclusivity checking.
Just a refactoring, NFC
2019-05-30 15:28:16 -07:00
Erik Eckstein
2ea531c3b3 IRGen/runtime: change the code generation for dynamically replaceable functions
Instead of a thunk insert the dispatch into the original function.
If the original function should be executed the prolog just jumps to the "real" code in the function. Otherwise the replacement function is called.
There is one little complication here: when the replacement function calls the original function, the original function should not dispatch to the replacement again.
To pass this information, we use a flag in thread local storage.
The setting and reading of the flag is done in two new runtime functions.

rdar://problem/51043781
2019-05-30 15:28:16 -07:00
swift-ci
9571d46c89 Merge pull request #25131 from stephentyrone/de-gyb-fixedarray 2019-05-29 20:02:27 -07:00
Steve (Numerics) Canon
957384129a It turns out that _SmallBuffer<T> simply isn't used at all
... so that's another vestigial static-buffer we can eliminate.
2019-05-29 19:43:39 -04:00
Steve (Numerics) Canon
27ccf1b914 De-GYB FixedArray.swift
It turns out that 16 is the only size that the stdlib actually uses, so the .gyb isn't eliminating any boilerplate anyway.
2019-05-29 19:19:54 -04:00
Joe Groff
2a28948a69 Merge pull request #25030 from jckarter/SR-10600-back-deploy
Introduce a backward-deployment library for SR-10600.
2019-05-29 15:02:02 -07:00
Daniel Rodríguez Troitiño
770bba91bd [android] Fix Bionic modulemap file syntax.
A line was forgotten in the rewrite which break the Android builds.
2019-05-29 11:04:42 -07:00
Slava Pestov
3917268b35 stdlib: Work around associated type inference bugs 2019-05-28 22:08:31 -04:00
Saleem Abdulrasool
79ceeaa880 Merge pull request #25082 from compnerd/bionic-is-not-glibc
Platform: attempt to split out the bionic modulemap
2019-05-28 15:39:36 -07:00
Itai Ferber
6171d68bfa Merge pull request #25065 from ikesyo/fix-dataprotocol-lastrange
Fix `DataProtocol.lastRange(of:)` (and cherry-pick Data.swift changes from swift-5.0-branch)
2019-05-28 09:54:16 -07:00
Sho Ikeda
44f0e93747 Merge pull request #25067 from ikesyo/avoid-fallthrough-where-appropriate
[gardening] Avoid fallthrough where appropriate (for readability/understandability)
2019-05-29 00:27:05 +09:00
Sho Ikeda
2019a97e55 Merge pull request #25066 from ikesyo/use-isempty-over-count
[gardening] Use `Collection.isEmpty` over `Collection.count`
2019-05-29 00:24:48 +09:00
Saleem Abdulrasool
d48220dd62 Platform: attempt to split out the bionic modulemap
This splits out the bionic modulemap from the glibc modulemap.  They are
sufficiently different that the duplication is worth it.  Furthermore,
it will enable properly identifying the libc on android.  Once fully
detangled, this will enable the use of bionic on non-android platforms.
2019-05-27 12:34:27 -07:00
Turushan Aktay
c61691919b Fix documentation typos. 2019-05-26 14:17:45 +02:00
Sho Ikeda
c1bb945124 [gardening] Avoid fallthrough where appropriate (for readability/understandability) 2019-05-26 09:50:02 +09:00
Sho Ikeda
a35c9f0c60 [gardening] Use Collection.isEmpty over Collection.count 2019-05-26 09:35:20 +09:00
swift-ci
b088acb66e Merge pull request #24767 from ikesyo/remove-unnecessary-breaks 2019-05-25 16:15:06 -07:00
Sho Ikeda
55b300f852 Fix DataProtocol.lastRange(of:) (and cherry-pick Data.swift changes from swift-5.0-branch)
`DataProtocol.lastRange(of:)` is correct in swift-5.0-branch, but not in master and swift-5.1-branch.
2019-05-26 07:26:33 +09:00
Federico Zanetello
afcf4b6991 fix documentation typo (#25061) 2019-05-25 12:43:49 -05:00
Joe Groff
9e1907a2ed Introduce a backward-deployment library for SR-10600.
Build a static archive that can be linked into executables and take advantage of the Swift runtime's
hooking mechanism to work around the issue Doug fixed in https://github.com/apple/swift/pull/24759.
The Swift 5.0 version of swift_conformsToProtocol would return a false negative in some cases where
a subclass conforms using an inherited conformance, so work around this by successively retrying
the original implementation up the superclass chain to try to find a match.
2019-05-24 09:28:49 -07:00