diff --git a/src/protocol/eval/executor.rs b/src/protocol/eval/executor.rs index 51fd02d09163c89b2881c71691a6931795858990..3507bdbbb6d77b6868015cda70c68f49b98b634f 100644 --- a/src/protocol/eval/executor.rs +++ b/src/protocol/eval/executor.rs @@ -203,10 +203,10 @@ pub enum EvalContinuation { SyncBlockEnd, NewFork, BlockFires(PortId), - BlockGet(PortId), - Put(PortId, ValueGroup), + BlockGet(ExpressionId, PortId), + Put(ExpressionId, PortId, ValueGroup), SelectStart(u32, u32), // (num_cases, num_ports_total) - SelectRegisterPort(u32, u32, PortId), // (case_index, port_index_in_case, port_id) + SelectRegisterPort(ExpressionId, u32, u32, PortId), // (call_expr_id, case_index, port_index_in_case, port_id) SelectWait, // wait until select can continue // Returned only in non-sync mode ComponentTerminated, @@ -630,7 +630,7 @@ impl Prompt { // get run again after we've received a message. cur_frame.expr_values.push_front(value.clone()); cur_frame.expr_stack.push_back(ExprInstruction::EvalExpr(expr_id)); - return Ok(EvalContinuation::BlockGet(port_id)); + return Ok(EvalContinuation::BlockGet(expr_id, port_id)); } } }, @@ -657,7 +657,7 @@ impl Prompt { cur_frame.expr_values.push_front(port_value); cur_frame.expr_stack.push_back(ExprInstruction::EvalExpr(expr_id)); let value_group = ValueGroup::from_store(&self.store, &[deref_msg_value]); - return Ok(EvalContinuation::Put(port_id, value_group)); + return Ok(EvalContinuation::Put(expr_id, port_id, value_group)); } }, Method::Fires => { @@ -728,7 +728,7 @@ impl Prompt { // Convert the runtime-variant of a string // into an actual string. let value = cur_frame.expr_values.pop_front().unwrap(); - let mut is_literal_string = value.get_heap_pos().is_some(); + let is_literal_string = value.get_heap_pos().is_some(); let value = self.store.maybe_read_ref(&value); let value_heap_pos = value.as_string(); let elements = &self.store.heap_regions[value_heap_pos as usize].values; @@ -757,7 +757,7 @@ impl Prompt { let port_index = self.store.maybe_read_ref(&cur_frame.expr_values.pop_front().unwrap()).as_uint32(); let port_value = self.store.maybe_read_ref(&cur_frame.expr_values.pop_front().unwrap()).as_port_id(); - return Ok(EvalContinuation::SelectRegisterPort(case_index, port_index, port_value)); + return Ok(EvalContinuation::SelectRegisterPort(expr_id, case_index, port_index, port_value)); }, Method::SelectWait => { match ctx.performed_select_wait() {