ClangExpressionVariable previously was not capable of
handling multiple clients.  However, occasionally an
expression must be run in the service of another
expression, and in this case two parsers need to access
the same list of persistent variables.

To allow this, persistent variables now provide state
for multiple parsers, and parsers must allocate, access,
and deallocate this state by providing their own ID
(at the moment, simply the value of the "this" pointer).

<rdar://problem/12914539>


git-svn-id: https://llvm.org/svn/llvm-project/lldb/trunk@172573 91177308-0d34-0410-b5e6-96231b3b80d8
Modified the Objective-C runtime to fetch Objective-C
isas and corresponding names from the underlying process
in a manner much quicker than the current approach.

The current approach accesses memory in the underlying
process with a random-access pattern as it walks across
the data structures associated with each isa.  This
involves a great deal of back-and-forth with debugserver,
resulting in performance problems, especially with iOS
targets.

The new approach attempts to run an expression in the
target that collects the isas and names into two large
buffers, which LLDB then collects in one shot.

<rdar://problem/12914539>


git-svn-id: https://llvm.org/svn/llvm-project/lldb/trunk@172574 91177308-0d34-0410-b5e6-96231b3b80d8
Fixes to the code I just committed to reflect
that we now also have to ignore breakpoints
when running the expression to collect isas.


git-svn-id: https://llvm.org/svn/llvm-project/lldb/trunk@172575 91177308-0d34-0410-b5e6-96231b3b80d8