Commit Graph

131 Commits

Author SHA1 Message Date
Joe Groff
8bbfd9840c unittests/runtime/weak.mm: Don't clobber 'isa' of destroyed ObjC object.
We can't do this because the object was deallocated. However, ASan should flag us if we regress on touching deallocated unowned-referenced objects though, so we don't need this. rdar://problem/19677703

Swift SVN r24894
2015-02-02 16:13:20 +00:00
Nadav Rotem
d214e367d0 Remove the custom memory allocator. It was not effective in accelerating the metadata lookups and Greg and Dave have suggested other solutions for accelerating this call.
Swift SVN r24869
2015-01-31 00:44:17 +00:00
Nadav Rotem
bdadc015b7 Add a generic parameter to control the number of threads. NFC.
Swift SVN r24868
2015-01-31 00:44:16 +00:00
Nadav Rotem
278bc16f43 Rename the method. NFC.
Swift SVN r24866
2015-01-31 00:44:15 +00:00
Nadav Rotem
26261cd1fe Allow the allocator to free memory.
Swift SVN r24865
2015-01-31 00:44:14 +00:00
Nadav Rotem
2236ff8153 Use std::distance and add the missing typedefs needed for stl
Swift SVN r24863
2015-01-31 00:44:10 +00:00
Graham Batty
45380a3341 Don't build weak.mm on non-objc platforms.
Also don't link to stdlibunittest since it's weak.mm that needs
it and it's not yet built on non-darwin.

Swift SVN r24847
2015-01-30 18:11:00 +00:00
Joe Groff
af21b0d481 Typo in comment
Swift SVN r24826
2015-01-29 22:52:24 +00:00
Joe Groff
7191b87759 Runtime: Don't touch potentially ObjC unowned-referenced objects to determine their species.
ObjC unowned references are backed by an ObjC weak reference which will eagerly deallocate the object when it's strongly released, so in an unknown-refcount situation, we can't safely dereference the object pointer to determine its Swiftness. We can, however, look at the side table of weak references; if there's an entry for this object, then it's reliably an ObjC object (or it's some other object that got allocated in the reclaimed space for the dead object, but that's a race we fundamentally can't win with this broken design). Fixes rdar://problem/18091547 (modulo the aforementioned reallocation race).

Swift SVN r24825
2015-01-29 22:49:45 +00:00
Joe Groff
f02ba53d97 Reenable the weak reference runtime tests in weak.mm.
Instead of directly referencing a long-dead constructor from the standard library, put a purpose-built function in StdlibUnittest to feed a Swift object reference to the test C code. rdar://problem/18498737

Swift SVN r24816
2015-01-29 17:49:08 +00:00
Nadav Rotem
0b9a79b38b Add a concurrent bump-ptr memory allocator.
Swift SVN r24702
2015-01-24 01:08:04 +00:00
Nadav Rotem
1e02da9465 Add a concurrent memory bank
Swift SVN r24701
2015-01-24 01:08:04 +00:00
Nadav Rotem
1d3a373cbf Add a unit test for the concurrent list.
Swift SVN r24700
2015-01-24 01:08:03 +00:00
Jordan Rose
3958f0b0f9 [unittests] Fix OptionSet->intptr_t test for older Clang versions.
clang-600 doesn't consider explicit conversion operators as satisfying
std::is_constructible, even though actually writing the construction
does work. Just don't run that part of the test if that's how
std::is_constructible behaves.

Swift SVN r24603
2015-01-21 18:15:48 +00:00
Jordan Rose
e618ac37f7 Conditionally give OptionSet a conversion to intptr_t.
...so that OptionSet can be used as the "integer" in a PointerIntPair.

Swift SVN r24528
2015-01-19 23:08:52 +00:00
Jordan Rose
2170a02b16 Fix implementation of OptionSet::contains.
AFAIK no functionality change because no one's been using OptionSet::contains
for anything but single flags.

Swift SVN r24527
2015-01-19 23:08:48 +00:00
John McCall
e67d1f2af4 Add simple unit tests for our native reference counting.
Swift SVN r24409
2015-01-14 01:38:50 +00:00
Jordan Rose
5e889c0c8a [Driver] Load cross-module dependencies into the dependency graph.
We don't actually check them yet, but this fits them into the same dependency
structure as intra-module dependencies.

Part of rdar://problem/19270920

Swift SVN r24335
2015-01-10 00:38:10 +00:00
John McCall
a7e2bb241b Fix some bit-vector bugs that weren't covered by my
random test generator and flesh out the API.

Swift SVN r24304
2015-01-09 10:05:43 +00:00
John McCall
05c67279fb Add a new bit-vector implementation optimized for
IRGen's needs.

Swift SVN r24295
2015-01-09 03:02:39 +00:00
Jordan Rose
c87a359107 [CMake] Teach unit tests to handle Release LLVM / Debug Swift.
(and similar mixed modes)

This is duplicating some of the work in swift_llvm_config, and should
probably be refactored back there at some point, but for now this gets
unit tests building in Xcode when the build configurations for LLVM and
Swift aren't the same.

Swift SVN r24257
2015-01-08 03:02:16 +00:00
Jordan Rose
f2b3a3ae3b [CMake] Remove unnecessary dependencies from gtest targets.
No functionality change.

Swift SVN r24256
2015-01-08 03:02:11 +00:00
Dmitri Hrybenko
269de5fa7f CMake: allow mixed configurations of LLVM and Swift with Xcode
Swift SVN r24177
2015-01-05 07:18:13 +00:00
Dmitri Hrybenko
6670bb76ec Rewrite the CMake build system
Swift SVN r24124
2014-12-23 22:15:30 +00:00
Jordan Rose
2c7a195832 [Driver] Honor dynamic lookup dependencies.
Swift SVN r24053
2014-12-20 01:59:11 +00:00
Dmitri Hrybenko
4e0146af1c Fix spelling inside of a comment
Swift SVN r23973
2014-12-17 02:43:39 +00:00
Jordan Rose
f711e1ba79 [unit] Add basic tests for DependencyGraph::markIntransitive.
Swift SVN r23856
2014-12-11 01:12:21 +00:00
Jordan Rose
8ea2a9710d [unit] Update DependencyGraphTests for API changes in prev. commits.
No functionality change.

Swift SVN r23855
2014-12-11 01:12:18 +00:00
Graham Batty
72c226e8b7 Use target detection to exclude functionNameDemangleTest on linux.
Swift SVN r23571
2014-11-24 17:40:04 +00:00
Graham Batty
ceddf9d936 Don't build a test where we haven't built the library.
Swift SVN r23476
2014-11-20 18:23:30 +00:00
Graham Batty
913a76526d Use pthreads in the metadata runtime unit test.
Swift SVN r23381
2014-11-17 21:23:18 +00:00
Graham Batty
b46474ff61 Revert "Use pthreads in the metadata runtime unit test."
This reverts commit r23369.

Swift SVN r23372
2014-11-17 17:54:30 +00:00
Graham Batty
ec44f52f4e Use pthreads in the metadata runtime unit test.
Swift SVN r23369
2014-11-17 17:15:12 +00:00
Dmitri Hrybenko
bc18080546 Fix warnings about mixed-signedness comparisons
Swift SVN r23351
2014-11-15 03:44:11 +00:00
Jordan Rose
8b5d763e39 [Driver] Add a new DependencyGraph class.
...and some basic unit tests for it.

The purpose of this class is to track dependencies between opaque nodes.
The dependency edges are (kind, string) pairs, where the "kind"
distinguishes different kinds of dependencies (currently "top-level names"
and "types that we do lookup on"). The step is to make use of it in
running compile commands.

The YAML-based file format is only for bring-up and testing purposes.
I intend to switch it to a bitcode-based format in the long run.

Part of rdar://problem/15353101

Swift SVN r23223
2014-11-11 00:43:29 +00:00
Dmitri Hrybenko
e954ac9534 CMake: normalize checks for Apple operating systems
Swift SVN r23056
2014-11-01 04:14:36 +00:00
Dmitri Hrybenko
ea2106c1e3 Comment parsing: transform testcases automatically to include non-ASCII
characters

Swift SVN r22763
2014-10-15 18:22:48 +00:00
Dmitri Hrybenko
e9f06eee68 Comment parsing: implement basic parsing of inline markup
This change adds infrastructure to represent inline markup in the AST,
implements parsing of some of the inline markup (*emphasis*, **strong
emphasis**, `interpreted text`, ``inline literal``), and XML generation
for these constructs for SourceKit clients to consume.

The parsing itself is incomplete for constructs not mentioned above.
Most notably, we don't parse hyperlinks, and we don't parse the
double-colon that changes the next paragraph into a literal block.

Swift SVN r22752
2014-10-15 13:50:48 +00:00
Dmitri Hrybenko
45963a413e Revert "comment parsing wip"
Revert something I committed accidentally.

Swift SVN r22699
2014-10-13 14:48:07 +00:00
Dmitri Hrybenko
3dac00f60f comment parsing wip
comment parsing: more wip

comment parsing: more wip

comment parsing: even more wip

Swift SVN r22697
2014-10-13 14:27:22 +00:00
Dmitri Hrybenko
932953eacb Allow CMake to succeed on non-Darwin systems
Swift SVN r22312
2014-09-27 21:56:41 +00:00
Devin Coughlin
070987d365 Add unit tests for VersionRange lattice operations.
Swift SVN r22151
2014-09-20 00:57:59 +00:00
Joe Groff
dd6fdc4041 Update metatype metadata unit tests.
Metatype metadata now always refers to the maximally-abstracted @thick metatype representation, so metatypes are never trivial from the runtime's point of view.

Swift SVN r21975
2014-09-16 16:55:46 +00:00
Greg Parker
215d852f8d Fix cached metadata lookup for generics that have an address point offset.
Attempt to detect thread races in metadata caches.


Swift SVN r21962
2014-09-16 01:27:38 +00:00
Dmitri Hrybenko
4d0a6d7db8 Update unittests for LLVM API changes in MemoryBuffer
Swift SVN r21411
2014-08-22 08:46:53 +00:00
John McCall
c367362f22 Properly flag opaque existential types as not being
bitwise-takable.

Swift SVN r20803
2014-07-31 02:03:56 +00:00
John McCall
a611637c5a Add a unit test to validate that the new runtime machinery
constructs generic class metadata properly when the
superclass has an unexpected prefix.

Also fix a bug in the constructor for ClassMetadata (which is
only actually constructed this way in unit tests).

Swift SVN r20586
2014-07-26 01:04:58 +00:00
John McCall
d1ccc7e10a Fix the metadata unit test and ensure that it gets set up
correctly for at least my build configuration.

Swift SVN r20566
2014-07-25 22:18:01 +00:00
John McCall
64aa0ea950 When instantiating a generic class, compensate for
unexpected forematter from the superclass.

This requires a pretty substantial shift in the
generic-metadata allocation/initialization dance
because (1) we can't allocate class metadata without
knowing what the superclass is and (2) the offset
from the metadata cache entry to the address point is
no longer determined solely by the metadata pattern.

While I'm making invasive changes to metadata, fix
two race conditions in metadata creation.  The first
is that we need to ensure that only one thread succeeds
at lazily creating a generic-metadata cache.  The second
is that we need to ensure that only one thread actually
attempts to create a particular metadata; any others
should block until the metadata is successfully built.

This commit finishes rdar://17776354.  LLDB will
need to adjust to the runtime-private metadata layout
changes.

Swift SVN r20537
2014-07-25 10:08:51 +00:00
Dmitri Hrybenko
87ed6c8a5b Demangler: add a unit test for the copied string quotation code
Swift SVN r20306
2014-07-22 13:14:26 +00:00