use core::ops::ControlFlow;
use miden_core::{
Felt, Word,
mast::{CallNode, MastNodeExt},
};
use super::{CoreTraceFragmentGenerator, trace_builder::OperationTraceConfig};
impl CoreTraceFragmentGenerator {
pub fn add_call_start_trace_row(
&mut self,
call_node: &CallNode,
program: &miden_core::mast::MastForest,
parent_addr: Felt,
) -> ControlFlow<()> {
let callee_hash: Word = program
.get_node_by_id(call_node.callee())
.expect("callee should exist")
.digest();
let zero_hash = Word::default();
let config = OperationTraceConfig {
opcode: if call_node.is_syscall() {
miden_core::Operation::SysCall.op_code()
} else {
miden_core::Operation::Call.op_code()
},
hasher_state: (callee_hash, zero_hash),
addr: parent_addr,
};
self.add_control_flow_trace_row(config)
}
}