fn analysis_entry_store(
        &self,
        ssa: &SSAStorage,
        entry_offset: HashMap<LValueRef, i64>,
    ) -> HashMap<String, i64> {
        let mut entry_store: HashMap<String, i64> = HashMap::new();

        let reg_state = registers_in_err!(ssa, entry_node_err!(ssa));
        let nodes = ssa.operands_of(reg_state);
        for node in &nodes {
            if ssa.comment(*node).is_none() {
                continue;
            }
            if ssa.registers(*node).is_empty() {
                continue;
            }
            let reg_names = ssa.registers(*node);
            let users = ssa.uses_of(*node);
            for reg_name in reg_names {
                for user in &users {
                    if Some(MOpcode::OpStore) == ssa.opcode(*user) {
                        let args = ssa.operands_of(*user);
                        if entry_offset.contains_key(&args[1]) {
                            let num = entry_offset.get(&args[1]).unwrap_or_else(|| {
                                radeco_err!("Error entry_offset.get({:?})", args[1]);
                                &0
                            });
                            entry_store.insert(reg_name.clone(), *num);
                        }
                    }
                }
            }
        }

        radeco_trace!("CallFixer|Entry_store is {:?}", entry_store);
        entry_store
    }
// Analyze entry blocks' store for preserved registers
Analyze entry blocks' store for preserved registers
Analyze entry blocks ' store for preserved registers
fn analysis_entry_store(
        &self,
        ssa: &SSAStorage,
        entry_offset: HashMap<LValueRef, i64>,
    ) -> HashMap<String, i64> {
        let mut entry_store: HashMap<String, i64> = HashMap::new();
        let reg_state = registers_in_err!(ssa, entry_node_err!(ssa));
        let nodes = ssa.operands_of(reg_state);
        for node in &nodes {
            if ssa.comment(*node).is_none() {
                continue;
            }
            if ssa.registers(*node).is_empty() {
                continue;
            }
            let reg_names = ssa.registers(*node);
            let users = ssa.uses_of(*node);
            for reg_name in reg_names {
                for user in &users {
                    if Some(MOpcode::OpStore) == ssa.opcode(*user) {
                        let args = ssa.operands_of(*user);
                        if entry_offset.contains_key(&args[1]) {
                            let num = entry_offset.get(&args[1]).unwrap_or_else(|| {
                                radeco_err!("Error entry_offset.get({:?})", args[1]);
                                &0
                            });
                            entry_store.insert(reg_name.clone(), *num);
                        }
                    }
                }
            }
        }
        radeco_trace!("CallFixer|Entry_store is {:?}", entry_store);
        entry_store
    }
fn analysis_entry_store ( & self , ssa : & SSAStorage , entry_offset : HashMap < LValueRef , i64 > , ) -> HashMap < String , i64 > { let mut entry_store : HashMap < String , i64 > = HashMap :: new ( ) ; let reg_state = registers_in_err ! ( ssa entry_node_err ( ssa ) ) ; let nodes = ssa . operands_of ( reg_state ) ; for node in & nodes { if ssa . comment ( * node ) . is_none ( ) { continue ; } if ssa . registers ( * node ) . is_empty ( ) { continue ; } let reg_names = ssa . registers ( * node ) ; let users = ssa . uses_of ( * node ) ; for reg_name in reg_names { for user in & users { if Some ( MOpcode :: OpStore ) == ssa . opcode ( * user ) { let args = ssa . operands_of ( * user ) ; if entry_offset . contains_key ( & args [ 1 ] ) { let num = entry_offset . get ( & args [ 1 ] ) . unwrap_or_else ( | | { radeco_err ! ( " " args [ 1 ] ) ; & 0 } ) ; entry_store . insert ( reg_name . clone ( ) , * num ) ; } } } } } radeco_trace ! ( " " entry_store ) ; entry_store }
Analyze entry blocks' store for preserved registers
Analyze entry blocks ' store for preserved registers
&self
ssa
&SSAStorage
entry_offset
HashMap<LValueRef, i64>
&self
ssa
&SSAStorage
entry_offset
HashMap<LValueRef, i64>