@@ -285,9 +285,7 @@ impl<F: AcirField + DebugToString, Registers: RegisterAllocator> BrilligContext<
285285 ) -> Allocated < HeapVector , Registers > {
286286 let heap_vector = self . allocate_heap_vector ( ) ;
287287
288- // Read the size using the dedicated helper function
289- let size_variable = self . codegen_read_vector_size ( vector) ;
290- self . mov_instruction ( heap_vector. size , size_variable. address ) ;
288+ self . codegen_read_vector_size_into ( vector, heap_vector. size ) ;
291289
292290 // Get the pointer to the items using the dedicated helper function
293291 self . codegen_vector_items_pointer ( vector, heap_vector. pointer ) ;
@@ -334,19 +332,28 @@ impl<F: AcirField + DebugToString, Registers: RegisterAllocator> BrilligContext<
334332 self . codegen_read_rc ( vector. pointer )
335333 }
336334
337- /// Returns a variable holding the size of a given vector.
338- pub ( crate ) fn codegen_read_vector_size (
335+ /// Reads the size of a given vector into `dest` .
336+ pub ( crate ) fn codegen_read_vector_size_into (
339337 & mut self ,
340338 vector : BrilligVector ,
341- ) -> Allocated < SingleAddrVariable , Registers > {
342- let result = self . allocate_single_addr_usize ( ) ;
339+ dest : MemoryAddress ,
340+ ) {
343341 self . codegen_usize_op (
344342 vector. pointer ,
345- result . address ,
343+ dest ,
346344 BrilligBinaryOp :: Add ,
347345 assert_usize ( offsets:: VECTOR_SIZE ) ,
348346 ) ;
349- self . load_instruction ( result. address , result. address ) ;
347+ self . load_instruction ( dest, dest) ;
348+ }
349+
350+ /// Returns a variable holding the size of a given vector.
351+ pub ( crate ) fn codegen_read_vector_size (
352+ & mut self ,
353+ vector : BrilligVector ,
354+ ) -> Allocated < SingleAddrVariable , Registers > {
355+ let result = self . allocate_single_addr_usize ( ) ;
356+ self . codegen_read_vector_size_into ( vector, result. address ) ;
350357 result
351358 }
352359
0 commit comments