|
LLDB mainline
|
Classes | |
| struct | DataStack |
| class | Dictionary |
Typedefs | |
| using | ControlStackElement = llvm::StringRef |
| using | ControlStack = std::vector<ControlStackElement> |
| using | DictionarySP = std::shared_ptr<Dictionary> |
| using | DataStackElement |
Enumerations | |
| enum | DataType : uint8_t { Any , String , Int , UInt , Object , Type , Selector , Integer , Dict } |
| enum | OpCodes : uint8_t |
| enum | Selectors : uint8_t |
| enum | Signatures : uint8_t |
Functions | |
| llvm::Error | Interpret (ControlStack &control, DataStack &data, Signatures sig) |
| static llvm::Error | FormatImpl (DataStack &data) |
| Implement the @format function. | |
| static llvm::Error | TypeCheck (llvm::ArrayRef< DataStackElement > data, DataType type) |
| static llvm::Error | TypeCheck (llvm::ArrayRef< DataStackElement > data, DataType type1, DataType type2) |
| static llvm::Error | TypeCheck (llvm::ArrayRef< DataStackElement > data, DataType type1, DataType type2, DataType type3) |
| template<typename T> | |
| static DataStackElement | WrapAPSIntResult (T result, unsigned bit_width, bool is_unsigned) |
| Wrap the result of a binary operator applied to two APSInts back into a DataStackElement. | |
| static bool | Reaches (const Dictionary *from, const Dictionary *target) |
| Returns true if target is transitively reachable via from. | |
| using lldb_private::FormatterBytecode::ControlStack = std::vector<ControlStackElement> |
Definition at line 55 of file FormatterBytecode.h.
| using lldb_private::FormatterBytecode::ControlStackElement = llvm::StringRef |
Definition at line 54 of file FormatterBytecode.h.
Definition at line 68 of file FormatterBytecode.h.
| using lldb_private::FormatterBytecode::DictionarySP = std::shared_ptr<Dictionary> |
Definition at line 64 of file FormatterBytecode.h.
| enum lldb_private::FormatterBytecode::DataType : uint8_t |
| Enumerator | |
|---|---|
| Any | |
| String | |
| Int | Deprecated: use Integer. |
| UInt | Deprecated: use Integer. |
| Object | |
| Type | |
| Selector | |
| Integer | |
| Dict | |
Definition at line 22 of file FormatterBytecode.h.
| enum lldb_private::FormatterBytecode::OpCodes : uint8_t |
Definition at line 36 of file FormatterBytecode.h.
| enum lldb_private::FormatterBytecode::Selectors : uint8_t |
Definition at line 42 of file FormatterBytecode.h.
| enum lldb_private::FormatterBytecode::Signatures : uint8_t |
Definition at line 48 of file FormatterBytecode.h.
|
static |
Implement the @format function.
Definition at line 99 of file FormatterBytecode.cpp.
References lldb_private::Align(), lldb_private::FormatterBytecode::DataStack::Pop(), lldb_private::FormatterBytecode::DataStack::Push(), and lldb_private::toString().
Referenced by Interpret().
| llvm::Error lldb_private::FormatterBytecode::Interpret | ( | ControlStack & | control, |
| DataStack & | data, | ||
| Signatures | sig ) |
Activate the top most block from the control stack.
Fetch the next byte in the instruction stream.
Definition at line 243 of file FormatterBytecode.cpp.
References Any, BINOP, BINOP_CHECKZERO, BITOP, lldb_private::bits(), CMPOP, lldb_private::DataFormatters, Dict, error(), FormatImpl(), lldb_private::GetLog(), Int, LLDB_LOG_VERBOSE, Object, pc, lldb_private::FormatterBytecode::DataStack::Pop(), POP_VALOBJ, lldb_private::FormatterBytecode::DataStack::PopAny(), lldb_private::FormatterBytecode::DataStack::Push(), Reaches(), Selector, SHIFTOP, String, lldb_private::toString(), Type, TYPE_CHECK, and UInt.
Referenced by lldb_private::BytecodeSyntheticChildren::FrontEnd::CalculateNumChildren(), lldb_private::BytecodeSummaryFormat::FormatObject(), lldb_private::BytecodeSyntheticChildren::FrontEnd::FrontEnd(), lldb_private::BytecodeSyntheticChildren::FrontEnd::GetChildAtIndex(), lldb_private::BytecodeSyntheticChildren::FrontEnd::GetIndexOfChildWithName(), and lldb_private::BytecodeSyntheticChildren::FrontEnd::Update().
|
static |
Returns true if target is transitively reachable via from.
Likewise, returns true if they are the same dictionary. This is used to prevent memory leaks caused by retain cycles. Dictionaries can be shared by multiple parents, so each one is visited only once to prevent exponential running time.
Definition at line 227 of file FormatterBytecode.cpp.
Referenced by Interpret().
|
static |
Definition at line 149 of file FormatterBytecode.cpp.
References Any, Dict, Int, Integer, Object, Selector, String, Type, and UInt.
Referenced by TypeCheck(), and TypeCheck().
|
static |
Definition at line 195 of file FormatterBytecode.cpp.
References error(), and TypeCheck().
|
static |
Definition at line 202 of file FormatterBytecode.cpp.
References error(), and TypeCheck().
|
static |
Wrap the result of a binary operator applied to two APSInts back into a DataStackElement.
Comparison operators yield bool and need bit_width/ is_unsigned to construct the boolean's APSInt representation; arithmetic operators already yield a correctly-tagged APSInt and ignore them.
Definition at line 214 of file FormatterBytecode.cpp.