summaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
authorJohn Hodge <tpg@ucc.asn.au>2019-01-20 15:29:47 +0800
committerJohn Hodge <tpg@ucc.asn.au>2019-01-20 15:29:47 +0800
commit793ac4209456b058ee39474b617c89372d0417d0 (patch)
treef678db4f3ef3a101d6da6753b452e2fc1f37e0d7 /src
parent4c9e71afa9fe11ddf7dc6e660ce8cf38da93b781 (diff)
downloadmrust-793ac4209456b058ee39474b617c89372d0417d0.tar.gz
HIR Serialise - Tweaks for easier debugging
Diffstat (limited to 'src')
-rw-r--r--src/hir/deserialise.cpp5
-rw-r--r--src/hir/serialise_lowlevel.cpp6
-rw-r--r--src/hir/serialise_lowlevel.hpp2
3 files changed, 10 insertions, 3 deletions
diff --git a/src/hir/deserialise.cpp b/src/hir/deserialise.cpp
index 70ff1a34..c6655a80 100644
--- a/src/hir/deserialise.cpp
+++ b/src/hir/deserialise.cpp
@@ -81,7 +81,7 @@
template<typename T>
::std::vector<T> deserialise_vec()
{
- TRACE_FUNCTION_F("<" << typeid(T).name() << ">");
+ TRACE_FUNCTION_FR("<" << typeid(T).name() << ">", m_in.get_pos());
size_t n = m_in.read_count();
DEBUG("n = " << n);
::std::vector<T> rv;
@@ -971,7 +971,7 @@
}
::HIR::Struct HirDeserialiser::deserialise_struct()
{
- TRACE_FUNCTION;
+ TRACE_FUNCTION_FR("", m_in.get_pos());
auto params = deserialise_genericparams();
auto repr = static_cast< ::HIR::Struct::Repr>( m_in.read_tag() );
DEBUG("params = " << params.fmt_args() << params.fmt_bounds());
@@ -995,6 +995,7 @@
BUG(Span(), "Bad tag for HIR::Struct::Data - " << tag);
}
auto align = static_cast<unsigned>(m_in.read_u64c());
+ DEBUG("align = " << align);
auto markings = deserialise_markings();
auto str_markings = deserialise_str_markings();
diff --git a/src/hir/serialise_lowlevel.cpp b/src/hir/serialise_lowlevel.cpp
index cf8f5506..e69ff848 100644
--- a/src/hir/serialise_lowlevel.cpp
+++ b/src/hir/serialise_lowlevel.cpp
@@ -186,7 +186,8 @@ void ReadBuffer::populate(ReaderInner& is)
Reader::Reader(const ::std::string& filename):
m_inner( new ReaderInner(filename) ),
- m_buffer(1024)
+ m_buffer(1024),
+ m_pos(0)
{
}
Reader::~Reader()
@@ -198,6 +199,7 @@ void Reader::read(void* buf, size_t len)
{
auto used = m_buffer.read(buf, len);
if( used == len ) {
+ m_pos += len;
return ;
}
buf = reinterpret_cast<uint8_t*>(buf) + used;
@@ -214,6 +216,8 @@ void Reader::read(void* buf, size_t len)
if( used != len )
throw ::std::runtime_error( FMT("Reader::read - Requested " << len << " bytes from buffer, got " << used) );
}
+
+ m_pos += len;
}
diff --git a/src/hir/serialise_lowlevel.hpp b/src/hir/serialise_lowlevel.hpp
index 6be8ff8c..a35b8e98 100644
--- a/src/hir/serialise_lowlevel.hpp
+++ b/src/hir/serialise_lowlevel.hpp
@@ -147,12 +147,14 @@ class Reader
{
ReaderInner* m_inner;
ReadBuffer m_buffer;
+ size_t m_pos;
public:
Reader(const ::std::string& path);
Reader(const Writer&) = delete;
Reader(Writer&&) = delete;
~Reader();
+ size_t get_pos() const { return m_pos; }
void read(void* dst, size_t count);
uint8_t read_u8() {