Author: spyffe Date: Wed Sep 2 19:35:46 2015 New Revision: 246737 URL: http://llvm.org/viewvc/llvm-project?rev=246737&view=rev Log: In preparation for factoring persistent variables into a generic part and a Clang-specific part, create the ExpressionVariable source/header file and move ClangExpressionVariable into the Clang expression parser plugin.
It is expected that there are some ugly #include paths... these will be resolved by either (1) making that code use generic expression variables (once they're separated appropriately) or (2) moving that code into a plug-in, often the expression parser plug-in. Added: lldb/trunk/include/lldb/Expression/ExpressionVariable.h lldb/trunk/source/Expression/ExpressionVariable.cpp lldb/trunk/source/Plugins/ExpressionParser/Clang/ClangExpressionVariable.cpp - copied, changed from r246693, lldb/trunk/source/Expression/ClangExpressionVariable.cpp lldb/trunk/source/Plugins/ExpressionParser/Clang/ClangExpressionVariable.h - copied unchanged from r246693, lldb/trunk/include/lldb/Expression/ClangExpressionVariable.h Removed: lldb/trunk/include/lldb/Expression/ClangExpressionVariable.h lldb/trunk/source/Expression/ClangExpressionVariable.cpp Modified: lldb/trunk/include/lldb/Expression/ASTStructExtractor.h lldb/trunk/include/lldb/Expression/ClangExpressionDeclMap.h lldb/trunk/include/lldb/Expression/ClangPersistentVariables.h lldb/trunk/include/lldb/Expression/ClangUserExpression.h lldb/trunk/lldb.xcodeproj/project.pbxproj lldb/trunk/source/Commands/CommandObjectArgs.cpp lldb/trunk/source/Commands/CommandObjectExpression.cpp lldb/trunk/source/Core/FormatEntity.cpp lldb/trunk/source/Core/ValueObject.cpp lldb/trunk/source/Expression/DWARFExpression.cpp lldb/trunk/source/Expression/Materializer.cpp Modified: lldb/trunk/include/lldb/Expression/ASTStructExtractor.h URL: http://llvm.org/viewvc/llvm-project/lldb/trunk/include/lldb/Expression/ASTStructExtractor.h?rev=246737&r1=246736&r2=246737&view=diff ============================================================================== --- lldb/trunk/include/lldb/Expression/ASTStructExtractor.h (original) +++ lldb/trunk/include/lldb/Expression/ASTStructExtractor.h Wed Sep 2 19:35:46 2015 @@ -12,7 +12,7 @@ #include "clang/Sema/SemaConsumer.h" #include "lldb/Core/ClangForward.h" -#include "lldb/Expression/ClangExpressionVariable.h" +#include "lldb/../../source/Plugins/ExpressionParser/Clang/ClangExpressionVariable.h" #include "lldb/Expression/ClangFunction.h" namespace lldb_private { Modified: lldb/trunk/include/lldb/Expression/ClangExpressionDeclMap.h URL: http://llvm.org/viewvc/llvm-project/lldb/trunk/include/lldb/Expression/ClangExpressionDeclMap.h?rev=246737&r1=246736&r2=246737&view=diff ============================================================================== --- lldb/trunk/include/lldb/Expression/ClangExpressionDeclMap.h (original) +++ lldb/trunk/include/lldb/Expression/ClangExpressionDeclMap.h Wed Sep 2 19:35:46 2015 @@ -25,7 +25,7 @@ #include "lldb/Core/ClangForward.h" #include "lldb/Core/Value.h" #include "lldb/Expression/ClangASTSource.h" -#include "lldb/Expression/ClangExpressionVariable.h" +#include "lldb/../../source/Plugins/ExpressionParser/Clang/ClangExpressionVariable.h" #include "lldb/Expression/Materializer.h" #include "lldb/Symbol/TaggedASTType.h" #include "lldb/Symbol/SymbolContext.h" Removed: lldb/trunk/include/lldb/Expression/ClangExpressionVariable.h URL: http://llvm.org/viewvc/llvm-project/lldb/trunk/include/lldb/Expression/ClangExpressionVariable.h?rev=246736&view=auto ============================================================================== --- lldb/trunk/include/lldb/Expression/ClangExpressionVariable.h (original) +++ lldb/trunk/include/lldb/Expression/ClangExpressionVariable.h (removed) @@ -1,456 +0,0 @@ -//===-- ClangExpressionVariable.h -------------------------------*- C++ -*-===// -// -// The LLVM Compiler Infrastructure -// -// This file is distributed under the University of Illinois Open Source -// License. See LICENSE.TXT for details. -// -//===----------------------------------------------------------------------===// - -#ifndef liblldb_ClangExpressionVariable_h_ -#define liblldb_ClangExpressionVariable_h_ - -// C Includes -#include <signal.h> -#include <stdint.h> -#include <string.h> - -// C++ Includes -#include <map> -#include <string> -#include <vector> - -// Other libraries and framework includes -// Project includes -#include "lldb/lldb-public.h" -#include "lldb/Core/ClangForward.h" -#include "lldb/Core/ConstString.h" -#include "lldb/Core/Value.h" -#include "lldb/Symbol/TaggedASTType.h" - -namespace llvm { - class Value; -} - -namespace lldb_private { - -class ClangExpressionVariableList; -class ValueObjectConstResult; - -//---------------------------------------------------------------------- -/// @class ClangExpressionVariable ClangExpressionVariable.h "lldb/Expression/ClangExpressionVariable.h" -/// @brief Encapsulates one variable for the expression parser. -/// -/// The expression parser uses variables in three different contexts: -/// -/// First, it stores persistent variables along with the process for use -/// in expressions. These persistent variables contain their own data -/// and are typed. -/// -/// Second, in an interpreted expression, it stores the local variables -/// for the expression along with the expression. These variables -/// contain their own data and are typed. -/// -/// Third, in a JIT-compiled expression, it stores the variables that -/// the expression needs to have materialized and dematerialized at each -/// execution. These do not contain their own data but are named and -/// typed. -/// -/// This class supports all of these use cases using simple type -/// polymorphism, and provides necessary support methods. Its interface -/// is RTTI-neutral. -//---------------------------------------------------------------------- -class ClangExpressionVariable -{ -public: - ClangExpressionVariable(ExecutionContextScope *exe_scope, lldb::ByteOrder byte_order, uint32_t addr_byte_size); - - ClangExpressionVariable (ExecutionContextScope *exe_scope, - Value &value, - const ConstString &name, - uint16_t flags = EVNone); - - ClangExpressionVariable(const lldb::ValueObjectSP &valobj_sp); - - //---------------------------------------------------------------------- - /// If the variable contains its own data, make a Value point at it. - /// If \a exe_ctx in not NULL, the value will be resolved in with - /// that execution context. - /// - /// @param[in] value - /// The value to point at the data. - /// - /// @param[in] exe_ctx - /// The execution context to use to resolve \a value. - /// - /// @return - /// True on success; false otherwise (in particular, if this variable - /// does not contain its own data). - //---------------------------------------------------------------------- - bool - PointValueAtData(Value &value, ExecutionContext *exe_ctx); - - lldb::ValueObjectSP - GetValueObject(); - - //---------------------------------------------------------------------- - /// The following values should not live beyond parsing - //---------------------------------------------------------------------- - class ParserVars - { - public: - - ParserVars() : - m_parser_type(), - m_named_decl (NULL), - m_llvm_value (NULL), - m_lldb_value (), - m_lldb_var (), - m_lldb_sym (NULL) - { - } - - TypeFromParser m_parser_type; ///< The type of the variable according to the parser - const clang::NamedDecl *m_named_decl; ///< The Decl corresponding to this variable - llvm::Value *m_llvm_value; ///< The IR value corresponding to this variable; usually a GlobalValue - lldb_private::Value m_lldb_value; ///< The value found in LLDB for this variable - lldb::VariableSP m_lldb_var; ///< The original variable for this variable - const lldb_private::Symbol *m_lldb_sym; ///< The original symbol for this variable, if it was a symbol - }; - -private: - typedef std::map <uint64_t, ParserVars> ParserVarMap; - ParserVarMap m_parser_vars; - -public: - //---------------------------------------------------------------------- - /// Make this variable usable by the parser by allocating space for - /// parser-specific variables - //---------------------------------------------------------------------- - void - EnableParserVars(uint64_t parser_id) - { - m_parser_vars.insert(std::make_pair(parser_id, ParserVars())); - } - - //---------------------------------------------------------------------- - /// Deallocate parser-specific variables - //---------------------------------------------------------------------- - void - DisableParserVars(uint64_t parser_id) - { - m_parser_vars.erase(parser_id); - } - - //---------------------------------------------------------------------- - /// Access parser-specific variables - //---------------------------------------------------------------------- - ParserVars * - GetParserVars(uint64_t parser_id) - { - ParserVarMap::iterator i = m_parser_vars.find(parser_id); - - if (i == m_parser_vars.end()) - return NULL; - else - return &i->second; - } - - //---------------------------------------------------------------------- - /// The following values are valid if the variable is used by JIT code - //---------------------------------------------------------------------- - struct JITVars { - JITVars () : - m_alignment (0), - m_size (0), - m_offset (0) - { - } - - lldb::offset_t m_alignment; ///< The required alignment of the variable, in bytes - size_t m_size; ///< The space required for the variable, in bytes - lldb::offset_t m_offset; ///< The offset of the variable in the struct, in bytes - }; - -private: - typedef std::map <uint64_t, JITVars> JITVarMap; - JITVarMap m_jit_vars; - -public: - //---------------------------------------------------------------------- - /// Make this variable usable for materializing for the JIT by allocating - /// space for JIT-specific variables - //---------------------------------------------------------------------- - void - EnableJITVars(uint64_t parser_id) - { - m_jit_vars.insert(std::make_pair(parser_id, JITVars())); - } - - //---------------------------------------------------------------------- - /// Deallocate JIT-specific variables - //---------------------------------------------------------------------- - void - DisableJITVars(uint64_t parser_id) - { - m_jit_vars.erase(parser_id); - } - - JITVars *GetJITVars(uint64_t parser_id) - { - JITVarMap::iterator i = m_jit_vars.find(parser_id); - - if (i == m_jit_vars.end()) - return NULL; - else - return &i->second; - } - - //---------------------------------------------------------------------- - /// Return the variable's size in bytes - //---------------------------------------------------------------------- - size_t - GetByteSize (); - - const ConstString & - GetName(); - - RegisterInfo * - GetRegisterInfo(); - - void - SetRegisterInfo (const RegisterInfo *reg_info); - - CompilerType - GetCompilerType (); - - void - SetCompilerType (const CompilerType &clang_type); - - TypeFromUser - GetTypeFromUser (); - - uint8_t * - GetValueBytes (); - - void - SetName (const ConstString &name); - - void - ValueUpdated (); - - // this function is used to copy the address-of m_live_sp into m_frozen_sp - // this is necessary because the results of certain cast and pointer-arithmetic - // operations (such as those described in bugzilla issues 11588 and 11618) generate - // frozen objects that do not have a valid address-of, which can be troublesome when - // using synthetic children providers. Transferring the address-of the live object - // solves these issues and provides the expected user-level behavior - void - TransferAddress (bool force = false); - - typedef std::shared_ptr<ValueObjectConstResult> ValueObjectConstResultSP; - - //---------------------------------------------------------------------- - /// Members - //---------------------------------------------------------------------- - enum Flags - { - EVNone = 0, - EVIsLLDBAllocated = 1 << 0, ///< This variable is resident in a location specifically allocated for it by LLDB in the target process - EVIsProgramReference = 1 << 1, ///< This variable is a reference to a (possibly invalid) area managed by the target program - EVNeedsAllocation = 1 << 2, ///< Space for this variable has yet to be allocated in the target process - EVIsFreezeDried = 1 << 3, ///< This variable's authoritative version is in m_frozen_sp (for example, for statically-computed results) - EVNeedsFreezeDry = 1 << 4, ///< Copy from m_live_sp to m_frozen_sp during dematerialization - EVKeepInTarget = 1 << 5, ///< Keep the allocation after the expression is complete rather than freeze drying its contents and freeing it - EVTypeIsReference = 1 << 6, ///< The original type of this variable is a reference, so materialize the value rather than the location - EVUnknownType = 1 << 7, ///< This is a symbol of unknown type, and the type must be resolved after parsing is complete - EVBareRegister = 1 << 8 ///< This variable is a direct reference to $pc or some other entity. - }; - - typedef uint16_t FlagType; - - FlagType m_flags; // takes elements of Flags - - lldb::ValueObjectSP m_frozen_sp; - lldb::ValueObjectSP m_live_sp; - - DISALLOW_COPY_AND_ASSIGN (ClangExpressionVariable); -}; - -//---------------------------------------------------------------------- -/// @class ClangExpressionVariableListBase ClangExpressionVariable.h "lldb/Expression/ClangExpressionVariable.h" -/// @brief A list of variable references. -/// -/// This class stores variables internally, acting as the permanent store. -//---------------------------------------------------------------------- -class ClangExpressionVariableList -{ -public: - //---------------------------------------------------------------------- - /// Implementation of methods in ClangExpressionVariableListBase - //---------------------------------------------------------------------- - size_t - GetSize() - { - return m_variables.size(); - } - - lldb::ClangExpressionVariableSP - GetVariableAtIndex(size_t index) - { - lldb::ClangExpressionVariableSP var_sp; - if (index < m_variables.size()) - var_sp = m_variables[index]; - return var_sp; - } - - size_t - AddVariable (const lldb::ClangExpressionVariableSP &var_sp) - { - m_variables.push_back(var_sp); - return m_variables.size() - 1; - } - - bool - ContainsVariable (const lldb::ClangExpressionVariableSP &var_sp) - { - const size_t size = m_variables.size(); - for (size_t index = 0; index < size; ++index) - { - if (m_variables[index].get() == var_sp.get()) - return true; - } - return false; - } - - //---------------------------------------------------------------------- - /// Finds a variable by name in the list. - /// - /// @param[in] name - /// The name of the requested variable. - /// - /// @return - /// The variable requested, or NULL if that variable is not in the list. - //---------------------------------------------------------------------- - lldb::ClangExpressionVariableSP - GetVariable (const ConstString &name) - { - lldb::ClangExpressionVariableSP var_sp; - for (size_t index = 0, size = GetSize(); index < size; ++index) - { - var_sp = GetVariableAtIndex(index); - if (var_sp->GetName() == name) - return var_sp; - } - var_sp.reset(); - return var_sp; - } - - lldb::ClangExpressionVariableSP - GetVariable (const char *name) - { - lldb::ClangExpressionVariableSP var_sp; - if (name && name[0]) - { - for (size_t index = 0, size = GetSize(); index < size; ++index) - { - var_sp = GetVariableAtIndex(index); - const char *var_name_cstr = var_sp->GetName().GetCString(); - if (!var_name_cstr || !name) - continue; - if (::strcmp (var_name_cstr, name) == 0) - return var_sp; - } - var_sp.reset(); - } - return var_sp; - } - - //---------------------------------------------------------------------- - /// Finds a variable by NamedDecl in the list. - /// - /// @param[in] name - /// The name of the requested variable. - /// - /// @return - /// The variable requested, or NULL if that variable is not in the list. - //---------------------------------------------------------------------- - lldb::ClangExpressionVariableSP - GetVariable (const clang::NamedDecl *decl, uint64_t parser_id) - { - lldb::ClangExpressionVariableSP var_sp; - for (size_t index = 0, size = GetSize(); index < size; ++index) - { - var_sp = GetVariableAtIndex(index); - - ClangExpressionVariable::ParserVars *parser_vars = var_sp->GetParserVars(parser_id); - - if (parser_vars && parser_vars->m_named_decl == decl) - return var_sp; - } - var_sp.reset(); - return var_sp; - } - - //---------------------------------------------------------------------- - /// Create a new variable in the list and return its index - //---------------------------------------------------------------------- - lldb::ClangExpressionVariableSP - CreateVariable (ExecutionContextScope *exe_scope, lldb::ByteOrder byte_order, uint32_t addr_byte_size) - { - lldb::ClangExpressionVariableSP var_sp(new ClangExpressionVariable(exe_scope, byte_order, addr_byte_size)); - m_variables.push_back(var_sp); - return var_sp; - } - - lldb::ClangExpressionVariableSP - CreateVariable(const lldb::ValueObjectSP &valobj_sp) - { - lldb::ClangExpressionVariableSP var_sp(new ClangExpressionVariable(valobj_sp)); - m_variables.push_back(var_sp); - return var_sp; - } - - lldb::ClangExpressionVariableSP - CreateVariable (ExecutionContextScope *exe_scope, - const ConstString &name, - const TypeFromUser& user_type, - lldb::ByteOrder byte_order, - uint32_t addr_byte_size) - { - lldb::ClangExpressionVariableSP var_sp(new ClangExpressionVariable(exe_scope, byte_order, addr_byte_size)); - var_sp->SetName (name); - var_sp->SetCompilerType (user_type); - m_variables.push_back(var_sp); - return var_sp; - } - - void - RemoveVariable (lldb::ClangExpressionVariableSP var_sp) - { - for (std::vector<lldb::ClangExpressionVariableSP>::iterator vi = m_variables.begin(), ve = m_variables.end(); - vi != ve; - ++vi) - { - if (vi->get() == var_sp.get()) - { - m_variables.erase(vi); - return; - } - } - } - - void - Clear() - { - m_variables.clear(); - } - -private: - std::vector <lldb::ClangExpressionVariableSP> m_variables; -}; - - -} // namespace lldb_private - -#endif // liblldb_ClangExpressionVariable_h_ Modified: lldb/trunk/include/lldb/Expression/ClangPersistentVariables.h URL: http://llvm.org/viewvc/llvm-project/lldb/trunk/include/lldb/Expression/ClangPersistentVariables.h?rev=246737&r1=246736&r2=246737&view=diff ============================================================================== --- lldb/trunk/include/lldb/Expression/ClangPersistentVariables.h (original) +++ lldb/trunk/include/lldb/Expression/ClangPersistentVariables.h Wed Sep 2 19:35:46 2015 @@ -10,7 +10,7 @@ #ifndef liblldb_ClangPersistentVariables_h_ #define liblldb_ClangPersistentVariables_h_ -#include "lldb/Expression/ClangExpressionVariable.h" +#include "lldb/../../source/Plugins/ExpressionParser/Clang/ClangExpressionVariable.h" #include "lldb/Expression/ClangModulesDeclVendor.h" #include "llvm/ADT/DenseMap.h" Modified: lldb/trunk/include/lldb/Expression/ClangUserExpression.h URL: http://llvm.org/viewvc/llvm-project/lldb/trunk/include/lldb/Expression/ClangUserExpression.h?rev=246737&r1=246736&r2=246737&view=diff ============================================================================== --- lldb/trunk/include/lldb/Expression/ClangUserExpression.h (original) +++ lldb/trunk/include/lldb/Expression/ClangUserExpression.h Wed Sep 2 19:35:46 2015 @@ -24,7 +24,7 @@ #include "lldb/Core/Address.h" #include "lldb/Core/ClangForward.h" #include "lldb/Expression/ClangExpression.h" -#include "lldb/Expression/ClangExpressionVariable.h" +#include "lldb/../../source/Plugins/ExpressionParser/Clang/ClangExpressionVariable.h" #include "lldb/Expression/IRForTarget.h" #include "lldb/Expression/Materializer.h" #include "lldb/Symbol/TaggedASTType.h" Added: lldb/trunk/include/lldb/Expression/ExpressionVariable.h URL: http://llvm.org/viewvc/llvm-project/lldb/trunk/include/lldb/Expression/ExpressionVariable.h?rev=246737&view=auto ============================================================================== --- lldb/trunk/include/lldb/Expression/ExpressionVariable.h (added) +++ lldb/trunk/include/lldb/Expression/ExpressionVariable.h Wed Sep 2 19:35:46 2015 @@ -0,0 +1,14 @@ +//===-- ExpressionVariable.h ------------------------------------*- C++ -*-===// +// +// The LLVM Compiler Infrastructure +// +// This file is distributed under the University of Illinois Open Source +// License. See LICENSE.TXT for details. +// +//===----------------------------------------------------------------------===// + +#ifndef liblldb_ExpressionVariable_h_ +#define liblldb_ExpressionVariable_h_ + + +#endif /* liblldb_ExpressionVariable_h_ */ Modified: lldb/trunk/lldb.xcodeproj/project.pbxproj URL: http://llvm.org/viewvc/llvm-project/lldb/trunk/lldb.xcodeproj/project.pbxproj?rev=246737&r1=246736&r2=246737&view=diff ============================================================================== --- lldb/trunk/lldb.xcodeproj/project.pbxproj (original) +++ lldb/trunk/lldb.xcodeproj/project.pbxproj Wed Sep 2 19:35:46 2015 @@ -393,7 +393,6 @@ 2689005F13353E0E00698AC0 /* ClangFunction.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 4C98D3DA118FB96F00E575D0 /* ClangFunction.cpp */; }; 2689006013353E0E00698AC0 /* ClangExpressionDeclMap.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 49F1A74511B3388F003ED505 /* ClangExpressionDeclMap.cpp */; }; 2689006113353E0E00698AC0 /* ClangExpressionParser.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 49445C2512245E3600C11A81 /* ClangExpressionParser.cpp */; }; - 2689006213353E0E00698AC0 /* ClangExpressionVariable.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 26BC7ED610F1B86700F91463 /* ClangExpressionVariable.cpp */; }; 2689006313353E0E00698AC0 /* ClangPersistentVariables.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 49D4FE871210B61C00CDB854 /* ClangPersistentVariables.cpp */; }; 2689006413353E0E00698AC0 /* ClangUserExpression.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 26BC7ED510F1B86700F91463 /* ClangUserExpression.cpp */; }; 2689006513353E0E00698AC0 /* ClangUtilityFunction.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 497C86BD122823D800B54702 /* ClangUtilityFunction.cpp */; }; @@ -674,6 +673,9 @@ 4959511F1A1BC4BC00F6F8FC /* ClangModulesDeclVendor.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 4959511E1A1BC4BC00F6F8FC /* ClangModulesDeclVendor.cpp */; }; 4966DCC4148978A10028481B /* ClangExternalASTSourceCommon.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 4966DCC3148978A10028481B /* ClangExternalASTSourceCommon.cpp */; }; 49724D991AD6ED390033C538 /* RenderScriptRuntime.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 49724D971AD6ED390033C538 /* RenderScriptRuntime.cpp */; }; + 4984BA131B978C55008658D4 /* ClangExpressionVariable.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 4984BA0E1B978C3E008658D4 /* ClangExpressionVariable.cpp */; }; + 4984BA161B979973008658D4 /* ExpressionVariable.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 4984BA151B979973008658D4 /* ExpressionVariable.cpp */; }; + 4984BA181B979C08008658D4 /* ExpressionVariable.h in Headers */ = {isa = PBXBuildFile; fileRef = 4984BA171B979C08008658D4 /* ExpressionVariable.h */; }; 49A1CAC51430E8DE00306AC9 /* ExpressionSourceCode.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 49A1CAC31430E8BD00306AC9 /* ExpressionSourceCode.cpp */; }; 49A71FE7141FFA5C00D59478 /* IRInterpreter.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 496B01581406DE8900F830D5 /* IRInterpreter.cpp */; }; 49A71FE8141FFACF00D59478 /* DataEncoder.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 268ED0A4140FF54200DE830F /* DataEncoder.cpp */; }; @@ -1877,7 +1879,6 @@ 26BC7D8510F1B77400F91463 /* ValueObjectVariable.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = ValueObjectVariable.h; path = include/lldb/Core/ValueObjectVariable.h; sourceTree = "<group>"; }; 26BC7D8610F1B77400F91463 /* VMRange.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = VMRange.h; path = include/lldb/Core/VMRange.h; sourceTree = "<group>"; }; 26BC7DC010F1B79500F91463 /* ClangExpression.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = ClangExpression.h; path = include/lldb/Expression/ClangExpression.h; sourceTree = "<group>"; }; - 26BC7DC110F1B79500F91463 /* ClangExpressionVariable.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = ClangExpressionVariable.h; path = include/lldb/Expression/ClangExpressionVariable.h; sourceTree = "<group>"; }; 26BC7DC310F1B79500F91463 /* DWARFExpression.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = DWARFExpression.h; path = include/lldb/Expression/DWARFExpression.h; sourceTree = "<group>"; }; 26BC7DD210F1B7D500F91463 /* Condition.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = Condition.h; path = include/lldb/Host/Condition.h; sourceTree = "<group>"; }; 26BC7DD310F1B7D500F91463 /* Endian.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = Endian.h; path = include/lldb/Host/Endian.h; sourceTree = "<group>"; }; @@ -1971,7 +1972,6 @@ 26BC7E9D10F1B85900F91463 /* ValueObjectVariable.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; name = ValueObjectVariable.cpp; path = source/Core/ValueObjectVariable.cpp; sourceTree = "<group>"; }; 26BC7E9E10F1B85900F91463 /* VMRange.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; name = VMRange.cpp; path = source/Core/VMRange.cpp; sourceTree = "<group>"; }; 26BC7ED510F1B86700F91463 /* ClangUserExpression.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; name = ClangUserExpression.cpp; path = source/Expression/ClangUserExpression.cpp; sourceTree = "<group>"; }; - 26BC7ED610F1B86700F91463 /* ClangExpressionVariable.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; name = ClangExpressionVariable.cpp; path = source/Expression/ClangExpressionVariable.cpp; sourceTree = "<group>"; }; 26BC7ED810F1B86700F91463 /* DWARFExpression.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; name = DWARFExpression.cpp; path = source/Expression/DWARFExpression.cpp; sourceTree = "<group>"; }; 26BC7EE810F1B88F00F91463 /* Host.mm */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.objcpp; name = Host.mm; path = source/Host/macosx/Host.mm; sourceTree = "<group>"; }; 26BC7EED10F1B8AD00F91463 /* CFCBundle.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; name = CFCBundle.cpp; path = source/Host/macosx/cfcpp/CFCBundle.cpp; sourceTree = "<group>"; }; @@ -2260,6 +2260,10 @@ 497C86C1122823F300B54702 /* ClangUtilityFunction.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = ClangUtilityFunction.h; path = include/lldb/Expression/ClangUtilityFunction.h; sourceTree = "<group>"; }; 497E7B331188ED300065CCA1 /* ABI.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = ABI.h; path = include/lldb/Target/ABI.h; sourceTree = "<group>"; }; 497E7B9D1188F6690065CCA1 /* ABI.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; name = ABI.cpp; path = source/Target/ABI.cpp; sourceTree = "<group>"; }; + 4984BA0E1B978C3E008658D4 /* ClangExpressionVariable.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; name = ClangExpressionVariable.cpp; path = ExpressionParser/Clang/ClangExpressionVariable.cpp; sourceTree = "<group>"; }; + 4984BA0F1B978C3E008658D4 /* ClangExpressionVariable.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = ClangExpressionVariable.h; path = ExpressionParser/Clang/ClangExpressionVariable.h; sourceTree = "<group>"; }; + 4984BA151B979973008658D4 /* ExpressionVariable.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; name = ExpressionVariable.cpp; path = source/Expression/ExpressionVariable.cpp; sourceTree = "<group>"; }; + 4984BA171B979C08008658D4 /* ExpressionVariable.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = ExpressionVariable.h; path = include/lldb/Expression/ExpressionVariable.h; sourceTree = "<group>"; }; 499F381E11A5B3F300F5CE02 /* CommandObjectArgs.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = CommandObjectArgs.h; path = source/Commands/CommandObjectArgs.h; sourceTree = "<group>"; }; 499F381F11A5B3F300F5CE02 /* CommandObjectArgs.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; name = CommandObjectArgs.cpp; path = source/Commands/CommandObjectArgs.cpp; sourceTree = "<group>"; }; 49A1CAC11430E21D00306AC9 /* ExpressionSourceCode.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = ExpressionSourceCode.h; path = include/lldb/Expression/ExpressionSourceCode.h; sourceTree = "<group>"; }; @@ -4355,6 +4359,8 @@ children = ( 49A1CAC11430E21D00306AC9 /* ExpressionSourceCode.h */, 49A1CAC31430E8BD00306AC9 /* ExpressionSourceCode.cpp */, + 4984BA171B979C08008658D4 /* ExpressionVariable.h */, + 4984BA151B979973008658D4 /* ExpressionVariable.cpp */, 49D7072611B5AD03001AD875 /* ClangASTSource.h */, 49D7072811B5AD11001AD875 /* ClangASTSource.cpp */, 26BC7DC010F1B79500F91463 /* ClangExpression.h */, @@ -4364,8 +4370,6 @@ 49F1A74511B3388F003ED505 /* ClangExpressionDeclMap.cpp */, 49445C2912245E5500C11A81 /* ClangExpressionParser.h */, 49445C2512245E3600C11A81 /* ClangExpressionParser.cpp */, - 26BC7DC110F1B79500F91463 /* ClangExpressionVariable.h */, - 26BC7ED610F1B86700F91463 /* ClangExpressionVariable.cpp */, 4959511B1A1BC48100F6F8FC /* ClangModulesDeclVendor.h */, 4959511E1A1BC4BC00F6F8FC /* ClangModulesDeclVendor.cpp */, 49D4FE821210B5FB00CDB854 /* ClangPersistentVariables.h */, @@ -5059,6 +5063,8 @@ 4984BA0C1B97620B008658D4 /* Clang */ = { isa = PBXGroup; children = ( + 4984BA0F1B978C3E008658D4 /* ClangExpressionVariable.h */, + 4984BA0E1B978C3E008658D4 /* ClangExpressionVariable.cpp */, ); name = Clang; sourceTree = "<group>"; @@ -5560,6 +5566,7 @@ isa = PBXHeadersBuildPhase; buildActionMask = 2147483647; files = ( + 4984BA181B979C08008658D4 /* ExpressionVariable.h in Headers */, 260A63171861008E00FECF8E /* IOHandler.h in Headers */, ); runOnlyForDeploymentPostprocessing = 0; @@ -6196,8 +6203,10 @@ 263FDE601A79A01500E68013 /* FormatEntity.cpp in Sources */, 2689004A13353E0400698AC0 /* SearchFilter.cpp in Sources */, 2689004B13353E0400698AC0 /* Section.cpp in Sources */, + 4984BA161B979973008658D4 /* ExpressionVariable.cpp in Sources */, 2689004C13353E0400698AC0 /* SourceManager.cpp in Sources */, 2689004D13353E0400698AC0 /* State.cpp in Sources */, + 4984BA131B978C55008658D4 /* ClangExpressionVariable.cpp in Sources */, 94D0B10D16D5535900EA9C70 /* LibStdcpp.cpp in Sources */, 3F81691A1ABA2419001DA9DF /* NameMatches.cpp in Sources */, AF0E22F018A09FB20009B7D1 /* AppleGetItemInfoHandler.cpp in Sources */, @@ -6233,7 +6242,6 @@ 942AFF0719F84C02007B43B4 /* LibCxxInitializerList.cpp in Sources */, 2689006113353E0E00698AC0 /* ClangExpressionParser.cpp in Sources */, B5EFAE861AE53B1D007059F3 /* RegisterContextFreeBSD_arm.cpp in Sources */, - 2689006213353E0E00698AC0 /* ClangExpressionVariable.cpp in Sources */, 2689006313353E0E00698AC0 /* ClangPersistentVariables.cpp in Sources */, 2689006413353E0E00698AC0 /* ClangUserExpression.cpp in Sources */, 4C3ADCD61810D88B00357218 /* BreakpointResolverFileRegex.cpp in Sources */, Modified: lldb/trunk/source/Commands/CommandObjectArgs.cpp URL: http://llvm.org/viewvc/llvm-project/lldb/trunk/source/Commands/CommandObjectArgs.cpp?rev=246737&r1=246736&r2=246737&view=diff ============================================================================== --- lldb/trunk/source/Commands/CommandObjectArgs.cpp (original) +++ lldb/trunk/source/Commands/CommandObjectArgs.cpp Wed Sep 2 19:35:46 2015 @@ -18,7 +18,7 @@ #include "lldb/Core/Module.h" #include "lldb/Core/Value.h" #include "lldb/Expression/ClangExpression.h" -#include "lldb/Expression/ClangExpressionVariable.h" +#include "lldb/../../source/Plugins/ExpressionParser/Clang/ClangExpressionVariable.h" #include "lldb/Expression/ClangFunction.h" #include "lldb/Host/Host.h" #include "lldb/Interpreter/CommandInterpreter.h" Modified: lldb/trunk/source/Commands/CommandObjectExpression.cpp URL: http://llvm.org/viewvc/llvm-project/lldb/trunk/source/Commands/CommandObjectExpression.cpp?rev=246737&r1=246736&r2=246737&view=diff ============================================================================== --- lldb/trunk/source/Commands/CommandObjectExpression.cpp (original) +++ lldb/trunk/source/Commands/CommandObjectExpression.cpp Wed Sep 2 19:35:46 2015 @@ -16,7 +16,7 @@ #include "lldb/Core/Value.h" #include "lldb/Core/ValueObjectVariable.h" #include "lldb/DataFormatters/ValueObjectPrinter.h" -#include "lldb/Expression/ClangExpressionVariable.h" +#include "lldb/../../source/Plugins/ExpressionParser/Clang/ClangExpressionVariable.h" #include "lldb/Expression/ClangUserExpression.h" #include "lldb/Expression/ClangFunction.h" #include "lldb/Expression/DWARFExpression.h" Modified: lldb/trunk/source/Core/FormatEntity.cpp URL: http://llvm.org/viewvc/llvm-project/lldb/trunk/source/Core/FormatEntity.cpp?rev=246737&r1=246736&r2=246737&view=diff ============================================================================== --- lldb/trunk/source/Core/FormatEntity.cpp (original) +++ lldb/trunk/source/Core/FormatEntity.cpp Wed Sep 2 19:35:46 2015 @@ -21,7 +21,7 @@ #include "lldb/DataFormatters/DataVisualization.h" #include "lldb/DataFormatters/FormatManager.h" #include "lldb/DataFormatters/ValueObjectPrinter.h" -#include "lldb/Expression/ClangExpressionVariable.h" +#include "lldb/../../source/Plugins/ExpressionParser/Clang/ClangExpressionVariable.h" #include "lldb/Host/FileSpec.h" #include "lldb/Interpreter/CommandInterpreter.h" #include "lldb/Symbol/Block.h" Modified: lldb/trunk/source/Core/ValueObject.cpp URL: http://llvm.org/viewvc/llvm-project/lldb/trunk/source/Core/ValueObject.cpp?rev=246737&r1=246736&r2=246737&view=diff ============================================================================== --- lldb/trunk/source/Core/ValueObject.cpp (original) +++ lldb/trunk/source/Core/ValueObject.cpp Wed Sep 2 19:35:46 2015 @@ -35,7 +35,7 @@ #include "lldb/DataFormatters/StringPrinter.h" #include "lldb/DataFormatters/ValueObjectPrinter.h" -#include "lldb/Expression/ClangExpressionVariable.h" +#include "lldb/../../source/Plugins/ExpressionParser/Clang/ClangExpressionVariable.h" #include "lldb/Expression/ClangPersistentVariables.h" #include "lldb/Host/Endian.h" Removed: lldb/trunk/source/Expression/ClangExpressionVariable.cpp URL: http://llvm.org/viewvc/llvm-project/lldb/trunk/source/Expression/ClangExpressionVariable.cpp?rev=246736&view=auto ============================================================================== --- lldb/trunk/source/Expression/ClangExpressionVariable.cpp (original) +++ lldb/trunk/source/Expression/ClangExpressionVariable.cpp (removed) @@ -1,142 +0,0 @@ -//===-- ClangExpressionVariable.cpp -----------------------------*- C++ -*-===// -// -// The LLVM Compiler Infrastructure -// -// This file is distributed under the University of Illinois Open Source -// License. See LICENSE.TXT for details. -// -//===----------------------------------------------------------------------===// - -#include "lldb/Expression/ClangExpressionVariable.h" -#include "clang/AST/ASTContext.h" -#include "lldb/Core/ConstString.h" -#include "lldb/Core/DataExtractor.h" -#include "lldb/Core/Stream.h" -#include "lldb/Core/Value.h" -#include "lldb/Core/ValueObjectConstResult.h" -#include "lldb/Target/ExecutionContext.h" -#include "lldb/Target/Process.h" - -using namespace lldb_private; -using namespace clang; - -ClangExpressionVariable::ClangExpressionVariable(ExecutionContextScope *exe_scope, lldb::ByteOrder byte_order, uint32_t addr_byte_size) : - m_parser_vars(), - m_jit_vars (), - m_flags (EVNone), - m_frozen_sp (ValueObjectConstResult::Create (exe_scope, byte_order, addr_byte_size)) -{ -} - -ClangExpressionVariable::ClangExpressionVariable (ExecutionContextScope *exe_scope, - Value &value, - const ConstString &name, - uint16_t flags) : - m_parser_vars(), - m_jit_vars (), - m_flags (flags), - m_frozen_sp (ValueObjectConstResult::Create (exe_scope, value, name)) -{ -} - -ClangExpressionVariable::ClangExpressionVariable (const lldb::ValueObjectSP &valobj_sp) : - m_parser_vars(), - m_jit_vars (), - m_flags (EVNone), - m_frozen_sp (valobj_sp) -{ -} - -//---------------------------------------------------------------------- -/// Return the variable's size in bytes -//---------------------------------------------------------------------- -size_t -ClangExpressionVariable::GetByteSize () -{ - return m_frozen_sp->GetByteSize(); -} - -const ConstString & -ClangExpressionVariable::GetName () -{ - return m_frozen_sp->GetName(); -} - -lldb::ValueObjectSP -ClangExpressionVariable::GetValueObject() -{ - return m_frozen_sp; -} - -RegisterInfo * -ClangExpressionVariable::GetRegisterInfo() -{ - return m_frozen_sp->GetValue().GetRegisterInfo(); -} - -void -ClangExpressionVariable::SetRegisterInfo (const RegisterInfo *reg_info) -{ - return m_frozen_sp->GetValue().SetContext (Value::eContextTypeRegisterInfo, const_cast<RegisterInfo *>(reg_info)); -} - -CompilerType -ClangExpressionVariable::GetCompilerType() -{ - return m_frozen_sp->GetCompilerType(); -} - -void -ClangExpressionVariable::SetCompilerType(const CompilerType &clang_type) -{ - m_frozen_sp->GetValue().SetCompilerType(clang_type); -} - - -TypeFromUser -ClangExpressionVariable::GetTypeFromUser() -{ - TypeFromUser tfu (m_frozen_sp->GetCompilerType()); - return tfu; -} - -uint8_t * -ClangExpressionVariable::GetValueBytes() -{ - const size_t byte_size = m_frozen_sp->GetByteSize(); - if (byte_size > 0) - { - if (m_frozen_sp->GetDataExtractor().GetByteSize() < byte_size) - { - m_frozen_sp->GetValue().ResizeData(byte_size); - m_frozen_sp->GetValue().GetData (m_frozen_sp->GetDataExtractor()); - } - return const_cast<uint8_t *>(m_frozen_sp->GetDataExtractor().GetDataStart()); - } - return NULL; -} - -void -ClangExpressionVariable::SetName (const ConstString &name) -{ - m_frozen_sp->SetName (name); -} - -void -ClangExpressionVariable::ValueUpdated () -{ - m_frozen_sp->ValueUpdated (); -} - -void -ClangExpressionVariable::TransferAddress (bool force) -{ - if (m_live_sp.get() == NULL) - return; - - if (m_frozen_sp.get() == NULL) - return; - - if (force || (m_frozen_sp->GetLiveAddress() == LLDB_INVALID_ADDRESS)) - m_frozen_sp->SetLiveAddress(m_live_sp->GetLiveAddress()); -} Modified: lldb/trunk/source/Expression/DWARFExpression.cpp URL: http://llvm.org/viewvc/llvm-project/lldb/trunk/source/Expression/DWARFExpression.cpp?rev=246737&r1=246736&r2=246737&view=diff ============================================================================== --- lldb/trunk/source/Expression/DWARFExpression.cpp (original) +++ lldb/trunk/source/Expression/DWARFExpression.cpp Wed Sep 2 19:35:46 2015 @@ -25,7 +25,7 @@ #include "lldb/Core/VMRange.h" #include "lldb/Expression/ClangExpressionDeclMap.h" -#include "lldb/Expression/ClangExpressionVariable.h" +#include "lldb/../../source/Plugins/ExpressionParser/Clang/ClangExpressionVariable.h" #include "lldb/Host/Endian.h" #include "lldb/Host/Host.h" Added: lldb/trunk/source/Expression/ExpressionVariable.cpp URL: http://llvm.org/viewvc/llvm-project/lldb/trunk/source/Expression/ExpressionVariable.cpp?rev=246737&view=auto ============================================================================== --- lldb/trunk/source/Expression/ExpressionVariable.cpp (added) +++ lldb/trunk/source/Expression/ExpressionVariable.cpp Wed Sep 2 19:35:46 2015 @@ -0,0 +1,11 @@ +//===-- ExpressionVariable.cpp ----------------------------------*- C++ -*-===// +// +// The LLVM Compiler Infrastructure +// +// This file is distributed under the University of Illinois Open Source +// License. See LICENSE.TXT for details. +// +//===----------------------------------------------------------------------===// + +#include "lldb/Expression/ExpressionVariable.h" + Modified: lldb/trunk/source/Expression/Materializer.cpp URL: http://llvm.org/viewvc/llvm-project/lldb/trunk/source/Expression/Materializer.cpp?rev=246737&r1=246736&r2=246737&view=diff ============================================================================== --- lldb/trunk/source/Expression/Materializer.cpp (original) +++ lldb/trunk/source/Expression/Materializer.cpp Wed Sep 2 19:35:46 2015 @@ -11,7 +11,7 @@ #include "lldb/Core/RegisterValue.h" #include "lldb/Core/ValueObjectConstResult.h" #include "lldb/Core/ValueObjectVariable.h" -#include "lldb/Expression/ClangExpressionVariable.h" +#include "lldb/../../source/Plugins/ExpressionParser/Clang/ClangExpressionVariable.h" #include "lldb/Expression/ClangPersistentVariables.h" #include "lldb/Expression/Materializer.h" #include "lldb/Symbol/ClangASTContext.h" Copied: lldb/trunk/source/Plugins/ExpressionParser/Clang/ClangExpressionVariable.cpp (from r246693, lldb/trunk/source/Expression/ClangExpressionVariable.cpp) URL: http://llvm.org/viewvc/llvm-project/lldb/trunk/source/Plugins/ExpressionParser/Clang/ClangExpressionVariable.cpp?p2=lldb/trunk/source/Plugins/ExpressionParser/Clang/ClangExpressionVariable.cpp&p1=lldb/trunk/source/Expression/ClangExpressionVariable.cpp&r1=246693&r2=246737&rev=246737&view=diff ============================================================================== --- lldb/trunk/source/Expression/ClangExpressionVariable.cpp (original) +++ lldb/trunk/source/Plugins/ExpressionParser/Clang/ClangExpressionVariable.cpp Wed Sep 2 19:35:46 2015 @@ -7,7 +7,8 @@ // //===----------------------------------------------------------------------===// -#include "lldb/Expression/ClangExpressionVariable.h" +#include "ClangExpressionVariable.h" + #include "clang/AST/ASTContext.h" #include "lldb/Core/ConstString.h" #include "lldb/Core/DataExtractor.h" @@ -20,6 +21,8 @@ using namespace lldb_private; using namespace clang; +const char *g_clang_expression_variable_kind_name = "ClangExpressionVariable"; + ClangExpressionVariable::ClangExpressionVariable(ExecutionContextScope *exe_scope, lldb::ByteOrder byte_order, uint32_t addr_byte_size) : m_parser_vars(), m_jit_vars (), _______________________________________________ lldb-commits mailing list lldb-commits@lists.llvm.org http://lists.llvm.org/cgi-bin/mailman/listinfo/lldb-commits