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