propagate variable hits to parent branches in push_missing_vars (#2183)

This commit is contained in:
Mark
2023-11-30 12:25:28 -07:00
parent 4f4feba6fc
commit 347ee0211b
2 changed files with 23 additions and 11 deletions

View File

@@ -61,6 +61,7 @@ impl BranchCodeStack {
marker: &mut DebrayAllocator,
) -> SubsumedBranchHits {
let mut subsumed_hits = SubsumedBranchHits::with_hasher(FxBuildHasher::default());
let mut propagated_var_nums = IndexSet::with_hasher(FxBuildHasher::default());
for idx in (self.stack.len() - depth..self.stack.len()).rev() {
let branch = &mut marker.branch_stack[idx];
@@ -84,11 +85,19 @@ impl BranchCodeStack {
self.stack[idx][branch_idx].push_back(instr!("put_variable", r, 0));
}
if idx > self.stack.len() - depth {
propagated_var_nums.insert(var_num);
}
}
subsumed_hits.insert(var_num);
}
}
for var_num in propagated_var_nums.drain(..) {
marker.branch_stack[idx - 1].add_branch_occurrence(var_num);
}
}
subsumed_hits