INNER CODE UNIT · Rust
start_block
GuildOfWeavers/distaff · src/processor/decoder/mod.rs:160
pub fn start_block(&mut self) {
assert!(self.step % BASE_CYCLE_LENGTH == BASE_CYCLE_LENGTH - 1,
"cannot start context block at step {}: operation alignment is not valid", self.step);
self.advance_step(false);
self.save_context();
self.copy_loop_stack();
self.set_op_bits(FlowOps::Begin, UserOps::Noop);
self.set_sponge([0, 0, 0, 0]);
}
/// Terminates a program block (Group, Switch, or Loop).
pub fn end_block(&mut self, sibling_hash: u128, true_branch: bool) {
assert!(self.step % BASE_CYCLE_LENGTH == 0,
"cannot exit context block at step {}: operation alignment is not valid", self.step);
self.advance_step(false);
let context_hash = self.pop_context();