LLDB mainline
lldb_private::ExpressionVariable Class Reference

#include <ExpressionVariable.h>

Inheritance diagram for lldb_private::ExpressionVariable:
[legend]

Public Types

enum  Flags {
  EVNone = 0 , EVIsLLDBAllocated = 1 << 0 , EVIsProgramReference = 1 << 1 , EVNeedsAllocation = 1 << 2 ,
  EVIsFreezeDried = 1 << 3 , EVNeedsFreezeDry , EVKeepInTarget = 1 << 5 , EVTypeIsReference = 1 << 6 ,
  EVBareRegister = 1 << 7
}
typedef uint16_t FlagType

Public Member Functions

 ExpressionVariable ()
virtual ~ExpressionVariable ()=default
llvm::Expected< uint64_t > GetByteSize ()
ConstString GetName ()
lldb::ValueObjectSP GetValueObject ()
uint8_t * GetValueBytes ()
void ValueUpdated ()
RegisterInfoGetRegisterInfo ()
void SetRegisterInfo (const RegisterInfo *reg_info)
CompilerType GetCompilerType ()
void SetCompilerType (const CompilerType &compiler_type)
void SetName (ConstString name)
void TransferAddress (bool force=false)

Public Attributes

FlagType m_flags
lldb::ValueObjectSP m_frozen_sp
 These members should be private.
lldb::ValueObjectSP m_live_sp
 The ValueObject counterpart to m_frozen_sp that tracks the value in inferior memory.

Static Public Attributes

static char ID
 LLVM RTTI support.

Detailed Description

Definition at line 25 of file ExpressionVariable.h.

Member Typedef Documentation

◆ FlagType

Definition at line 106 of file ExpressionVariable.h.

Member Enumeration Documentation

◆ Flags

Enumerator
EVNone 
EVIsLLDBAllocated 

This variable is resident in a location specifically allocated for it by LLDB in the target process.

EVIsProgramReference 

This variable is a reference to a (possibly invalid) area managed by the target program.

EVNeedsAllocation 

Space for this variable has yet to be allocated in the target process.

EVIsFreezeDried 

This variable's authoritative version is in m_frozen_sp (for example, for statically-computed results)

EVNeedsFreezeDry 

Copy from m_live_sp to m_frozen_sp during dematerialization.

EVKeepInTarget 

Keep the allocation after the expression is complete rather than freeze drying its contents and freeing it.

EVTypeIsReference 

The original type of this variable is a reference, so materialize the value rather than the location.

EVBareRegister 

This variable is a direct reference to $pc or some other entity.

Definition at line 81 of file ExpressionVariable.h.

Constructor & Destructor Documentation

◆ ExpressionVariable()

ExpressionVariable::ExpressionVariable ( )

Definition at line 20 of file ExpressionVariable.cpp.

References m_flags.

◆ ~ExpressionVariable()

virtual lldb_private::ExpressionVariable::~ExpressionVariable ( )
virtualdefault

Member Function Documentation

◆ GetByteSize()

llvm::Expected< uint64_t > lldb_private::ExpressionVariable::GetByteSize ( )
inline

Definition at line 36 of file ExpressionVariable.h.

References m_frozen_sp.

◆ GetCompilerType()

CompilerType lldb_private::ExpressionVariable::GetCompilerType ( )
inline

Definition at line 55 of file ExpressionVariable.h.

References m_frozen_sp.

◆ GetName()

ConstString lldb_private::ExpressionVariable::GetName ( )
inline

Definition at line 38 of file ExpressionVariable.h.

References m_frozen_sp.

Referenced by lldb_private::ClangREPL::PrintOneVariable().

◆ GetRegisterInfo()

RegisterInfo * lldb_private::ExpressionVariable::GetRegisterInfo ( )
inline

Definition at line 46 of file ExpressionVariable.h.

References m_frozen_sp.

◆ GetValueBytes()

uint8_t * ExpressionVariable::GetValueBytes ( )

Definition at line 22 of file ExpressionVariable.cpp.

References m_frozen_sp.

◆ GetValueObject()

lldb::ValueObjectSP lldb_private::ExpressionVariable::GetValueObject ( )
inline

Definition at line 40 of file ExpressionVariable.h.

References m_frozen_sp.

◆ SetCompilerType()

void lldb_private::ExpressionVariable::SetCompilerType ( const CompilerType & compiler_type)
inline

Definition at line 57 of file ExpressionVariable.h.

References m_frozen_sp.

◆ SetName()

void lldb_private::ExpressionVariable::SetName ( ConstString name)
inline

Definition at line 61 of file ExpressionVariable.h.

References m_frozen_sp.

◆ SetRegisterInfo()

void lldb_private::ExpressionVariable::SetRegisterInfo ( const RegisterInfo * reg_info)
inline

Definition at line 50 of file ExpressionVariable.h.

References m_frozen_sp, and lldb_private::Value::RegisterInfo.

◆ TransferAddress()

void lldb_private::ExpressionVariable::TransferAddress ( bool force = false)
inline

Definition at line 70 of file ExpressionVariable.h.

References LLDB_INVALID_ADDRESS, m_frozen_sp, and m_live_sp.

◆ ValueUpdated()

void lldb_private::ExpressionVariable::ValueUpdated ( )
inline

Definition at line 44 of file ExpressionVariable.h.

References m_frozen_sp.

Member Data Documentation

◆ ID

char ExpressionVariable::ID
static

LLVM RTTI support.

Definition at line 30 of file ExpressionVariable.h.

◆ m_flags

FlagType lldb_private::ExpressionVariable::m_flags

Definition at line 108 of file ExpressionVariable.h.

Referenced by ExpressionVariable().

◆ m_frozen_sp

lldb::ValueObjectSP lldb_private::ExpressionVariable::m_frozen_sp

These members should be private.

A value object whose value's data lives in host (lldb's) memory.

Definition at line 113 of file ExpressionVariable.h.

Referenced by GetByteSize(), GetCompilerType(), GetName(), GetRegisterInfo(), GetValueBytes(), GetValueObject(), SetCompilerType(), SetName(), SetRegisterInfo(), TransferAddress(), and ValueUpdated().

◆ m_live_sp

lldb::ValueObjectSP lldb_private::ExpressionVariable::m_live_sp

The ValueObject counterpart to m_frozen_sp that tracks the value in inferior memory.

This object may not always exist; its presence depends on whether it is logical for the value to exist in the inferior memory. For example, when evaluating a C++ expression that generates an r-value, such as a single function call, there is no memory address in the inferior to track.

Definition at line 120 of file ExpressionVariable.h.

Referenced by TransferAddress().


The documentation for this class was generated from the following files: