def try_move_signature(sig, target_pid): """ """ paps = get_signature_info(sig) rejected = filter(lambda p: p[1] <= -2, paps) assigned = filter(lambda p:-2 < p[1] and p[1] < 2, paps) claimed = filter(lambda p: 2 <= p[1] and p[0] == target_pid, paps) if claimed or not assigned or assigned[0] == target_pid: return assert len(assigned) == 1 if rejected: move_signature(sig, free_pids.next()) else: conflicts = find_conflicts(sig, target_pid) if not conflicts: move_signature(sig, target_pid) else: assert len(conflicts) == 1 if conflicts[0][3] == 2: move_signature(sig, free_pids.next()) else: move_signature(conflicts[0][:3], free_pids.next()) move_signature(sig, target_pid)
def try_move_signature(sig, target_pid): """ """ paps = get_signature_info(sig) rejected = filter(lambda p: p[1] <= -2, paps) assigned = filter(lambda p: -2 < p[1] and p[1] < 2, paps) claimed = filter(lambda p: 2 <= p[1] and p[0] == target_pid, paps) if claimed or not assigned or assigned[0] == target_pid: return assert len(assigned) == 1 if rejected: move_signature(sig, free_pids.next()) else: conflicts = find_conflicts(sig, target_pid) if not conflicts: move_signature(sig, target_pid) else: assert len(conflicts) == 1 if conflicts[0][3] == 2: move_signature(sig, free_pids.next()) else: move_signature(conflicts[0][:3], free_pids.next()) move_signature(sig, target_pid)
def try_move_signature(sig, target_pid): """ """ paps = current_mapping[sig] rejected = filter(lambda p: p[1] <= -2, paps) assigned = filter(lambda p:-2 < p[1] and p[1] < 2, paps) claimed = filter(lambda p: 2 <= p[1] and p[0] == target_pid, paps) if claimed or not assigned or assigned[0] == target_pid: return assert len(assigned) == 1 if rejected: newpid = free_pids.next() move_sig_and_update_mapping(sig, assigned[0], (newpid, assigned[0][1])) else: conflicts = find_conflicts(sig, target_pid) if not conflicts: move_sig_and_update_mapping(sig, assigned[0], (target_pid, assigned[0][1])) else: assert len(conflicts) == 1 if conflicts[0][3] == 2: newpid = free_pids.next() move_sig_and_update_mapping(sig, assigned[0], (newpid, assigned[0][1])) else: newpid = free_pids.next() csig = tuple(conflicts[0][:3]) move_sig_and_update_mapping(csig, (target_pid, conflicts[0][3]), (newpid, conflicts[0][3])) move_sig_and_update_mapping(sig, assigned[0], (target_pid, assigned[0][1]))
def try_move_signature(sig, target_pid): """ """ paps = current_mapping[sig] rejected = filter(lambda p: p[1] <= -2, paps) assigned = filter(lambda p: -2 < p[1] and p[1] < 2, paps) claimed = filter(lambda p: 2 <= p[1] and p[0] == target_pid, paps) if claimed or not assigned or assigned[0] == target_pid: return assert len(assigned) == 1 if rejected: newpid = free_pids.next() move_sig_and_update_mapping(sig, assigned[0], (newpid, assigned[0][1])) else: conflicts = find_conflicts(sig, target_pid) if not conflicts: move_sig_and_update_mapping(sig, assigned[0], (target_pid, assigned[0][1])) else: assert len(conflicts) == 1 if conflicts[0][3] == 2: newpid = free_pids.next() move_sig_and_update_mapping(sig, assigned[0], (newpid, assigned[0][1])) else: newpid = free_pids.next() csig = tuple(conflicts[0][:3]) move_sig_and_update_mapping(csig, (target_pid, conflicts[0][3]), (newpid, conflicts[0][3])) move_sig_and_update_mapping(sig, assigned[0], (target_pid, assigned[0][1]))