diff --git a/evm/src/all_stark.rs b/evm/src/all_stark.rs index 966b362c..b69104eb 100644 --- a/evm/src/all_stark.rs +++ b/evm/src/all_stark.rs @@ -198,7 +198,9 @@ mod tests { rng: &mut R, ) -> (Vec>, usize) { let memory_ops = generate_random_memory_ops(num_memory_ops, rng); - memory_stark.generate_trace(memory_ops) + let trace = memory_stark.generate_trace(memory_ops); + let num_ops = trace[0].values.len(); + (trace, num_ops) } fn make_cpu_trace( diff --git a/evm/src/memory/memory_stark.rs b/evm/src/memory/memory_stark.rs index 6a1fc945..ed55b02a 100644 --- a/evm/src/memory/memory_stark.rs +++ b/evm/src/memory/memory_stark.rs @@ -308,7 +308,7 @@ impl, const D: usize> MemoryStark { &segment_first_change, &virtual_first_change, ); - let to_pad_to = max_diff.next_power_of_two().max(num_trace_rows); + let to_pad_to = (max_diff + 1).next_power_of_two().max(num_trace_rows); let to_pad = to_pad_to - num_trace_rows; trace_cols[SORTED_TIMESTAMP] = sorted_timestamp; @@ -343,7 +343,7 @@ impl, const D: usize> MemoryStark { pub fn generate_trace( &self, memory_ops: Vec>, - ) -> (Vec>, usize) { + ) -> Vec> { let mut timing = TimingTree::new("generate trace", log::Level::Debug); // Generate the witness. @@ -352,7 +352,6 @@ impl, const D: usize> MemoryStark { "generate trace rows", self.generate_trace_rows(memory_ops) ); - let num_ops = trace_rows.len(); let trace_polys = timed!( &mut timing, @@ -361,7 +360,7 @@ impl, const D: usize> MemoryStark { ); timing.print(); - (trace_polys, num_ops) + trace_polys } } @@ -604,8 +603,7 @@ impl, const D: usize> Stark for MemoryStark = unsorted_cols - .iter() - .cloned() + .into_iter() .zip(sorted_cols.iter().cloned()) .collect();