Prefer moving Vals instead of passing by reference

This commit is contained in:
Andrew Morris
2022-05-04 10:52:04 +10:00
parent 44e8392248
commit 15133bd4f1
2 changed files with 14 additions and 14 deletions

View File

@@ -4,7 +4,7 @@ use super::vs_value::Val;
use super::vs_value::ValTrait;
use super::vs_value::VsType;
pub fn op_plus(left: &Val, right: &Val) -> Val {
pub fn op_plus(left: Val, right: Val) -> Val {
let left_prim = left.to_primitive();
let right_prim = right.to_primitive();
@@ -15,19 +15,19 @@ pub fn op_plus(left: &Val, right: &Val) -> Val {
return Val::Number(left_prim.to_number() + right_prim.to_number());
}
pub fn op_minus(left: &Val, right: &Val) -> Val {
pub fn op_minus(left: Val, right: Val) -> Val {
return Val::Number(left.to_number() - right.to_number());
}
pub fn op_mul(left: &Val, right: &Val) -> Val {
pub fn op_mul(left: Val, right: Val) -> Val {
return Val::Number(left.to_number() * right.to_number());
}
pub fn op_mod(left: &Val, right: &Val) -> Val {
pub fn op_mod(left: Val, right: Val) -> Val {
return Val::Number(left.to_number() % right.to_number());
}
pub fn op_less(left: &Val, right: &Val) -> Val {
pub fn op_less(left: Val, right: Val) -> Val {
if left.typeof_() != VsType::Number || right.typeof_() != VsType::Number {
std::panic!("Not implemented");
}
@@ -35,7 +35,7 @@ pub fn op_less(left: &Val, right: &Val) -> Val {
return Val::Bool(left.to_number() < right.to_number());
}
pub fn op_triple_ne(left: &Val, right: &Val) -> Val {
pub fn op_triple_ne(left: Val, right: Val) -> Val {
if left.typeof_() != VsType::Number || right.typeof_() != VsType::Number {
std::panic!("Not implemented");
}

View File

@@ -91,14 +91,14 @@ impl VirtualMachine {
OpInc => {
let register_index = frame.decoder.decode_register_index().unwrap();
let mut val = frame.registers[register_index].clone();
val = operations::op_plus(&val, &Val::Number(1_f64));
val = operations::op_plus(val, Val::Number(1_f64));
frame.registers[register_index] = val;
},
OpDec => {
let register_index = frame.decoder.decode_register_index().unwrap();
let mut val = frame.registers[register_index].clone();
val = operations::op_minus(&val, &Val::Number(1_f64));
val = operations::op_minus(val, Val::Number(1_f64));
frame.registers[register_index] = val;
},
@@ -109,7 +109,7 @@ impl VirtualMachine {
let register_index = frame.decoder.decode_register_index();
if register_index.is_some() {
frame.registers[register_index.unwrap()] = operations::op_plus(&left, &right);
frame.registers[register_index.unwrap()] = operations::op_plus(left, right);
}
},
@@ -120,7 +120,7 @@ impl VirtualMachine {
let register_index = frame.decoder.decode_register_index();
if register_index.is_some() {
frame.registers[register_index.unwrap()] = operations::op_minus(&left, &right);
frame.registers[register_index.unwrap()] = operations::op_minus(left, right);
}
},
@@ -131,7 +131,7 @@ impl VirtualMachine {
let register_index = frame.decoder.decode_register_index();
if register_index.is_some() {
frame.registers[register_index.unwrap()] = operations::op_mul(&left, &right);
frame.registers[register_index.unwrap()] = operations::op_mul(left, right);
}
},
@@ -144,7 +144,7 @@ impl VirtualMachine {
let register_index = frame.decoder.decode_register_index();
if register_index.is_some() {
frame.registers[register_index.unwrap()] = operations::op_mod(&left, &right);
frame.registers[register_index.unwrap()] = operations::op_mod(left, right);
}
},
@@ -163,7 +163,7 @@ impl VirtualMachine {
let register_index = frame.decoder.decode_register_index();
if register_index.is_some() {
frame.registers[register_index.unwrap()] = operations::op_triple_ne(&left, &right);
frame.registers[register_index.unwrap()] = operations::op_triple_ne(left, right);
}
}
@@ -180,7 +180,7 @@ impl VirtualMachine {
let register_index = frame.decoder.decode_register_index();
if register_index.is_some() {
frame.registers[register_index.unwrap()] = operations::op_less(&left, &right);
frame.registers[register_index.unwrap()] = operations::op_less(left, right);
}
}