Slava Pestov
e81fca926a
Reflection: Use correct starting offset and alignment in class instance layout
...
Also, add caching for class instance layout.
2016-04-28 22:56:15 -07:00
Slava Pestov
ce1c30b1bc
Reflection: Support reading the remote process's isaMask
...
Also, use the instance layout entry point in swift-reflection-test,
so that we can dump the layout of a class instance and not the
lowering of the reference value.
2016-04-28 22:56:15 -07:00
David Farler
210f8dfe63
swift-reflection-test: Target SwiftRemoteMirror C API
...
This tool should test the usage from SwiftRemoteMirror dylib and
the C API, since that is the public interface from which we're
vending the remote reflection functionality.
2016-04-28 19:38:03 -07:00
John McCall
f33c84fb3d
RemoteAST: implement getOffsetOfMember for structs and classes.
2016-04-28 16:29:20 -07:00
Slava Pestov
7a9a4dca83
Reflection: Preliminary C API entry points for class instance layout
...
Tested by manually running swift-reflection-test, no automated
tests yet, but coming soon.
2016-04-27 23:15:08 -07:00
John McCall
83dc7cffe8
RemoteAST: implement member-offset calculations for tuples.
2016-04-27 19:00:30 -07:00
John McCall
312aa06901
Start fleshing out RemoteAST's storage-offset API.
2016-04-26 16:22:28 -07:00
John McCall
92cf4a6d39
Teach MetadataReader how to handle ObjCClassWrapper metadata.
2016-04-26 13:04:02 -07:00
John McCall
627e2325d3
Read tuple labels in MetadataReader and preserve them in RemoteAST.
...
The metadata system doesn't actually unique based on labels
correctly, so the test case has to play some games. That's
something that will be easier to fix when there are fewer
clients poking at the internals of the metadata runtime.
2016-04-25 22:33:41 -07:00
Slava Pestov
c0c02a3148
Reflection: ProtocolTypeRefs now store a mangled name
...
This is better for field metadata lookups. Clients that want the
module name and decl name can demangle, just like they do with
NominalTypeRefs.
2016-04-25 20:08:49 -07:00
John McCall
812557ca24
Reorganization within RemoteAST. Basic error propagation.
...
Initial stabs towards reading foreign class metadata, although
these do not yet successfully resolve the declaration.
2016-04-25 16:57:19 -07:00
John McCall
964bd44066
Remove unnecessary shared ownership of loaded metadata/dominator buffers.
2016-04-25 14:45:14 -07:00
Enrico Granata
5d315ae30b
Add a getKindForRemoteTypeMetadata() API to the RemoteAST - LLDB plans to use this API to decide whether certain kinds of existential containers need a two-level type resolution (e.g. if an existential box points to a class, the true type that we want to resolve is the type that the class's ISA refers to, not the static type that the box refers to)
2016-04-25 11:50:03 -07:00
David Farler
ca5d7bd204
Merge pull request #2299 from bitjammer/memory-reader-void-context
...
Add opaque context pointer to SwiftRemoteMirror C API Reader API
2016-04-25 00:24:21 -07:00
David Farler
90f1523c4c
Add opaque context pointer to SwiftRemoteMirror C API Reader API
...
Memory readers on the C-side of the API may actually have an object-
oriented design, so they may want to pass an instance to revive
when callbacks make it to the other side of the API boundary.
2016-04-25 00:00:27 -07:00
David Farler
3a3cafc6bd
MetadataReader infrastructure for reading capture descriptors
...
This starts wiring up capture descriptors to the metadata reader
so we can discern the layout of closures at runtime.
rdar://problem/24989531
2016-04-24 23:47:41 -07:00
practicalswift
9a078b54ef
[gardening] Fix recently introduced typo: "a executable" → "an executable"
...
[gardening] Fix recently introduced typo: "a offset" → "an offset"
[gardening] Fix recently introduced typo: "accessiblity" → "accessibility"
[gardening] Fix recently introduced typo: "cant" → "can't"
[gardening] Fix recently introduced typo: "inteference" → "interference"
[gardening] Fix recently introduced typo: "unsatified" → "unsatisfied"
[gardening] Remove accidental space.
2016-04-24 22:11:59 +02:00
John McCall
f450d09e00
Unindent cases to match LLVM style.
2016-04-23 13:31:46 -07:00
John McCall
014bfa10f7
Handle MetadataKind::Class in readMetadata. This can only
...
come up as the exact value of the metadata kind for classes
where ObjC interop is disabled.
2016-04-21 23:23:47 -07:00
John McCall
66208c31e5
More organization and redunancy elimination in MetadataReader.
2016-04-21 22:08:28 -07:00
John McCall
590706a8c6
Pass around address/buffer pairs in the MetadataReader instead of
...
just the address. Use this to avoid repeatedly reading metadata so
often (even if it's cached, this is better). Fix some bugs involving
nominal type parents.
2016-04-21 21:47:14 -07:00
John McCall
b42f2c014a
Remove spurious call to readMetadata.
2016-04-21 16:25:19 -07:00
John McCall
01fb8cfebf
Replace a couple of uses of <assert.h> with <cassert>.
2016-04-20 23:52:41 -07:00
John McCall
0be841ebb7
Add trailing newline to file.
2016-04-20 13:53:49 -07:00
John McCall
a8f9c8338b
Adding missing #include for Linux.
2016-04-20 12:43:30 -07:00
John McCall
093009b3ef
Enhance the Remote / RemoteAST libraries with an error mechanism.
...
Nothing is producing meaningful errors yet, however.
2016-04-20 11:44:34 -07:00
John McCall
e758ba3569
Stub out a RemoteAST library for translating remote metadata
...
pointers into a local AST.
This is intended primarily for the use of LLDB and does not have
a stable ABI.
2016-04-19 16:36:57 -07:00
John McCall
0278616eb9
Allow MetadataReader to use a more precise type for tracking nominal
...
types than just a std::string.
2016-04-19 11:34:24 -07:00
Slava Pestov
d184122e83
Reflection: Move field and associated type metadata parsing from ReflectionContext to TypeRefBuilder, NFC
...
ReflectionContext is now solely concerned with converting runtime
metadata in a remote address space into a TypeRef.
TypeRefBuilder now knows how to parse reflection metadata, and
in particular look up associated type witnesses. This decouples
the TypeRef substitution code from the ReflectionContext. Now
substitution only needs a TypeRefBuilder, which means the code
is no longer templated, and can be moved from TypeRef.h to
TypeRef.cpp.
This also allows the upcoming TypeRef lowering code to live in
a source file instead of headers.
2016-04-16 02:19:04 -07:00
Slava Pestov
a24e95f86c
Reflection: Extract new decodeMangledType() for when we have a TypeRefBuilder but not ReflectionContext, NFC
...
In particular, this will allow the field and associated type metadata
parsing to be moved out of ReflectionContext and into TypeRefBuilder,
which is required for TypeRef lowering.
2016-04-16 02:18:31 -07:00
John McCall
5eef441240
Extract the core implementation of ReflectionContext and
...
template it over the builder type.
Also preserves more information about function types until
the builder, at least.
2016-04-14 21:21:44 -07:00
practicalswift
39c6b56fd0
[gardening] Fix file header formatting.
2016-04-13 10:07:23 +02:00
Chris Lattner
0f9d2c1d22
add some newlines at the end of files to avoid "dangerous" implementation
...
defined behavior in C++98. I thought that C++'11 fixed this though, so it
isn't clear why clang is complaining about it.
2016-04-12 21:07:28 -07:00
John McCall
91f02848df
Organize the MemoryReader interface headers to better support
...
multiple clients.
2016-04-12 16:05:29 -07:00