Commit Graph

1782 Commits

Author SHA1 Message Date
Slava Pestov
9555a593ec IRGen: Refactor swift_initClassMetadata_UniversalStrategy() to use TypeLayout
Both swift_init{Struct,Class}Metadata_UniversalStrategy() wish to
avoid instantiating type metadata for field types if possible.

The struct version took an array of the more general TypeLayout objects,
whereas the class version was implemented earlier and took an array
of size/alignment pairs.

Since we can emit static TypeLayouts for all fixed-size types,
the class version can use the more general TypeLayout type also.
2017-08-09 01:07:09 -07:00
Arnold Schwaighofer
d8abd2fed9 runtime: Fix overflow of swift_unownedRetain reference counts
On 32bit platforms there are 7 bits reserved for the unowned retain count. This
makes overflow a likely scenario. Implement overflow into the side table.

rdar://33495003
2017-08-02 07:12:47 -07:00
Saleem Abdulrasool
21a27b05e6 stdlib: tweak printf specifier to be more portable
This just adjusts the printf specifier to use the standard defined
printf conversion specifier rather than assuming that %zd will convert
properly.  NFC.
2017-07-19 10:14:03 -07:00
Jordan Rose
1e38b4b624 Merge pull request #10893 from jrose-apple/are-you-having-issues
[stdlib] Surface NSKeyedArchiver issues in Xcode.
2017-07-13 12:53:01 -07:00
Jordan Rose
9c10398514 [runtime] Expose reportToDebugger as swift_reportToDebugger.
...so that the overlays can use it. See next commit.
2017-07-13 11:18:41 -07:00
Greg Parker
79e33808f1 Fix swift_getObjectType() of class objects. 2017-07-12 20:37:20 -07:00
Greg Parker
fb1b8c9d75 Simply no-ObjC-interop case. 2017-07-12 20:37:20 -07:00
Greg Parker
05de18dc0a [runtime] swift_getObjectType() must ignore KVO's artificial subclasses.
Fixes SR-4363.
2017-07-12 20:37:20 -07:00
swift-ci
846617fe3c Merge pull request #10907 from CodaFi/mangolia 2017-07-12 16:05:14 -07:00
Robert Widmann
dabe18d2f9 Merge pull request #9605 from tinysun212/pr-no-freelibrary
[stdlib] Fixed image inspection for Win32
2017-07-12 14:44:18 -07:00
Anna Zaks
36a07e9a6b Update swift_demangle and tests to use new symbol mangling. 2017-07-12 13:41:07 -07:00
giginet
74eca0dd2f Fix warning on Xcode 9 beta2 2017-07-10 14:28:21 -07:00
Andrew Trick
91405a7f91 Remove the hash function from the runtime's exclusive access checks.
I expect this to improve the following Onone benchmarks:
- 1.09x accessGlobal
- 1.08x accessInMatSet
- 1.06x accessIndependent

And the preexisting benchmarks:

| TEST                    | DELTA | SPEEDUP   |
|                         |       |           |
| Random                  | -7.9% | **1.09x** |
| MatMul                  | -7.6% | **1.08x** |
| XorShift                | -7.2% | **1.08x** |
| PolymorphicCalls        | -6.2% | **1.07x** |
| NopDeinit               | -6.1% | **1.06x** |
| Ary                     | -6.0% | **1.06x** |
| Integrate               | -5.8% | **1.06x** |
| StringWalk              | -5.5% | **1.06x** |
| ArrayInClass            | -5.2% | **1.06x** |
| MultiFileTogether       | -5.2% | **1.06x** |
| DictionaryHashableClass | -5.2% | **1.05x** |
| MultiFileSeparate       | -4.9% | **1.05x** |
2017-06-29 16:32:35 -07:00
Kuba (Brecka) Mracek
150696f8f6 On Linux, make swift_reportError always print backtraces (#10638)
On Linux, make swift_reportError always print backtraces.
2017-06-27 21:53:55 -07:00
Kuba (Brecka) Mracek
8cb95b8fcd Improve reporting of @objc inference issues from the Swift runtime (#10406)
* Extend Swift runtime issue reporting for @objc inference to include details about the declaration of the method (that is missing the @objc annotation) and a suggested fix-it. This changes the ABI of RuntimeErrorDetails, so we're also bumping the version.

* Update SwiftObject.mm
2017-06-22 21:35:48 -07:00
Kuba (Brecka) Mracek
d29557bd24 Change the signature of reportToDebugger and _swift_runtime_on_report to avoid using 'bool'. It's much easier to work with native-width integers only in LLDB. (#10523) 2017-06-22 21:22:27 -07:00
John McCall
842558058a Merge pull request #10452 from rjmccall/linked-lists-are-really-hard-okay
Fix a linked-list bug with the exclusivity runtime when accesses are not strictly nested
2017-06-22 00:10:26 -04:00
Kuba (Brecka) Mracek
dc3e6c1116 Prevent _swift_runtime_on_report from having its arguments optimized out. Turns out an empty "asm volatile" isn't enough and we need to explicitly ask that the arguments are also not optimized out. (#10456) 2017-06-21 16:54:54 -07:00
John McCall
4399bd37fa Fix some embarrassing list-management bugs with the exclusivity runtime
which can arise when accesses are not strictly nested.
2017-06-21 19:04:46 -04:00
Kuba (Brecka) Mracek
fec8d72ea3 Debugger hook/breakpoint for issue reporting from the Swift runtime (#10293)
* Implements a debugger hook (breakpoint) API and data structure. This structure is passed to the debugger and describes extra information about a fatal error or a non-fatal warning, which should be logged as a runtime issue.

This debugger hook is then used from two places, which currently only log to stderr:
- Runtime exclusivity violations.
- Swift 3 implicit Obj-C entrypoints.

A subsequent LLDB support will be able to catch these callbacks and show the runtime issues in a better way than just logging them to stderr.  When the debugger is not attached, this shouldn't have any effect.
2017-06-19 14:28:19 -07:00
Arnold Schwaighofer
62c1f215ce Fix layering violation I introduced by putting _EmptyBoxStorage into the stubs library (#10373)
* Fix layering violation I introduced by putting _EmptyBoxStorage into the stubs library

Should fix the linkage issue on linux
2017-06-19 10:59:05 -07:00
Arnold Schwaighofer
48e889b51b IRGen: EmptyBoxType's representation cannot be nil because of a conflict with extra inhabitant assumption in indirect enums (#10326)
* IRGen: EmptyBoxType's representation cannot be nil because of a conflict with extra inhabitant assumption in indirect enums

We map nil to the .None case of Optional. Instead use a singleton object.

SR-5148
rdar://32618580
2017-06-17 09:33:41 -07:00
Robert Widmann
b9836e64e2 Merge pull request #9869 from johnno1962a/master
Ensure fatalError message logged on Android
2017-06-07 09:15:04 -07:00
John Holdsworth
ed38b57a48 Revert "Remove cause of crash on Android"
This reverts commit 8248322be0.
2017-06-05 01:59:47 +01:00
John Holdsworth
8248322be0 Remove cause of crash on Android 2017-06-04 23:34:23 +01:00
Arnold Schwaighofer
ca63326e1b Delete unused existential value witnesses from the old existential
implementation

And remove the SWIFT_RUNTIME_ENABLE_COW_EXISTENTIALS flag.
2017-06-02 14:34:41 -07:00
Greg Parker
318f6c1ac5 [runtime] Add swift_unownedIsEqual and swift_unknownUnownedIsEqual.
It is safe to test pointer equality of an unowned variable, even if
the unowned variable refers to a dead object. Allowing this operation
without an unnecessary unowned abort enables some kinds of caching
schemes more cheaply than can be done with weak variables.

rdar://32142240
2017-06-01 13:53:19 -07:00
John Holdsworth
d600e7581d Use #elif 2017-05-30 20:16:40 +01:00
John Holdsworth
e45ddc8955 Ensure fatalError message logged on Android 2017-05-23 01:47:07 +01:00
Michael Ilseman
90a86334dc Merge pull request #9734 from jckarter/implicit-objc-log-newline
Runtime: Add newline to implicit ObjC entrypoint log message.
2017-05-18 10:16:47 -07:00
Joe Groff
56a52ae9eb Runtime: Add newline to implicit ObjC entrypoint log message.
See if this clears up buffering issues in CI. rdar://problem/32272992
2017-05-18 10:08:49 -07:00
Joe Groff
80c6671c39 Runtime: Only complain about a deprecated ObjC entry point once.
We only need to alert the user once. rdar://problem/32229417
2017-05-17 12:05:53 -07:00
Joe Groff
c8a7a442ae Runtime: Include source location information in log messages about deprecated implicit Objective-C entry points.
Make it easier for migration by pinpointing exactly where to insert @objc to keep the entry points in Swift 4 mode. rdar://problem/32230003
2017-05-16 19:02:47 -07:00
Doug Gregor
571853dbbb [SE-0160] Emit runtime warnings by default.
Fixes rdar://problem/32229395.
2017-05-16 14:14:44 -07:00
Han Sangjin
3ae4c7b29e [stdlib] Fixed image inspection for Win32
Removed calling FreeLibrary().
See GetModuleHandle function in MSDN.
2017-05-15 14:28:14 +09:00
Kuba (Brecka) Mracek
a5a59f5aed [runtime] Enhance output from dynamic exclusivity violations. Print current stacktrace and the symbolicated frame of the previous conflicting access. (#9501) 2017-05-12 20:28:28 -07:00
Kuba (Brecka) Mracek
fc7dbefcf8 Revert backtrace ban and start printing backtraces from the runtime again (#9528)
* Revert "[strip -ST] Disable runtime stack trace dumping on Darwin when asserts are disabled."
This reverts commit 6bc28ff1c9.
* Bring back important fixes from the revert of 6bc28ff1c9.
* Change swift::swift_reportError to only print the backtrace in assert builds (swift::warning prints backtrace always).
2017-05-12 15:46:35 -07:00
practicalswift
8a26719344 [gardening] Fix duplicate include. 2017-05-11 16:04:48 +02:00
John McCall
701752c4ff Merge pull request #9431 from rjmccall/dynamic-exclusivity-refinements
Dynamic exclusivity refinements
2017-05-11 02:31:03 -04:00
John McCall
ab250848b4 Downgrade dynamic exclusivity failures to a warning in Swift 3 compatibility mode. 2017-05-10 14:44:59 -04:00
John McCall
e01c31a17c Remember a PC in the exclusivity-tracking set and report it during failures. 2017-05-10 14:44:56 -04:00
Erik Eckstein
0a72cd3dbd runtime: add a comment 2017-05-10 10:08:26 -07:00
John McCall
2525710017 Make the exclusivity-set tracking a singly-linked list.
We'll use this space for something else in a follow-up.
2017-05-10 01:35:34 -04:00
Joe Groff
439d5d6e41 Runtime: swift_getExistentialTypeMetadata should trust the compiler's ordering of protocols in compositions.
The compiler pre-canonicalizes protocol composition types by minimizing constraints and sorting the remaining protocols by module + name, which ought to be globally stable within a program (assuming there aren't multiple modules with the same name, in which case we'll have bigger problems…). The compiler also statically lays out existential types according to its conception of the canonical composition ordering, so the runtime's own attempts to form a stable ordering lead to layout inconsistencies between runtime and compile-time layout, leading to crashes like SR-4477.
2017-05-09 13:32:02 -07:00
Erik Eckstein
b1d5c77cec Runtime support for the NSArchiver class attributes.
Register class names for NSKeyedArchiver and NSKeyedUnarchiver based on the @NSKeyedArchiveLegacy and @_staticInitializeObjCMetadata class attributes.

@NSKeyedArchiveLegacy registers a class name translation.
@_staticInitializeObjCMetadata just makes sure that the metadata of a class is instantiated.

This registration code is executed as a static initializer, like a C++ global constructor.
2017-05-08 14:00:03 -07:00
Michael Gottesman
6bc28ff1c9 [strip -ST] Disable runtime stack trace dumping on Darwin when asserts are disabled.
This commit disables runtime stack trace dumping via dladdr on Darwin when
asserts are disabled.

This stack trace dumping was added as a way to improve the ability to debug the
compiler for compiler developers. This is all well and good but having such a
feature always enabled prevents us from reducing the size of the swift standard
library by eliminating the swift nlist.

rdar://31372220
2017-05-04 16:46:26 -06:00
Jordan Rose
c8d3506e55 Revert "[Mangling] Uniformly use "So" for imported decls." (#9233)
This reverts commit 25985cb764. For now,
we're trying to avoid spurious non-structural changes to the mangling,
so that the /old/ mangling doesn't appear to change. That doesn't mean
no changes at all, but we can save this one for later.
2017-05-03 16:13:29 -07:00
Erik Eckstein
c4002a9398 Use the old mangling for generic ObjC runtime names, which are generated at runtime.
To be backward compatible to existing archives created by the NSKeyedArchiver for generic classes
2017-05-03 10:52:54 -07:00
Arnold Schwaighofer
20c5606767 Merge pull request #9218 from gparker42/GrP-PR-D577DF2B-2EE1-4A46-B586-1EC51BFCC3C9
[runtime] Fix assignment of Any with mismatched types.
2017-05-03 05:07:53 -07:00
Greg Parker
2ad2f26024 [runtime] Fix assignment of Any with mismatched types.
The COW existential implementation sets the existential box's
new value but fails to set the box's new type. Hijinks ensue
when the new value is later used as if it were of the old type.

rdar://31955457
2017-05-03 00:19:21 -07:00