Skip to content
This repository has been archived by the owner on Nov 15, 2023. It is now read-only.

Commit

Permalink
PR comment
Browse files Browse the repository at this point in the history
  • Loading branch information
pgherveou committed Mar 27, 2023
1 parent f493ec7 commit 07aeb3a
Showing 1 changed file with 4 additions and 18 deletions.
22 changes: 4 additions & 18 deletions frame/contracts/proc-macro/src/lib.rs
Original file line number Diff line number Diff line change
Expand Up @@ -610,40 +610,26 @@ fn expand_functions(def: &EnvDef, expand_blocks: bool, host_state: TokenStream2)
// wrapped host function body call with host function traces
// see https://github.com/paritytech/substrate/tree/master/frame/contracts#host-function-tracing
let wrapped_body_with_trace = {
let params_fmt_str = params.clone().filter_map(|arg| match arg {
let trace_params = params.clone().filter_map(|arg| match arg {
syn::FnArg::Receiver(_) => None,
syn::FnArg::Typed(p) => {
match *p.pat.clone() {
syn::Pat::Ident(ref pat_ident) => Some(pat_ident.ident.to_string()),
_ => None,
}
},
})
.map(|s| format!("{s}: {{:?}}"))
.collect::<Vec<_>>()
.join(", ");

let trace_fmt_str = format!("{}::{}({}) = {{:?}}", module, name, params_fmt_str);
let trace_fmt_args = params.clone().filter_map(|arg| match arg {
syn::FnArg::Receiver(_) => None,
syn::FnArg::Typed(p) => {
match *p.pat.clone() {
syn::Pat::Ident(ref pat_ident) => Some(pat_ident.ident.clone()),
_ => None,
}
},
});

let debug_buffer_fmt_str = format!("{}\n", trace_fmt_str);
let debug_buffer_fmt_args = trace_fmt_args.clone();
let trace_fmt_str = trace_params.clone().map(|s| format!("{s}: {{:?}}")).collect::<Vec<_>>().join(", ");
let trace_fmt_str = format!("{}::{}({}) = {{:?}}\n", module, name, trace_fmt_str);

quote! {
if ::log::log_enabled!(target: "runtime::contracts::strace", ::log::Level::Trace) {
let result = #body;
{
use sp_std::fmt::Write;
let mut w = sp_std::Writer::default();
let _ = core::write!(&mut w, #debug_buffer_fmt_str, #( #debug_buffer_fmt_args, )* result);
let _ = core::write!(&mut w, #trace_fmt_str, #( #trace_params, )* result);
let msg = core::str::from_utf8(&w.inner()).unwrap_or_default();
ctx.ext().append_debug_buffer(msg);
}
Expand Down

0 comments on commit 07aeb3a

Please sign in to comment.