Commit Graph

29 Commits

Author SHA1 Message Date
Mike Ash d0017555c7 [Runtime] Faster dynamic exclusivity checking implemented in Swift.
Replace C++ implementation of swift_beginAccess and swift_endAccess with (almost) pure Swift implementation. Helpers remain in C++ for TLS, getting return addresses, and raising a fatal error on violations.

This change also moves the exclusivity access set head from the shared SwiftTLSContext structure to a dedicated TLS key. This improves performance, which is important for exclusivity checking. This is particularly the case where we can inline TLS access with a constant key, as on Darwin ARM64.

The code that bridges exclusivity tracking into Concurrency remains in C++. The new Swift implementation exposes a few helpers for it to use as a replacement for directly manipulating the C++ implementation.

rdar://161122309
2026-01-14 12:23:55 -05:00
Doug Gregor fba2287e94 Add dummy symbols for Swift runtime unit tests 2023-10-30 10:16:33 -07:00
Tim Kientzle 4c4975c65a Runtime tests need stub definitions of certain stdlib functions
(Thanks to @etcwilde for helping me track this down.)
2023-09-28 10:32:19 -07:00
Josh Soref 0ce1a02843 Spelling unittests (#58560)
* spelling: existential

Signed-off-by: Josh Soref <jsoref@users.noreply.github.com>

* spelling: indices

Signed-off-by: Josh Soref <jsoref@users.noreply.github.com>

* spelling: interfaces

Signed-off-by: Josh Soref <jsoref@users.noreply.github.com>

* spelling: witnesses

Signed-off-by: Josh Soref <jsoref@users.noreply.github.com>

Co-authored-by: Josh Soref <jsoref@users.noreply.github.com>
2022-05-04 19:23:54 -07:00
Saleem Abdulrasool 5ae2368eb5 unittests: add stub for __SwiftValue
This placeholds the `__SwiftValue` metadata necessary for the Swift
runtime tests.
2020-02-12 14:59:12 -08:00
Saleem Abdulrasool c4f448578e Revert "runtime: add a workaround for Windows build"
This reverts commit efaf1fbefa.
Add a much more palatable workaround for the unit tests.  Rather than
adding the dllimport for the symbols, locally define the required
symbols.  This list is sufficient to restore the ability to build tests
for Windows.
2019-09-16 15:31:01 -07:00
Jason Mittertreiner 4e0b092fbe Fixing Driver tests on Windows (#20209) 2018-12-10 18:27:37 -08:00
Saleem Abdulrasool 50c5a83beb tests: stub out more of the stdlib
Key paths need metadata stubbed out for the unit tests.
2018-11-19 20:17:35 -08:00
swift-ci c44981ae05 Merge pull request #20635 from compnerd/stubs 2018-11-16 13:03:10 -08:00
Doug Gregor cc2ee165a1 [ABI] Use generic environment to handle mangled generic keypath types.
Always use mangled type names to represent type metadata in keypath patterns.
For generic types, use the generic environment to pull substituted types
from the instantiation arguments.

Finishes the type metadata part of rdar://problem/38038799.
2018-11-16 10:13:07 -08:00
Saleem Abdulrasool 2848946dc6 unittests: provide additional metadata stubs
Provide additional stubs for known metadata.  These are used in the unit
tests which do not link against the standard library and thus do not
have the known metadata.  Augment the existing metadata stubs with the
new decorated names and entries.
2018-11-16 08:48:54 -08:00
Joe Groff bbbf02e5f8 Merge pull request #19415 from jckarter/better-missing-metadata-warnings
Make runtime warnings about missing metadata more descriptive.
2018-09-20 15:40:17 -07:00
Joe Groff e9b45178a0 Make runtime warnings about missing metadata more descriptive.
Describe the consequences of missing metadata instead of just posting a scary
message about a bug.  Furthermore, since these warnings tend to show up in
playgrounds, and probably aren't relevant to the user of a playground, suppress
them when running in a playground. rdar://problem/44642942
2018-09-20 13:03:54 -07:00
Erik Eckstein 39bb14b094 change mangling prefix from $S to $s
This is the final ABI mangling prefix

rdar://problem/38471478
2018-09-19 13:55:11 -07:00
Joe Groff 70c60e5186 KeyPaths: Make references to let properties properly immutable. 2018-08-17 10:59:36 -07:00
Doug Gregor 7952a19f31 [Mangling] Introduce known manglings for many more standard library types.
Since the mangling scheme and set of standard library types is effectively
fixed now, introduce known mangling substitutions for a number of new
standard library types, filling out the S[A-Za-z] space.

Reduces standard library binary size by ~195k.
2018-06-19 23:24:38 -07:00
Lily Vulcano 1377ab7d7e Turn on ‘as’ bridging on Darwin. 2018-05-30 15:07:22 -07:00
Ben Langmuir 628b6a1fc7 Revert "Turn on ‘as’ bridging on Linux." 2018-05-17 14:54:35 -07:00
Lily Vulcano b9455930ee Turn on ‘as’ bridging on Darwin. 2018-05-17 09:59:39 -07:00
Andrew Breckenridge 2e3e899723 unittests/runtime: Add more stubs related to protocol conformance
Found whilst attempting to build the runtime tests on Windows
2018-02-23 13:18:47 -08:00
Erik Eckstein cd3d50a5d9 ABI: Change the mangling prefix from _T0 to $S 2018-01-06 13:55:59 -08:00
Pavel Yaskevich 10c385d1b7 [Mangling/ABI] Add special LabelList to store parameter labels
Instead of mangling parameter labels as part of the function type
move them to the end of the function name instead, to match the
language semantics.
2017-12-18 15:44:24 -08:00
Greg Parker 1d7715bf86 [test] Fix SwiftRuntimeLongTests after symbol renaming. (#13230) 2017-12-03 04:39:26 -08:00
Saleem Abdulrasool bff9edc88b stdlib: fix the build with macOS long tests
When building swift on macOS with long tests, the build would fail with
undefined references to these symbols.  The undefined symbols were
expected to be present in swiftCore against which we link.  However,
because the symbols are marked as internal, they would be dead stripped
before the dylib was constructed.  As a result, we would end up with
undefined references to these symbols.  Expose the additional internal
interfaces for now so that we can build the tests.
2017-11-29 15:00:17 -08:00
Greg Parker 1e894cd80b [runtime] Clean up symbols in error machinery. (#12853)
* [runtime] Clean up symbols in error machinery.

* [runtime] Clean up symbols in Foundation overlay.

* [runtime] Clean up symbols in collections and hashing.

* [runtime] Remove symbol controls from the Linux definition of swift_allocError.

* [tests] Add more stub functions for tests that link directly to the runtime.
2017-11-15 22:20:11 -08:00
Hugh Bellamy 05a50fd978 Remove extern "C" from uses of SWIFT_RUNTIME_STDLIB_INTERFACE 2017-01-22 18:32:17 +00:00
practicalswift 6d1ae2a39c [gardening] 2016 → 2017 2017-01-06 16:41:22 +01:00
practicalswift 797b80765f [gardening] Use the correct base URL (https://swift.org) in references to the Swift website
Remove all references to the old non-TLS enabled base URL (http://swift.org)
2016-11-20 17:36:03 +01:00
Dmitri Gribenko b162f60070 runtime: make _SwiftNativeNSError use the Hashable conformance, if available
If the Swift error wrapped in a _SwiftNativeNSError box conforms to
Hashable, the box now uses the Swift's conformance to Hashable.

Part of rdar://problem/27574348.
2016-08-09 00:49:20 -07:00