mirror of
https://github.com/roc-lang/roc.git
synced 2025-10-01 15:51:12 +00:00
move reference matrix
This commit is contained in:
parent
dd51479764
commit
c5b7ff98fd
6 changed files with 8 additions and 6 deletions
1
Cargo.lock
generated
1
Cargo.lock
generated
|
@ -3573,6 +3573,7 @@ dependencies = [
|
|||
name = "roc_collections"
|
||||
version = "0.1.0"
|
||||
dependencies = [
|
||||
"bitvec 1.0.0",
|
||||
"bumpalo",
|
||||
"hashbrown 0.11.2",
|
||||
"im",
|
||||
|
|
|
@ -9,9 +9,9 @@ use crate::expr::Expr::{self, *};
|
|||
use crate::expr::{canonicalize_expr, Output, Recursive};
|
||||
use crate::pattern::{canonicalize_def_header_pattern, BindingsFromPattern, Pattern};
|
||||
use crate::procedure::References;
|
||||
use crate::reference_matrix::ReferenceMatrix;
|
||||
use crate::scope::create_alias;
|
||||
use crate::scope::Scope;
|
||||
use roc_collections::ReferenceMatrix;
|
||||
use roc_collections::VecMap;
|
||||
use roc_collections::{ImSet, MutMap, SendMap};
|
||||
use roc_module::ident::Ident;
|
||||
|
|
|
@ -16,7 +16,6 @@ pub mod num;
|
|||
pub mod operator;
|
||||
pub mod pattern;
|
||||
pub mod procedure;
|
||||
mod reference_matrix;
|
||||
pub mod scope;
|
||||
pub mod string;
|
||||
pub mod traverse;
|
||||
|
|
|
@ -11,3 +11,4 @@ im-rc = "15.0.0"
|
|||
wyhash = "0.5.0"
|
||||
bumpalo = { version = "3.8.0", features = ["collections"] }
|
||||
hashbrown = { version = "0.11.2", features = [ "bumpalo" ] }
|
||||
bitvec = "1"
|
||||
|
|
|
@ -3,12 +3,14 @@
|
|||
#![allow(clippy::large_enum_variant)]
|
||||
|
||||
pub mod all;
|
||||
mod reference_matrix;
|
||||
mod small_string_interner;
|
||||
pub mod soa;
|
||||
mod vec_map;
|
||||
mod vec_set;
|
||||
|
||||
pub use all::{default_hasher, BumpMap, ImEntry, ImMap, ImSet, MutMap, MutSet, SendMap};
|
||||
pub use reference_matrix::{ReferenceMatrix, Sccs};
|
||||
pub use small_string_interner::SmallStringInterner;
|
||||
pub use vec_map::VecMap;
|
||||
pub use vec_set::VecSet;
|
||||
|
|
|
@ -1,4 +1,3 @@
|
|||
// see if we get better performance with different integer types
|
||||
type Order = bitvec::order::Lsb0;
|
||||
type Element = usize;
|
||||
type BitVec = bitvec::vec::BitVec<Element, Order>;
|
||||
|
@ -9,7 +8,7 @@ type BitSlice = bitvec::prelude::BitSlice<Element, Order>;
|
|||
/// We use this for sorting definitions so every definition is defined before it is used.
|
||||
/// This functionality is also used to spot and report invalid recursion.
|
||||
#[derive(Debug)]
|
||||
pub(crate) struct ReferenceMatrix {
|
||||
pub struct ReferenceMatrix {
|
||||
bitvec: BitVec,
|
||||
length: usize,
|
||||
}
|
||||
|
@ -156,7 +155,7 @@ impl ReferenceMatrix {
|
|||
}
|
||||
|
||||
#[allow(dead_code)]
|
||||
pub(crate) enum TopologicalSort {
|
||||
pub enum TopologicalSort {
|
||||
/// There were no cycles, all nodes have been partitioned into groups
|
||||
Groups { groups: Vec<Vec<u32>> },
|
||||
/// Cycles were found. All nodes that are not part of a cycle have been partitioned
|
||||
|
@ -259,7 +258,7 @@ fn recurse_onto(length: usize, bitvec: &BitVec, v: usize, params: &mut Params) {
|
|||
}
|
||||
|
||||
#[derive(Debug)]
|
||||
pub(crate) struct Sccs {
|
||||
pub struct Sccs {
|
||||
components: usize,
|
||||
matrix: ReferenceMatrix,
|
||||
}
|
Loading…
Add table
Add a link
Reference in a new issue