Commit Graph

18 Commits

Author SHA1 Message Date
Joe Groff
f7c3331c0e Demangle objc-to-native thunks.
Somehow the demangling for these thunks slipped through the cracks.

Swift SVN r17107
2014-04-30 19:57:42 +00:00
Chris Lattner
a7012f23ef Remove swift::ArrayType. It is dead and vestigial code for supporting fixed size
arrays, which never got baked.  Remove it until we have time to do things right.


Swift SVN r16995
2014-04-28 21:18:27 +00:00
John McCall
b38a63950d Implement @unowned(unsafe).
This was part of the original weak design that
there was never any particular reason to rush the
implementation for.  It's convenient to do this now
so that we can use it to implement Unmanaged<T> for
importing CF types.

Swift SVN r16693
2014-04-23 08:51:23 +00:00
Joe Groff
85ab7ed9e1 Remove mangling and demangling for block shims.
Swift SVN r16488
2014-04-18 02:36:54 +00:00
John McCall
f1180f5e6d in order to work correctly for non-@objc protocols.
Language features like erasing concrete metatype
values are also left for the future.  Still, baby steps.

The singleton ordinary metatype for existential types
is still potentially useful; we allow it to be written
as P.Protocol.

I've been somewhat cavalier in making code accept
AnyMetatypeType instead of a more specific type, and
it's likely that a number of these places can and
should be more restrictive.
When T is an existential type, parse T.Type as an
ExistentialMetatypeType instead of a MetatypeType.

An existential metatype is the formal type
 \exists t:P . (t.Type)
whereas the ordinary metatype is the formal type
 (\exists t:P . t).Type
which is singleton.  Our inability to express that
difference was leading to an ever-increasing cascade
of hacks where information is shadily passed behind
the scenes in order to make various operations with
static members of protocols work correctly.

This patch takes the first step towards fixing that
by splitting out existential metatypes and giving
them a pointer representation.  Eventually, we will
need them to be able to carry protocol witness tables

Swift SVN r15716
2014-04-01 00:38:28 +00:00
Dmitri Hrybenko
866511e27d Add mangling for SubscriptDecls to allow us to produce USRs for them
<rdar://problem/16237251> USR generator skips SubscriptDecls


Swift SVN r14923
2014-03-11 18:03:04 +00:00
John McCall
5463c2072b Demangle partial-apply forwarding thunks.
rdar://16167733

Swift SVN r14538
2014-02-28 22:03:49 +00:00
John McCall
227e2d0159 Refactor the demangling of <global> so that it can be used in
recursive positions.

Also change the representation of certain <global>s in the
demangling tree by sinking <directness> down as a child of
the affected node.

Swift SVN r14537
2014-02-28 22:03:46 +00:00
Joe Groff
1bbbcaaf98 Consider @auto_closure when mangling types.
We allow overloads on foo(() -> T) and foo(@auto_closure () -> T) in Sema, so they need distinct manglings. Fixes <rdar://problem/16045566>.

Swift SVN r13856
2014-02-13 03:02:22 +00:00
Joe Groff
bb42bf6617 Demangle dependent types.
Implement the demangling for generic signatures and their requirements, dependent parameters, and member types, now that we actually use these manglings when naming reabstraction thunks.

Swift SVN r13764
2014-02-10 23:37:15 +00:00
Joe Groff
6c4136103c Demangle: Demangle specializations.
This time, be sure to reset the demangler state after demangling the
specialization header, because it is a prefix of the demangled symbol
name.

Swift SVN r13378
2014-02-03 22:48:07 +00:00
Joe Groff
f782eeac30 Revert "Demangle: Demangle specializations" until I figure out an assertion failure.
Swift SVN r13376
2014-02-03 22:19:03 +00:00
Joe Groff
0837a32675 Demangle: Demangle specializations.
Swift SVN r13368
2014-02-03 21:17:18 +00:00
Doug Gregor
cd02337caf Update Demangler to support DynamicSelf
Swift SVN r13297
2014-02-01 06:52:43 +00:00
Chris Lattner
d407bc8fc4 Teach the parser to add the didSet/willSet functions to the enclosing
type, so we emit them.  Add mangler (and demangler) support for these.
Enhance our testcase to check to make sure that stores within these
specifiers are direct, they don't cause recursive infinite loops.

John, I picked w/W for the mangling letters, let me know if this is ok.


Swift SVN r13050
2014-01-28 05:15:56 +00:00
Doug Gregor
fc7dfb2fae Start emitting .cxx_construct methods for Objective-C-derived classes.
When we're using Objective-C's memory allocation, emit .cxx_construct
methods whenever we have instance variables with in-class
initializers. Presently, these methods are just empty stubs.

Swift SVN r12211
2014-01-12 04:31:52 +00:00
Doug Gregor
3524a79fa0 Emit .cxx_destruct for destruction of ivars in Objective-C-derived classes.
The Objective-C runtime executes the .cxx_destruct method after the
last -dealloc has executed when destroying an object, allowing the
instance variables to remain live even after the subclass's
destructor/-dealloc has executed, which is important for memory
safety. This fixes the majority of <rdar://problem/15136592>.

Note that IRGenModule::getAddrOfIVarDestroyer() contains  an egregious
hack to find the ivar destructor SIL function via a linear
search. We need a better way to find SIL functions that we know exist,
because LinkEntity does not suffice.

Swift SVN r12206
2014-01-12 00:17:42 +00:00
John McCall
c5d2d972ee Add an x-macro system for demangling nodes and use it to
generate getNodeKindString automatically.

Swift SVN r11899
2014-01-04 09:49:35 +00:00