Skip to content

Commit 62b5359

Browse files
committed
chore: simplify some functions using extension mem getters
1 parent 72df358 commit 62b5359

File tree

2 files changed

+13
-28
lines changed

2 files changed

+13
-28
lines changed

crates/leanVm/src/bytecode/instruction/dot_product.rs

Lines changed: 8 additions & 18 deletions
Original file line numberDiff line numberDiff line change
@@ -2,9 +2,9 @@ use p3_field::{BasedVectorSpace, dot_product};
22

33
use crate::{
44
bytecode::operand::{MemOrConstant, MemOrFp},
5-
constant::{DIMENSION, EF, F},
5+
constant::{EF, F},
66
context::run_context::RunContext,
7-
errors::{memory::MemoryError, vm::VirtualMachineError},
7+
errors::vm::VirtualMachineError,
88
memory::{address::MemoryAddress, manager::MemoryManager},
99
};
1010

@@ -46,24 +46,14 @@ impl DotProductInstruction {
4646
.try_into()?;
4747

4848
// Read the first vector slice from memory.
49-
let slice_0: Vec<EF> = (0..self.size)
50-
.map(|i| {
51-
let addr = (ptr_arg_0 + i)?;
52-
let vector_coeffs = memory_manager.memory.get_array_as::<F, DIMENSION>(addr)?;
53-
EF::from_basis_coefficients_slice(&vector_coeffs)
54-
.ok_or(MemoryError::InvalidExtensionFieldConversion)
55-
})
56-
.collect::<Result<_, _>>()?;
49+
let slice_0 = memory_manager
50+
.memory
51+
.get_vectorized_slice_extension(ptr_arg_0, self.size)?;
5752

5853
// Read the second vector slice from memory.
59-
let slice_1: Vec<EF> = (0..self.size)
60-
.map(|i| {
61-
let addr = (ptr_arg_1 + i)?;
62-
let vector_coeffs = memory_manager.memory.get_array_as::<F, DIMENSION>(addr)?;
63-
EF::from_basis_coefficients_slice(&vector_coeffs)
64-
.ok_or(MemoryError::InvalidExtensionFieldConversion)
65-
})
66-
.collect::<Result<_, _>>()?;
54+
let slice_1 = memory_manager
55+
.memory
56+
.get_vectorized_slice_extension(ptr_arg_1, self.size)?;
6757

6858
// Compute the dot product of the two slices by converting them into iterators.
6959
let dot_product_res = dot_product::<EF, _, _>(slice_0.into_iter(), slice_1.into_iter());

crates/leanVm/src/bytecode/instruction/multilinear_eval.rs

Lines changed: 5 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -3,9 +3,9 @@ use whir_p3::poly::{coeffs::CoefficientList, multilinear::MultilinearPoint};
33

44
use crate::{
55
bytecode::operand::{MemOrConstant, MemOrFp},
6-
constant::{DIMENSION, EF, F},
6+
constant::F,
77
context::run_context::RunContext,
8-
errors::{memory::MemoryError, vm::VirtualMachineError},
8+
errors::vm::VirtualMachineError,
99
memory::{address::MemoryAddress, manager::MemoryManager},
1010
witness::multilinear_eval::WitnessMultilinearEval,
1111
};
@@ -60,14 +60,9 @@ impl MultilinearEvalInstruction {
6060
.collect::<Result<_, _>>()?;
6161

6262
// Read the evaluation point from memory.
63-
let point: Vec<EF> = (0..self.n_vars)
64-
.map(|i| {
65-
let addr = (ptr_point + i)?;
66-
let vector_coeffs = memory_manager.memory.get_array_as::<F, DIMENSION>(addr)?;
67-
EF::from_basis_coefficients_slice(&vector_coeffs)
68-
.ok_or(MemoryError::InvalidExtensionFieldConversion)
69-
})
70-
.collect::<Result<_, _>>()?;
63+
let point = memory_manager
64+
.memory
65+
.get_vectorized_slice_extension(ptr_point, self.n_vars)?;
7166

7267
// Evaluate the multilinear polynomial.
7368
let eval = CoefficientList::new(slice_coeffs).evaluate(&MultilinearPoint(point));

0 commit comments

Comments
 (0)