History log of /external/lldb/include/lldb/Expression/IRExecutionUnit.h
Revision Date Author Comments (<<< Hide modified files) (Show modified files >>>)
b31044ef36be5678234babf27f321efc49a7655d 17-May-2013 Ashok Thirumurthi <ashok.thirumurthi@intel.com> Fixed the build to reflect the API name change in r182085.

- Also added a comment as lldb doesn't flush the instruction cache after dy-load.


git-svn-id: https://llvm.org/svn/llvm-project/lldb/trunk@182099 91177308-0d34-0410-b5e6-96231b3b80d8
/external/lldb/include/lldb/Expression/IRExecutionUnit.h
779e6ac7d5622ad35f482633b1145c82dbc6c3ce 08-May-2013 Sean Callanan <scallanan@apple.com> Fixed IRExecutionUnit build failures due to changes
in the underlying llvm::JITMemoryManager API.


git-svn-id: https://llvm.org/svn/llvm-project/lldb/trunk@181387 91177308-0d34-0410-b5e6-96231b3b80d8
/external/lldb/include/lldb/Expression/IRExecutionUnit.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/IRExecutionUnit.h
81a96aa6242f7b559770f5dc62316253cb8cb0d4 18-Apr-2013 Greg Clayton <gclayton@apple.com> Since we use C++11, we should switch over to using std::unique_ptr when C++11 is being used. To do this, we follow what we have done for shared pointers and we define a STD_UNIQUE_PTR macro that can be used and it will "do the right thing". Due to some API differences in std::unique_ptr and due to the fact that we need to be able to compile without C++11, we can't use move semantics so some code needed to change so that it can compile with either C++.

Anyone wanting to use a unique_ptr or auto_ptr should now use the "STD_UNIQUE_PTR(TYPE)" macro.



git-svn-id: https://llvm.org/svn/llvm-project/lldb/trunk@179779 91177308-0d34-0410-b5e6-96231b3b80d8
/external/lldb/include/lldb/Expression/IRExecutionUnit.h
7df01f93aeb3b9109c5739e7731bd459e06a799b 17-Apr-2013 Daniel Malea <daniel.malea@intel.com> Add missing include



git-svn-id: https://llvm.org/svn/llvm-project/lldb/trunk@179711 91177308-0d34-0410-b5e6-96231b3b80d8
/external/lldb/include/lldb/Expression/IRExecutionUnit.h
3a201e4eacf34418d6640dc2645165e8ae3d1ccf 17-Apr-2013 Sean Callanan <scallanan@apple.com> Added a new API to the IRInterpreter (the old API
will be gone soon!) that lets it interpret a function
using just an llvm::Module, an llvm::Function, and a
MemoryMap.

Also added an API to IRExecutionUnit to get at its
llvm::Function, so that the IRInterpreter can work
with it.


git-svn-id: https://llvm.org/svn/llvm-project/lldb/trunk@179704 91177308-0d34-0410-b5e6-96231b3b80d8
/external/lldb/include/lldb/Expression/IRExecutionUnit.h
a6686e36cd56843e594139324884585fb47b918b 17-Apr-2013 Sean Callanan <scallanan@apple.com> Flipped the big switch: LLDB now uses the new
Materializer for all expressions that need to
run in the target. This includes the following
changes:

- Removed a bunch of (de-)materialization code
from ClangExpressionDeclMap and assumed the
presence of a Materializer where we previously
had a fallback.

- Ensured that an IRMemoryMap is passed into
ClangExpressionDeclMap::Materialize().

- Fixed object ownership on LLVMContext; it is
now owned by the IRExecutionUnit, since the
Module and the ExecutionEngine both depend on
its existence.

- Fixed a few bugs in IRMemoryMap and the
Materializer that showed up during testing.


git-svn-id: https://llvm.org/svn/llvm-project/lldb/trunk@179649 91177308-0d34-0410-b5e6-96231b3b80d8
/external/lldb/include/lldb/Expression/IRExecutionUnit.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/IRExecutionUnit.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/IRExecutionUnit.h
952e9dc874944fcdbbb224f3ec4fc2c859376f64 28-Mar-2013 Greg Clayton <gclayton@apple.com> <rdar://problem/13521159>

LLDB is crashing when logging is enabled from lldb-perf-clang. This has to do with the global destructor chain as the process and its threads are being torn down.

All logging channels now make one and only one instance that is kept in a global pointer which is never freed. This guarantees that logging can correctly continue as the process tears itself down.



git-svn-id: https://llvm.org/svn/llvm-project/lldb/trunk@178191 91177308-0d34-0410-b5e6-96231b3b80d8
/external/lldb/include/lldb/Expression/IRExecutionUnit.h
8202fe26a2a69ccdeab9c49139e9f8c645907dbc 20-Mar-2013 Sean Callanan <scallanan@apple.com> Updated the IRExecutionUnit to keep local copies
of the data it writes down into the process even
if the process doesn't exist. This will allow
the IR interpreter to access static data allocated
on the expression's behalf.

Also cleaned up object ownership in the
IRExecutionUnit so that allocations are created
into the allocations vector. This avoids needless
data copies.

<rdar://problem/13424594>


git-svn-id: https://llvm.org/svn/llvm-project/lldb/trunk@177456 91177308-0d34-0410-b5e6-96231b3b80d8
/external/lldb/include/lldb/Expression/IRExecutionUnit.h
1cf3da8b0fb0cabf2431b5fe521842929fca69a3 19-Mar-2013 Sean Callanan <scallanan@apple.com> Refactored the expression parser so that the IR
and the JITted code are managed by a standalone
class that handles memory management itself.

I have removed RecordingMemoryManager and
ProcessDataAllocator, which filled similar roles
and had confusing ownership, with a common class
called IRExecutionUnit. The IRExecutionUnit
manages all allocations ever made for an expression
and frees them when it goes away. It also contains
the code generator and can vend the Module for an
expression to other clases.

The end goal here is to make the output of the
expression parser re-usable; that is, to avoid
re-parsing when re-parsing isn't necessary.

I've also cleaned up some code and used weak pointers
in more places. Please let me know if you see any
leaks; I checked myself as well but I might have
missed a case.


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