History log of /external/lldb/include/lldb/Expression/IRMemoryMap.h
Revision Date Author Comments (<<< Hide modified files) (Show modified files >>>)
4b1b8d9e3ae7d4b858e2c1f0ed719655496e6857 23-May-2013 Sean Callanan <scallanan@apple.com> GCC gets confused by enums in bitfields, so I
removed the bitfields. This should be conforming
C++11, though, cf. C++03 9.6(3):
"
A bit-field shall have integral or enumeration
type (3.9.1).
"


git-svn-id: https://llvm.org/svn/llvm-project/lldb/trunk@182545 91177308-0d34-0410-b5e6-96231b3b80d8
/external/lldb/include/lldb/Expression/IRMemoryMap.h
e7872343f18b90e4134fb91a616b138ba6bd6b92 23-May-2013 Sean Callanan <scallanan@apple.com> Fixed a bug where persistent variables did not
live as long as they needed to. This led to
equality tests involving persistent variables
often failing or succeeding when they had no
business doing so.

To do this, I introduced the ability for a
memory allocation to "leak" - that is, to
persist in the process beyond the lifetime of
the expression. Hand-declared persistent
variables do this now.

<rdar://problem/13956311>


git-svn-id: https://llvm.org/svn/llvm-project/lldb/trunk@182528 91177308-0d34-0410-b5e6-96231b3b80d8
/external/lldb/include/lldb/Expression/IRMemoryMap.h
06761aad61604feba2af78c873b104e0415d9361 19-Apr-2013 Sean Callanan <scallanan@apple.com> Simplified the management of the data buffer for
an Allocation to reduce heap fragmentation and
make the code less brittle (and to make some
buildbots happier).


git-svn-id: https://llvm.org/svn/llvm-project/lldb/trunk@179868 91177308-0d34-0410-b5e6-96231b3b80d8
/external/lldb/include/lldb/Expression/IRMemoryMap.h
73cb33aa0c9a59cfd42c3cea222378dc9d15abb0 19-Apr-2013 Sean Callanan <scallanan@apple.com> Made IRMemoryMap::FindSpace a little cleverer,
and made attempts to allocate memory in the process
fall back to FindSpace and just allocate memory on
the host (but with real-looking pointers, hence
FindSpace) if the process doesn't allow allocation.
This allows expressions to run on processes that don't
support allocation, like core files.

This introduces an extremely rare potential problem:
If all of the following are true:

- The Process doesn't support allocation;

- the user writes an expression that refers to an
address that does not yet map to anything, or is
dynamically generated (e.g., the result of calling
a function); and

- the randomly-selected address for the static data
for that specific expression runs into the
address the user was expecting to work with;

then dereferencing the pointer later results
in the user seeing something unexpected. This is
unlikely but possible; as a future piece of work,
we should have processes be able to hint to the
expression parser where it can allocate temporary data
of this kind.


git-svn-id: https://llvm.org/svn/llvm-project/lldb/trunk@179827 91177308-0d34-0410-b5e6-96231b3b80d8
/external/lldb/include/lldb/Expression/IRMemoryMap.h
102b2c2681c9a830afe25bfea35557421905e42c 19-Apr-2013 Greg Clayton <gclayton@apple.com> After discussing with Chris Lattner, we require C++11, so lets get rid of the macros and just use C++11.



git-svn-id: https://llvm.org/svn/llvm-project/lldb/trunk@179805 91177308-0d34-0410-b5e6-96231b3b80d8
/external/lldb/include/lldb/Expression/IRMemoryMap.h
da0e332abdc9dbd058d2d1a02233237df6bee894 19-Apr-2013 Greg Clayton <gclayton@apple.com> Try to unbreak the lldb-x86_64-linux buildbot after recent std::auto_ptr/std::unique_ptr changes.



git-svn-id: https://llvm.org/svn/llvm-project/lldb/trunk@179799 91177308-0d34-0410-b5e6-96231b3b80d8
/external/lldb/include/lldb/Expression/IRMemoryMap.h
0b10ef61ea60e24fe7736cd98bd5fb45efe9c816 18-Apr-2013 Greg Clayton <gclayton@apple.com> Missed some cases when switching over to using our STD_UNIQUE_PTR macros.



git-svn-id: https://llvm.org/svn/llvm-project/lldb/trunk@179796 91177308-0d34-0410-b5e6-96231b3b80d8
/external/lldb/include/lldb/Expression/IRMemoryMap.h
76f9879afa1508febd5538a63a3fad7f01c6c64f 16-Apr-2013 Sean Callanan <scallanan@apple.com> Added logging to each entity in the Materializer
to make debugging easier when things go wrong.


git-svn-id: https://llvm.org/svn/llvm-project/lldb/trunk@179576 91177308-0d34-0410-b5e6-96231b3b80d8
/external/lldb/include/lldb/Expression/IRMemoryMap.h
faafd193bf7dc065e5f6fb99e4c538cc452af7e4 15-Apr-2013 Sean Callanan <scallanan@apple.com> Audited the existing Materializer code to ensure
that it works in the absence of a process. Codepaths
in the Materializer now use the best execution context
scope available to them.


git-svn-id: https://llvm.org/svn/llvm-project/lldb/trunk@179539 91177308-0d34-0410-b5e6-96231b3b80d8
/external/lldb/include/lldb/Expression/IRMemoryMap.h
e287e900488e20e07ef986ec0524b872fbeafa5d 13-Apr-2013 Sean Callanan <scallanan@apple.com> Now that ValueObjects permit writing, made the
Materializer use that API when dematerializing
variables.


git-svn-id: https://llvm.org/svn/llvm-project/lldb/trunk@179443 91177308-0d34-0410-b5e6-96231b3b80d8
/external/lldb/include/lldb/Expression/IRMemoryMap.h
934d6160f5e62914c20f8e229c5e1ca4d9ead99f 12-Apr-2013 Sean Callanan <scallanan@apple.com> Implemented materialization and dematerialization
for variables in the new Materializer. This is
much easier now that the ValueObject API is solid.

I still have to implement reading bytes into a
ValueObject, but committing what I have so far.

This code is not yet used, so there will be fixes
when I switch the expression parser over to use the
new Materializer.


git-svn-id: https://llvm.org/svn/llvm-project/lldb/trunk@179416 91177308-0d34-0410-b5e6-96231b3b80d8
/external/lldb/include/lldb/Expression/IRMemoryMap.h
f4b59480e8d1056b1638141a6a627b252f657db0 12-Apr-2013 Sean Callanan <scallanan@apple.com> Replicated the materialization logic for persistent
variables in the Materializer. We don't use this
code yet, but will soon once the other materializers
are online.


git-svn-id: https://llvm.org/svn/llvm-project/lldb/trunk@179390 91177308-0d34-0410-b5e6-96231b3b80d8
/external/lldb/include/lldb/Expression/IRMemoryMap.h
9e6f6a6f394bb570c5f1f9a850ec0befe4a59fef 05-Apr-2013 Sean Callanan <scallanan@apple.com> Factored out memory access into the target process
from IRExecutionUnit into a superclass called
IRMemoryMap. IRMemoryMap handles all reading and
writing, ensuring that areas are kept track of and
memory is properly cached (and deleted).

Also fixed several cases where we would simply leak
binary data in the target process over time. Now
the expression objects explicitly own their
IRExecutionUnit and delete it when they go away. This
is why I had to modify ClangUserExpression,
ClangUtilityFunction, and ClangFunction.

As a side effect of this, I am removing the JIT
mutex for an IRMemoryMap. If it turns out that we
need this mutex, I'll add it in then, but right now
it's just adding complexity.

This is part of a more general project to make
expressions fully reusable. The next step is to
make materialization and dematerialization use
the IRMemoryMap API rather than writing and
reading directly from the process's memory.
This will allow the IR interpreter to use the
same data, but in the host's memory, without having
to use a different set of pointers.


git-svn-id: https://llvm.org/svn/llvm-project/lldb/trunk@178832 91177308-0d34-0410-b5e6-96231b3b80d8
/external/lldb/include/lldb/Expression/IRMemoryMap.h