From e6c4b614562078b176601b014fda4ef5cb5736c7 Mon Sep 17 00:00:00 2001 From: Markus Westerlind Date: Mon, 7 Jan 2019 22:26:21 +0100 Subject: [PATCH] perf(vm/translate): Use FnvMap with variable replacement --- vm/src/core/mod.rs | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) diff --git a/vm/src/core/mod.rs b/vm/src/core/mod.rs index 6c990f0d02..71163de220 100644 --- a/vm/src/core/mod.rs +++ b/vm/src/core/mod.rs @@ -896,7 +896,7 @@ enum CType { use self::optimize::*; struct ReplaceVariables<'a, 'b> { - replacements: &'b HashMap, + replacements: &'b FnvMap, allocator: &'a Allocator<'a>, } @@ -924,7 +924,7 @@ impl<'a, 'b> Visitor<'a, 'a> for ReplaceVariables<'a, 'b> { fn replace_variables<'a, 'b>( allocator: &'a Allocator<'a>, - replacements: &'b HashMap, + replacements: &'b FnvMap, expr: &'a Expr<'a>, ) -> &'a Expr<'a> { if replacements.is_empty() { @@ -1456,7 +1456,7 @@ impl<'a, 'e> PatternTranslator<'a, 'e> { // Gather all the identifiers of top level pattern of each of the `patterns` and create a core // pattern. // Nested patterns are ignored here. - fn pattern_identifiers<'b, 'p: 'b, I>(&self, patterns: I) -> (Pattern, HashMap) + fn pattern_identifiers<'b, 'p: 'b, I>(&self, patterns: I) -> (Pattern, FnvMap) where I: IntoIterator>, { @@ -1466,7 +1466,7 @@ impl<'a, 'e> PatternTranslator<'a, 'e> { fn pattern_identifiers_<'b, 'p: 'b>( &self, patterns: &mut Iterator>, - ) -> (Pattern, HashMap) { + ) -> (Pattern, FnvMap) { let mut identifiers: Vec> = Vec::new(); let mut record_fields: Vec<(TypedIdent, _)> = Vec::new(); let mut core_pattern = None; @@ -1479,7 +1479,7 @@ impl<'a, 'e> PatternTranslator<'a, 'e> { let mut replacements = HashMap::default(); fn add_duplicate_ident( - replacements: &mut HashMap, + replacements: &mut FnvMap, record_fields: &mut Vec<(TypedIdent, Option)>, field: &Symbol, pattern: Option<&SpannedPattern>,