diff options
author | John Hodge <tpg@mutabah.net> | 2016-08-26 13:24:16 +0800 |
---|---|---|
committer | John Hodge <tpg@mutabah.net> | 2016-08-26 13:24:16 +0800 |
commit | 82340c7f243f7cd1e61675d842d3faa50d3bdab5 (patch) | |
tree | efff3550eaa2e15681d02361c755e2ee5d0b26d2 /src | |
parent | ac1455931445ad01afce05846614b7709d760e02 (diff) | |
download | mrust-82340c7f243f7cd1e61675d842d3faa50d3bdab5.tar.gz |
HIR Serialise - Only serialise MIR if present
Diffstat (limited to 'src')
-rw-r--r-- | src/hir/serialise.cpp | 9 | ||||
-rw-r--r-- | src/mir/mir_ptr.hpp | 2 |
2 files changed, 10 insertions, 1 deletions
diff --git a/src/hir/serialise.cpp b/src/hir/serialise.cpp index 7ae977bd..7682b278 100644 --- a/src/hir/serialise.cpp +++ b/src/hir/serialise.cpp @@ -346,6 +346,7 @@ namespace { } void serialise_typeimpl(const ::HIR::TypeImpl& impl) { + TRACE_FUNCTION_F("impl" << impl.m_params.fmt_args() << " " << impl.m_type); serialise_generics(impl.m_params); serialise_type(impl.m_type); @@ -360,24 +361,28 @@ namespace { } void serialise_traitimpl(const ::HIR::TraitImpl& impl) { + TRACE_FUNCTION_F("impl" << impl.m_params.fmt_args() << " ?" << impl.m_trait_args << " for " << impl.m_type); serialise_generics(impl.m_params); serialise_pathparams(impl.m_trait_args); serialise_type(impl.m_type); write_count(impl.m_methods.size()); for(const auto& v : impl.m_methods) { + DEBUG("fn " << v.first); write_string(v.first); write_bool(v.second.is_specialisable); serialise(v.second.data); } write_count(impl.m_constants.size()); for(const auto& v : impl.m_constants) { + DEBUG("const " << v.first); write_string(v.first); write_bool(v.second.is_specialisable); serialise(v.second.data); } write_count(impl.m_types.size()); for(const auto& v : impl.m_types) { + DEBUG("type " << v.first); write_string(v.first); write_bool(v.second.is_specialisable); serialise(v.second.data); @@ -458,7 +463,9 @@ namespace { void serialise(const ::HIR::ExprPtr& exp) { - serialise(*exp.m_mir); + if( exp.m_mir ) { + serialise(*exp.m_mir); + } } void serialise(const ::MIR::Function& mir) { diff --git a/src/mir/mir_ptr.hpp b/src/mir/mir_ptr.hpp index ba93c092..d78df6d9 100644 --- a/src/mir/mir_ptr.hpp +++ b/src/mir/mir_ptr.hpp @@ -19,6 +19,8 @@ public: ::MIR::Function& operator*() { return *ptr; } const ::MIR::Function& operator->() const { return *ptr; } const ::MIR::Function& operator*() const { return *ptr; } + + operator bool() const { return ptr != nullptr; } }; } |