@@ -2,9 +2,9 @@ use p3_field::{BasedVectorSpace, dot_product};
22
33use 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 ( ) ) ;
0 commit comments