hanchenye-llvm-project/lldb/source/Plugins
Sean Callanan 9fda9d2177 Add PersistentVariableDelegate to handle language-specific dematerialization.
The concept here is that languages may have different ways of communicating
results.  In particular, languages may have different names for their result
variables and in fact may have multiple types of result variables (e.g.,
error results).  Materializer was tied to one specific model of result handling.

Instead, now UserExpressions can register their own handlers for the result
variables they inject.  This allows language-specific code in Materializer to
be moved into the expression parser plug-in, and it simplifies Materializer.
These delegates are subclasses of PersistentVariableDelegate.

PersistentVariableDelegate can provide the name of the result variable, and is
notified when the result variable is populated.  It can also be used to touch
persistent variables if need be, updating language-specific state.  The
UserExpression owns the delegate and can decide on its result based on
consulting all of its (potentially multiple) delegates.

The user expression itself now makes the determination of what the final result
of the expression is, rather than relying on the Materializer, and I've added a
virtual function to UserExpression to allow this.

llvm-svn: 249233
2015-10-03 09:09:01 +00:00
..
ABI Rename clang_type -> compiler_type for variables. 2015-09-24 03:54:50 +00:00
Disassembler [LLDB][MIPS] microMIPS breakpoints, disassembly and compressed addresses 2015-09-22 06:36:56 +00:00
DynamicLoader Restrict the scope of a hack in DYLDRendezvous 2015-10-01 13:57:54 +00:00
ExpressionParser Add PersistentVariableDelegate to handle language-specific dematerialization. 2015-10-03 09:09:01 +00:00
Instruction Fix register names in EmulateInstructionMIPS.cpp 2015-09-22 15:04:39 +00:00
InstrumentationRuntime [cmake] Remove LLVM_NO_RTTI. 2015-09-03 08:46:55 +00:00
JITLoader Add plugin.jit-loader.gdb.enable-jit-breakpoint property to make JIT loader breakpoint optional. 2015-09-16 17:38:36 +00:00
Language Fix the CMake build 2015-10-02 21:14:38 +00:00
LanguageRuntime Moved more Clang-specific parts of the expression parser into the Clang plugin. 2015-09-25 20:35:58 +00:00
MemoryHistory [cmake] Remove LLVM_NO_RTTI. 2015-09-03 08:46:55 +00:00
ObjectContainer [cmake] Remove LLVM_NO_RTTI. 2015-09-03 08:46:55 +00:00
ObjectFile Romove accidentially added statement in r249020 2015-10-01 15:15:42 +00:00
OperatingSystem Add an OperatingSystem plugin to support goroutines 2015-09-16 21:20:44 +00:00
Platform Fix Android-SDK detection on API 10 device 2015-10-01 13:58:01 +00:00
Process Have a clean(er) shutdown when detaching from a process. 2015-10-02 22:47:04 +00:00
ScriptInterpreter Fix Clang-tidy misc-use-override warnings in some files in include/lldb/Core, unify closing inclusion guards 2015-08-18 08:39:09 +00:00
SymbolFile Remove instance reference of static member function. 2015-10-02 22:47:14 +00:00
SymbolVendor [cmake] Remove LLVM_NO_RTTI. 2015-09-03 08:46:55 +00:00
SystemRuntime Made GetScratchTypeSystemForLanguage return an error if desired. 2015-10-02 18:40:30 +00:00
UnwindAssembly [cmake] Remove LLVM_NO_RTTI. 2015-09-03 08:46:55 +00:00
CMakeLists.txt Fix cmake build. 2015-09-03 04:17:57 +00:00
Makefile Add an OperatingSystem plugin to support goroutines 2015-09-16 21:20:44 +00:00