Skip to content

Commit 8bd2103

Browse files
committed
Bug fixes
1 parent a295171 commit 8bd2103

File tree

1 file changed

+22
-15
lines changed

1 file changed

+22
-15
lines changed

executor/src/witgen/multiplicity_column_generator.rs

+22-15
Original file line numberDiff line numberDiff line change
@@ -78,7 +78,10 @@ impl<'a, T: FieldElement> MultiplicityColumnGenerator<'a, T> {
7878
.bus_receives
7979
.iter()
8080
.filter(|(_, bus_receive)| bus_receive.has_arbitrary_multiplicity())
81-
.map(|(bus_id, bus_receive)| {
81+
.filter_map(|(bus_id, bus_receive)| {
82+
if !bus_receive.has_arbitrary_multiplicity() || bus_receive.multiplicity.is_none() {
83+
return None;
84+
}
8285
log::trace!(" Building index for bus receive: {bus_receive}");
8386
let start = std::time::Instant::now();
8487

@@ -103,25 +106,34 @@ impl<'a, T: FieldElement> MultiplicityColumnGenerator<'a, T> {
103106
" Done building index, took {}s",
104107
start.elapsed().as_secs_f64()
105108
);
106-
(
109+
Some((
107110
*bus_id,
108111
ReceiveInfo {
109-
multiplicity_column: bus_receive.multiplicity.as_ref().map(|mult_expr| {
110-
match mult_expr {
111-
AlgebraicExpression::Reference(r) => r.poly_id,
112-
_ => panic!("Expected simple reference, got: {mult_expr}"),
112+
multiplicity_column: match bus_receive.multiplicity.as_ref().unwrap() {
113+
AlgebraicExpression::Reference(r) => r.poly_id,
114+
_ => {
115+
panic!(
116+
"Expected simple reference, got: {}",
117+
bus_receive.multiplicity.as_ref().unwrap()
118+
)
113119
}
114-
}),
120+
},
115121
index,
116122
size,
117123
},
118-
)
124+
))
119125
})
120126
.collect::<BTreeMap<_, _>>();
121127
for bus_send in identities.iter().filter_map(|i| match i {
122128
Identity::BusSend(bus_send) => Some(bus_send),
123129
_ => None,
124130
}) {
131+
let bus_receive = receive_infos.get(&bus_send.bus_id().unwrap());
132+
if bus_receive.is_none() {
133+
continue;
134+
}
135+
let bus_receive = bus_receive.unwrap();
136+
125137
log::trace!(" Incrementing multiplicities for bus send: {bus_send}");
126138
let start = std::time::Instant::now();
127139
let (_, lhs_tuples) = self.get_tuples(&terminal_values, &bus_send.selected_payload);
@@ -132,13 +144,8 @@ impl<'a, T: FieldElement> MultiplicityColumnGenerator<'a, T> {
132144
);
133145
let start = std::time::Instant::now();
134146

135-
let bus_receive = receive_infos
136-
.get(&bus_send.bus_id().unwrap())
137-
.expect("Bus send without corresponding receive");
138-
139-
let multiplicity_column_id = bus_receive.multiplicity_column.unwrap();
140147
let multiplicities = multiplicity_columns
141-
.entry(multiplicity_column_id)
148+
.entry(bus_receive.multiplicity_column)
142149
.or_insert_with(|| vec![0; bus_receive.size]);
143150
assert_eq!(multiplicities.len(), bus_receive.size);
144151

@@ -227,7 +234,7 @@ impl<'a, T: FieldElement> MultiplicityColumnGenerator<'a, T> {
227234
}
228235

229236
struct ReceiveInfo<T> {
230-
multiplicity_column: Option<PolyID>,
237+
multiplicity_column: PolyID,
231238
index: HashMap<Vec<T>, usize>,
232239
size: usize,
233240
}

0 commit comments

Comments
 (0)