From fdae0c5ff429d064cb8390e3629ecb61e79a635c Mon Sep 17 00:00:00 2001 From: Andrew Morris Date: Thu, 22 Jun 2023 19:49:54 +1000 Subject: [PATCH] Use take on iter_res --- valuescript_compiler/src/function_compiler.rs | 2 +- valuescript_vm/src/bytecode_stack_frame.rs | 6 ++++-- 2 files changed, 5 insertions(+), 3 deletions(-) diff --git a/valuescript_compiler/src/function_compiler.rs b/valuescript_compiler/src/function_compiler.rs index 46e7c7f..b79a7c5 100644 --- a/valuescript_compiler/src/function_compiler.rs +++ b/valuescript_compiler/src/function_compiler.rs @@ -1089,7 +1089,7 @@ impl FunctionCompiler { self.push(Instruction::Next(iter_reg, iter_res_reg.clone())); self.push(Instruction::UnpackIterRes( - iter_res_reg, + iter_res_reg.take(), value_reg, done_reg, )); diff --git a/valuescript_vm/src/bytecode_stack_frame.rs b/valuescript_vm/src/bytecode_stack_frame.rs index c81b7ae..36ad8fb 100644 --- a/valuescript_vm/src/bytecode_stack_frame.rs +++ b/valuescript_vm/src/bytecode_stack_frame.rs @@ -543,12 +543,14 @@ impl StackFrameTrait for BytecodeStackFrame { None => panic!("Can't unpack the ignore register"), }; + let iter_res = take(&mut self.registers[iter_res_i]); + if let Some(value_i) = self.decoder.decode_register_index() { - self.registers[value_i] = self.registers[iter_res_i].sub(&"value".to_val())?; + self.registers[value_i] = iter_res.sub(&"value".to_val())?; } if let Some(done_i) = self.decoder.decode_register_index() { - self.registers[done_i] = self.registers[iter_res_i].sub(&"done".to_val())?; + self.registers[done_i] = iter_res.sub(&"done".to_val())?; } }