diff options
author | John Hodge <tpg@ucc.asn.au> | 2019-01-20 15:29:47 +0800 |
---|---|---|
committer | John Hodge <tpg@ucc.asn.au> | 2019-01-20 15:29:47 +0800 |
commit | 793ac4209456b058ee39474b617c89372d0417d0 (patch) | |
tree | f678db4f3ef3a101d6da6753b452e2fc1f37e0d7 /src | |
parent | 4c9e71afa9fe11ddf7dc6e660ce8cf38da93b781 (diff) | |
download | mrust-793ac4209456b058ee39474b617c89372d0417d0.tar.gz |
HIR Serialise - Tweaks for easier debugging
Diffstat (limited to 'src')
-rw-r--r-- | src/hir/deserialise.cpp | 5 | ||||
-rw-r--r-- | src/hir/serialise_lowlevel.cpp | 6 | ||||
-rw-r--r-- | src/hir/serialise_lowlevel.hpp | 2 |
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() { |