Bug fix send and recive in simulator

This commit is contained in:
ilgeco
2026-04-08 20:37:25 +02:00
parent ca56e3d4f1
commit e77bd2cd23

View File

@@ -107,12 +107,17 @@ pub fn handle_send_recv(
let receiver: usize = imm_core.try_into().expect("imm_core can not be negative"); let receiver: usize = imm_core.try_into().expect("imm_core can not be negative");
assert_ne!(receiver, 0, "Host can not use receive"); assert_ne!(receiver, 0, "Host can not use receive");
send_recv.sending[sender] = Some(SendRecvInfo::new(sender, receiver, address, imm_len)); send_recv.sending[sender] = Some(SendRecvInfo::new(sender, receiver, address, imm_len));
transfer_memory( let transfered = transfer_memory(
cpu, cpu,
core_instructions, core_instructions,
send_recv.sending[sender], send_recv.sending[sender],
send_recv.receiving[receiver], send_recv.receiving[receiver],
) );
if transfered {
send_recv.sending[sender] = None;
send_recv.receiving[receiver] = None;
}
return transfered;
} }
InstructionStatus::Reciving(instruction_data) => { InstructionStatus::Reciving(instruction_data) => {
let (core_idx, imm_core) = instruction_data.get_core_immcore(); let (core_idx, imm_core) = instruction_data.get_core_immcore();
@@ -131,12 +136,17 @@ pub fn handle_send_recv(
assert_ne!(sender, 0, "Host can not use send"); assert_ne!(sender, 0, "Host can not use send");
send_recv.receiving[receiver] = send_recv.receiving[receiver] =
Some(SendRecvInfo::new(receiver, sender, address, imm_len)); Some(SendRecvInfo::new(receiver, sender, address, imm_len));
transfer_memory( let transfered = transfer_memory(
cpu, cpu,
core_instructions, core_instructions,
send_recv.sending[sender], send_recv.sending[sender],
send_recv.receiving[receiver], send_recv.receiving[receiver],
) );
if transfered {
send_recv.sending[sender] = None;
send_recv.receiving[receiver] = None;
}
return transfered;
} }
_ => false, _ => false,
} }