Commit Graph

13817 Commits

Author SHA1 Message Date
Nate Cook
6d534ecb09 Fix swift_reflectionMirror_recursive* when called on pure ObjC classes. (#33143) 2020-07-28 12:13:43 -05:00
eeckstein
5fffeb81fb Merge pull request #33128 from eeckstein/string-optimization
SIL optimizer: Add a new string optimization
2020-07-28 10:17:28 +02:00
Mishal Shah
3a50f93c60 Merge pull request #33142 from natecook1000/nate/stdlib-stability-abi
[stdlib] Only include _getMetadataSection functions in stdlib builds w/ assertions
2020-07-28 00:03:53 -07:00
Nate Cook
014918c0ca Only include _getMetadataSection functions in stdlib builds w/ assertions 2020-07-27 17:12:27 -05:00
Erik Eckstein
b42bce4ba4 stdlib: changes for the StringOptimization
To be able to constant fold string interpolation, the right semantic attributes must be in place.
Also, the interpolation's write function must be inlinable.
For the _typeName constant folding, a semantic attribute is required.
2020-07-27 21:32:56 +02:00
Robert Widmann
d1ae69383d Merge pull request #32312 from valeriyvan/RemoveRedundantBufferZeroingUnicodeScalarProperties
[stdlib] Eliminates redundant buffer zeroing in UnicodeScalarProperties
2020-07-26 12:53:23 -07:00
Augusto Noronha
3cb8f9b6fc Add entrypoints to the runtime that exposes metadata necessary for reflection tests on Linux (#32339) 2020-07-24 15:26:15 -07:00
Alex Efremov
17eafafbd2 [AutoDiff] [stdlib] Fix a bug in _jvpMultiply in SIMDDifferentiation.swift.gyb (#32963) 2020-07-23 14:25:57 -07:00
Suyash Srijan
42779d66c7 [NFC] Remove some dead variadic tuple code (#33059)
* [ASTDemangler] Remove 'isVariadic' parameter from 'createTupleType'

* [TypeDecoder] Remove 'variadic' argument from 'createTupleType' call

* [Reflection] Remove support for variadic from TupleTypeRef

* [Remote] Remove 'variadic' argument from 'createTupleType' call

* [Runtime] Remove 'variadic' parameter from createTupleType in MetadataLookup

* [Test] Remove variadic tuple typeref tests

* [Reflection] Restore accidentally deleted code from 'visitFunctionTypeRef'
2020-07-23 17:02:16 +01:00
Mike Ash
771083a014 Merge pull request #32795 from mikeash/swift-inspect-cache-node-dump
[swift-inspect] Add a command for dumping metadata cache nodes.
2020-07-23 11:01:28 -04:00
Dan Zheng
c28d9cd7ea [AutoDiff] NFC: fix typos. (#33002) 2020-07-20 11:41:39 -07:00
Erik Eckstein
666c5e087c stdlib: enable COW sanity checks with an environment variable
Instead of doing the sanity checks by default (with an assert-build of the stdlib), only do the checks if the environment variable SWIFT_DEBUG_ENABLE_COW_SANITY_CHECKS is set to true.

The checks can give false alarms in case a binary is built against a no-assert stdlib but run with an assert-stdlib.
Therefore only do the checks if it's explicitly enabled at runtime.

rdar://problem/65475776
2020-07-20 11:23:42 +02:00
tbkka
728abe99c2 Reflection Library crash inspecting certain BoundGeneric types (#32983)
* Reflectio Library crash inspecting certain BoundGeneric types

If the parent of a BoundGeneric type is not a NominalType (for example, if the
Parent was an ObjCClass type) the `getDepth()` method would end up reading a
Parent reference from uninitialized memory.  The resulting garbage pointer
would cause a crash in the tool that was using the reflection library
(leaks, instruments, etc.)

Of course, this does not always result in a crash, since the memory in question
is frequently zeroed, resulting in a nil pointer that is safely detected.

Resolves rdar://54173375

* Fix compile
2020-07-19 21:51:35 -07:00
Michael Gottesman
d7bd5aee2a Merge pull request #32976 from gottesmm/pr-5545885200c7c4f352e37991d9a5a10065d828da
[opt-remark] Always emit opt-remarks for the stdlib and benchmarks
2020-07-18 23:24:25 -07:00
Michael Gottesman
2ea7cd2b87 [cmake] Generate opt-remark bitstream files for the stdlib. 2020-07-18 20:19:27 -07:00
Joe Groff
bac92e926b Merge pull request #32894 from jckarter/singleton-witness-table-instantiation
[WIP] Avoid creating a ConcurrentMap for nongeneric instantiated witness tables
2020-07-17 14:15:47 -07:00
Dan Zheng
f3685f9a12 [AutoDiff] Conform Optional to Differentiable. (#32948)
Make `Optional` conditionally conform to `Differentiable` when the `Wrapped` type does.
`Optional.TangentVector` is a wrapper around `Wrapped.TangentVector?`.

Also, fix `Array.TangentVector.zeroTangentVectorInitializer`.

Resolves TF-1301.
2020-07-17 12:07:52 -07:00
Brent Royal-Gordon
4394e92c3f Merge pull request #32700 from brentdax/magical-and-evolutionary
Revise #file changes from SE-0274
2020-07-17 01:57:23 -07:00
nate-chandler
5141219a69 Merge pull request #32506 from nate-chandler/runtime/add-swift_getCanonicalSpecializedMetadata
[Runtime] Add entry point to canonicalize metadata.
2020-07-16 12:18:58 -07:00
Joe Groff
88d9641df8 Avoid creating a ConcurrentMap for nongeneric instantiated witness tables 2020-07-16 11:59:57 -07:00
swift-ci
1224d8b2d3 Merge pull request #32915 from airspeedswift/transparent-stringpointer 2020-07-16 10:53:54 -07:00
Dan Zheng
fcfacddbf2 [AutoDiff] Register VJPs for SIMD subscript(_: Int) setters. (#32747) 2020-07-16 07:48:12 -07:00
Erik Eckstein
0102fe8b15 stdlib: remove some inlinable annotations from Substring's and String's subscript
Inlining those operations does not really give any benefit.
Those operations are complex and most likely, cannot be folded into simpler patterns after inlining, anyway.
Reduces some code size for cases where those functions were inlined (due to a not perfect inlining heuristics).
2020-07-16 12:46:42 +02:00
Ben Cohen
7adafcaaaa Make _convertConstStringToUTF8PointerArgument transparent 2020-07-15 17:27:33 -07:00
Nate Chandler
b0fc8daa83 [Runtime] Add entry point to canonicalize metadata.
The new function swift_getCanonicalSpecializedMetadata takes a metadata
request, a prespecialized non-canonical metadata, and a cache as its
arguments.  The idea of the function is either to bless the provided
prespecialized metadata as canonical if there is not currently a
canonical metadata record for the type it describes or else to return
the actual canonical metadata.

When called, the metadata cache checks for a preexisting entry for this
metadata.  If none is found, the passed-in prespecialized metadata is
added to the cache.  Otherwise, the metadata record found in the cache
is returned.

rdar://problem/56995359
2020-07-15 15:27:36 -07:00
Mike Ash
b65d2b5f99 [Reflection][swift-inspect] Add a command for dumping metadata cache nodes. 2020-07-15 14:01:49 -04:00
Saleem Abdulrasool
37ee73cda9 runtime: correct the asprintf shim for Windows
Ensure that the string that is formed from the `asprintf` call is
null-terminated.  The `_vsnprintf` call will not null-terminate the
string if the length is not sufficient.
2020-07-14 20:03:17 -07:00
Stephen Canon
103961a7d5 Make Float16 unavailable on macOS and macCatalyst, mirroring Xcode's Swift. (#32868)
LLVM doesn't have a stable ABI for Float16 on x86 yet; we're working with Intel to get that fixed, but we don't want to make the type available on macOS until a stable ABI is actually available, because we'd break binaries compiled before any calling convention changes if we do.
2020-07-14 20:42:12 -04:00
Karoy Lorentey
108094d82b Merge pull request #32876 from lorentey/simplify-checkclass
[Foundation] Work around name resolution wrinkle in Swift 5.3
2020-07-14 14:45:25 -07:00
Nate Cook
3af1deb447 [stdlib] Add _forEachField(of:options:body:) function (#32873)
This function walks all the fields of a struct, class, or tuple, and calls
`body` with the name, offset, and type of each field. `body` can perform
any required work or validation, returning `true` to continue walking fields
or `false` to stop immediately.
2020-07-14 16:31:32 -05:00
Alex Efremov
cff144af13 [AutoDiff][stdlib] Add JVPs to SIMDDifferentiation.swift.gyb (#32854) 2020-07-14 12:59:36 -07:00
Karoy Lorentey
1d1205d669 [Foundation] Work around name resolution in Swift 5.3
In 5.3, if an Objective-C method declared in a header shares the same name as an inaccessible Swift method, then the compiler considers the method to be inaccessible. As a workaround, rename the Swift method and stop emitting a symbol for it.

This is not a problem on the trunk, but there is no reason to expose this symbol there, either.
2020-07-14 12:06:31 -07:00
Karoy Lorentey
40d7da4fad Merge pull request #32019 from NevinBR/patch-1
[SR-12881] DefaultIndices dynamic dispatch
2020-07-14 12:05:12 -07:00
Eric Miotto
e497089d88 [build] don't embed bitcode for target libs built for simulators (#32871)
At the same time rework condition so that it is more amenable to code
searches.

Addresses rdar://65501878
2020-07-14 11:37:46 -07:00
Brent Royal-Gordon
327ea8bce2 [Staging] Force stdlib into “Swift 6 mode” for #file
We ultimately want to explicitly change standard library uses of #file to #fileID, but once we do, previous compilers won’t be able to build the standard library. So instead, we will temporarily build the standard library with -enable-experimental-concise-pound-file, which should have the same effect, but will back-deploy to compilers going back several months.
2020-07-13 14:06:55 -07:00
Mike Ash
da111087df [Stdlib] Handle EINTR in readLine.
rdar://problem/65366135
2020-07-13 10:58:17 -04:00
Alex Efremov
bfcf12bac6 [AutoDiff][stdlib] Add JVPs to ArrayDifferentiation.swift (#32840)
Adds JVPs to `Array` and `Array.DifferentiableView`

`_jvpDifferentiableReduce` is taken from #29324
2020-07-12 15:04:33 -07:00
zoecarver
3e4ddb13d6 [NFC] Remove __swift_mode_t.
Removes the "__swift_mode_t" type from SwiftShims. This type is no longer used anywhere.
2020-07-10 08:38:10 -07:00
Karoy Lorentey
d966dbb511 Merge pull request #32676 from lorentey/simplify-checkclass
[Foundation] Update & simplify class name stability check
2020-07-09 18:50:25 -07:00
nate-chandler
69ff5be8ca Merge pull request #32791 from nate-chandler/generic-metadata-prespecialization-components/consider-conformances-ptrauth
[metadata prespecialization] Ptrauth for compared protocol conformances.
2020-07-09 16:10:02 -07:00
Nate Chandler
2701a0809b [metadata prespecialization] Ptrauth for compared protocol conformances.
Two protocol conformance descriptors are passed to
swift_compareProtocolConformanceDecriptors from generic metadata
accessors when there is a canonical prespecialization and one of the
generic arguments has a protocol requirement.

Previously, the descriptors were incorrectly being passed without
ptrauth processing: one from the witness table in the arguments that are
passed in to the accessor and one known statically.

Here, the descriptor in the witness table is authed using the
ProtocolConformanceDescriptor schema.  Then, both descriptors are signed
using the ProtocolConformanceDescriptorsAsArguments schema.  Finally, in
the runtime function, the descriptors are authed.
2020-07-09 11:45:16 -07:00
Florian Friedrich
67073c7a67 Fix typo in comparison in comments and help text 2020-07-09 18:05:25 +02:00
Karoy Lorentey
505d87ca26 [Foundation] Extract logging details to a standalone function 2020-07-08 19:57:04 -07:00
nate-chandler
80a5fb262a Merge pull request #32695 from nate-chandler/rdar64672291
[Runtime] Let existential types satisfy superclass requirements.
2020-07-08 09:37:57 -07:00
Zoe Carver
7eff49c1b6 [cxx-interop] [nfc] Remove swift namespace from SwiftShims in C++ mode. (#32715)
Most SwiftShims were put in the swift namespace in C++ mode which broke certain things when importing them in a swift file in C++ mode. This was OK when they were only imported as part of the swift runtime but, now they are used in C++ mode both in the swift runtime and when C++ interop is enabled.

This broke when C++ interop was enabled because the `Swift` module contains references to symbols in the SwiftShims headers which are built without C++ interop enabled (no "swift" namespace). But, when C++ interop is enabled, the SwiftShims headers would put everything in the swift namespace meaning the symbols couldn't be found in the global namespace. Then, the compiler would error when trying to deserialize the Swift module.
2020-07-08 08:43:26 -07:00
swift-ci
cbe2dfc119 Merge pull request #32729 from valeriyvan/snippencharacter 2020-07-07 13:36:35 -07:00
swift-ci
c9c295a889 Merge pull request #32727 from valeriyvan/snippetbool 2020-07-07 13:36:31 -07:00
Valeriy Van
adeb97a102 Fixes example snippet in Character.swift 2020-07-07 00:00:21 +02:00
Valeriy Van
b7076e4116 Fixes example snippets in Bool.swift 2020-07-06 23:45:31 +02:00
Mike Ash
17833beb7b [Runtime] Fix SWIFT_ISA_MASK for ARM64 simulators.
rdar://problem/65059017
2020-07-06 15:20:20 -04:00