diff options
author | Greg Clayton <gclayton@apple.com> | 2012-04-11 21:13:31 +0000 |
---|---|---|
committer | Greg Clayton <gclayton@apple.com> | 2012-04-11 21:13:31 +0000 |
commit | d1411e1aa2f684dc7d8915dfa51e498e2339c64f (patch) | |
tree | ecd229f3fd0fd9f61add72aa1d0aa08b6136947c /lldb/source/Core/Opcode.cpp | |
parent | aaf4d69ac149761e147f871626459d3d9634bceb (diff) | |
download | bcm5719-llvm-d1411e1aa2f684dc7d8915dfa51e498e2339c64f.tar.gz bcm5719-llvm-d1411e1aa2f684dc7d8915dfa51e498e2339c64f.zip |
Cleaned up code that was getting SBData for an SBInstruction.
llvm-svn: 154535
Diffstat (limited to 'lldb/source/Core/Opcode.cpp')
-rw-r--r-- | lldb/source/Core/Opcode.cpp | 35 |
1 files changed, 35 insertions, 0 deletions
diff --git a/lldb/source/Core/Opcode.cpp b/lldb/source/Core/Opcode.cpp index 489a61a353a..8afaa32b07d 100644 --- a/lldb/source/Core/Opcode.cpp +++ b/lldb/source/Core/Opcode.cpp @@ -13,6 +13,8 @@ // C++ Includes // Other libraries and framework includes // Project includes +#include "lldb/Core/DataBufferHeap.h" +#include "lldb/Core/DataExtractor.h" #include "lldb/Core/Stream.h" #include "lldb/Host/Endian.h" @@ -79,3 +81,36 @@ Opcode::GetDataByteOrder () const return eByteOrderInvalid; } +uint32_t +Opcode::GetData (DataExtractor &data) const +{ + uint32_t byte_size = GetByteSize (); + DataBufferSP buffer_sp; + if (byte_size > 0) + { + switch (m_type) + { + case Opcode::eTypeInvalid: + break; + + case Opcode::eType8: buffer_sp.reset (new DataBufferHeap (&m_data.inst8, byte_size)); break; + case Opcode::eType16: buffer_sp.reset (new DataBufferHeap (&m_data.inst16, byte_size)); break; + case Opcode::eType32: buffer_sp.reset (new DataBufferHeap (&m_data.inst32, byte_size)); break; + case Opcode::eType64: buffer_sp.reset (new DataBufferHeap (&m_data.inst64, byte_size)); break; + case Opcode::eTypeBytes:buffer_sp.reset (new DataBufferHeap (GetOpcodeBytes(), byte_size)); break; + break; + } + } + + if (buffer_sp) + { + data.SetByteOrder(GetDataByteOrder()); + data.SetData (buffer_sp); + return byte_size; + } + data.Clear(); + return 0; +} + + + |