From 4d226e8f17d2b0eb424486b965f95e42a89389b9 Mon Sep 17 00:00:00 2001 From: bjorn3 Date: Fri, 13 Mar 2020 11:01:39 +0100 Subject: [PATCH] Hash trap message symbol nameThis saves ~7% of disk space --- src/trap.rs | 8 +++++++- 1 file changed, 7 insertions(+), 1 deletion(-) diff --git a/src/trap.rs b/src/trap.rs index 6ce5be0009f..5d306490683 100644 --- a/src/trap.rs +++ b/src/trap.rs @@ -1,3 +1,6 @@ +use std::collections::hash_map::DefaultHasher; +use std::hash::{Hash, Hasher}; + use crate::prelude::*; fn codegen_print(fx: &mut FunctionCx<'_, '_, impl cranelift_module::Backend>, msg: &str) { @@ -21,12 +24,15 @@ fn codegen_print(fx: &mut FunctionCx<'_, '_, impl cranelift_module::Backend>, ms let symbol_name = fx.tcx.symbol_name(fx.instance); let real_msg = format!("trap at {:?} ({}): {}\0", fx.instance, symbol_name, msg); + let mut hasher = DefaultHasher::new(); + real_msg.hash(&mut hasher); + let msg_hash = hasher.finish(); let mut data_ctx = DataContext::new(); data_ctx.define(real_msg.as_bytes().to_vec().into_boxed_slice()); let msg_id = fx .module .declare_data( - &(symbol_name.name.as_str().to_string() + msg), + &format!("__trap_{:08x}", msg_hash), Linkage::Local, false, false,