add scc_block to MachineState to avoid SCC cleanup terms being deallocated too early (#1427)

This commit is contained in:
Mark
2023-07-06 11:20:49 -06:00
parent 9ff1b660f1
commit 483e4568a2
8 changed files with 90 additions and 31 deletions

View File

@@ -4114,6 +4114,14 @@ impl Machine {
self.get_current_block();
step_or_fail!(self, self.machine_st.p = self.machine_st.cp);
}
&Instruction::CallGetCurrentSCCBlock => {
self.get_current_scc_block();
step_or_fail!(self, self.machine_st.p += 1);
}
&Instruction::ExecuteGetCurrentSCCBlock => {
self.get_current_scc_block();
step_or_fail!(self, self.machine_st.p = self.machine_st.cp);
}
&Instruction::CallGetCutPoint => {
self.get_cut_point();
step_or_fail!(self, self.machine_st.p += 1);
@@ -4250,6 +4258,14 @@ impl Machine {
self.reset_block();
step_or_fail!(self, self.machine_st.p = self.machine_st.cp);
}
&Instruction::CallResetSCCBlock => {
self.reset_scc_block();
step_or_fail!(self, self.machine_st.p += 1);
}
&Instruction::ExecuteResetSCCBlock => {
self.reset_scc_block();
step_or_fail!(self, self.machine_st.p = self.machine_st.cp);
}
&Instruction::CallReturnFromVerifyAttr |
&Instruction::ExecuteReturnFromVerifyAttr => {
self.return_from_verify_attr();