mirror of
https://github.com/roc-lang/roc.git
synced 2025-09-30 23:31:12 +00:00
parent
65ca5d33b3
commit
2b1491189a
1 changed files with 8 additions and 10 deletions
|
@ -184,7 +184,7 @@ struct Params {
|
|||
preorders: Vec<Preorder>,
|
||||
c: usize,
|
||||
p: BitVec,
|
||||
s: BitVec,
|
||||
s: Vec<u32>,
|
||||
scc: Sccs,
|
||||
scca: BitVec,
|
||||
}
|
||||
|
@ -200,7 +200,7 @@ impl Params {
|
|||
Self {
|
||||
preorders,
|
||||
c: 0,
|
||||
s: BitVec::repeat(false, length),
|
||||
s: Vec::new(),
|
||||
p: BitVec::repeat(false, length),
|
||||
scc: Sccs {
|
||||
matrix: ReferenceMatrix::new(length),
|
||||
|
@ -216,7 +216,7 @@ fn recurse_onto(length: usize, bitvec: &BitVec, v: usize, params: &mut Params) {
|
|||
|
||||
params.c += 1;
|
||||
|
||||
params.s.set(v, true);
|
||||
params.s.push(v as u32);
|
||||
params.p.set(v, true);
|
||||
|
||||
for w in bitvec[v * length..][..length].iter_ones() {
|
||||
|
@ -246,16 +246,14 @@ fn recurse_onto(length: usize, bitvec: &BitVec, v: usize, params: &mut Params) {
|
|||
if params.p.last_one() == Some(v) {
|
||||
params.p.set(v, false);
|
||||
|
||||
while let Some(node) = params.s.last_one() {
|
||||
params.s.set(node, false);
|
||||
|
||||
while let Some(node) = params.s.pop() {
|
||||
params
|
||||
.scc
|
||||
.matrix
|
||||
.set_row_col(params.scc.components, node, true);
|
||||
params.scca.set(node, true);
|
||||
params.preorders[node] = Preorder::Removed;
|
||||
if node == v {
|
||||
.set_row_col(params.scc.components, node as usize, true);
|
||||
params.scca.set(node as usize, true);
|
||||
params.preorders[node as usize] = Preorder::Removed;
|
||||
if node as usize == v {
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue