From d9ddf4fc5a7a867ce53aa5062c2523aa54e0fad3 Mon Sep 17 00:00:00 2001 From: Jakob Stoklund Olesen Date: Wed, 19 Apr 2017 14:53:14 -0700 Subject: [PATCH] Simplify check_arg_types(). Iterator tricks. --- lib/cretonne/src/legalizer/boundary.rs | 18 +++--------------- 1 file changed, 3 insertions(+), 15 deletions(-) diff --git a/lib/cretonne/src/legalizer/boundary.rs b/lib/cretonne/src/legalizer/boundary.rs index cb2794a49d..537d6cb9de 100644 --- a/lib/cretonne/src/legalizer/boundary.rs +++ b/lib/cretonne/src/legalizer/boundary.rs @@ -290,21 +290,9 @@ fn convert_to_abi(dfg: &mut DataFlowGraph, /// Check if a sequence of arguments match a desired sequence of argument types. fn check_arg_types(dfg: &DataFlowGraph, args: &[Value], types: &[ArgumentType]) -> bool { - let mut n = 0; - for &arg in args { - match types.get(n) { - Some(&ArgumentType { value_type, .. }) => { - if dfg.value_type(arg) != value_type { - return false; - } - } - None => return false, - } - n += 1 - } - - // Also verify that the number of arguments matches. - n == types.len() + let arg_types = args.iter().map(|&v| dfg.value_type(v)); + let sig_types = types.iter().map(|&at| at.value_type); + arg_types.eq(sig_types) } /// Check if the arguments of the call `inst` match the signature.