diff --git a/src/backend/mir_interpreter/handlers/boxes_array.rs b/src/backend/mir_interpreter/handlers/boxes_array.rs index 3226d242..a4c3571d 100644 --- a/src/backend/mir_interpreter/handlers/boxes_array.rs +++ b/src/backend/mir_interpreter/handlers/boxes_array.rs @@ -26,7 +26,7 @@ pub(super) fn try_handle_array_box( } "push" => { this.validate_args_exact("push", args, 1)?; - let val = this.reg_load(args[0])?.to_nyash_box(); + let val = this.load_as_box(args[0])?; let _ = ab.push(val); this.write_void(dst); return Ok(true); @@ -44,15 +44,15 @@ pub(super) fn try_handle_array_box( } "get" => { this.validate_args_exact("get", args, 1)?; - let idx = this.reg_load(args[0])?.to_nyash_box(); + let idx = this.load_as_box(args[0])?; let ret = ab.get(idx); this.write_result(dst, VMValue::from_nyash_box(ret)); return Ok(true); } "set" => { this.validate_args_exact("set", args, 2)?; - let idx = this.reg_load(args[0])?.to_nyash_box(); - let val = this.reg_load(args[1])?.to_nyash_box(); + let idx = this.load_as_box(args[0])?; + let val = this.load_as_box(args[1])?; let _ = ab.set(idx, val); this.write_void(dst); return Ok(true); diff --git a/src/backend/mir_interpreter/handlers/boxes_map.rs b/src/backend/mir_interpreter/handlers/boxes_map.rs index c96f1893..c93f95dc 100644 --- a/src/backend/mir_interpreter/handlers/boxes_map.rs +++ b/src/backend/mir_interpreter/handlers/boxes_map.rs @@ -33,7 +33,7 @@ pub(super) fn try_handle_map_box( this.write_result(dst, VMValue::String("[map/bad-key] field name must be string".to_string())); return Ok(true); } - let k = k_vm.to_nyash_box(); + let k = this.load_as_box(args[0])?; let ret = mb.get(k); this.write_result(dst, VMValue::from_nyash_box(ret)); return Ok(true); @@ -45,8 +45,8 @@ pub(super) fn try_handle_map_box( this.write_result(dst, VMValue::String("[map/bad-key] field name must be string".to_string())); return Ok(true); } - let k = k_vm.to_nyash_box(); - let v = this.reg_load(args[1])?.to_nyash_box(); + let k = this.load_as_box(args[0])?; + let v = this.load_as_box(args[1])?; let ret = mb.set(k, v); this.write_result(dst, VMValue::from_nyash_box(ret)); return Ok(true); @@ -58,8 +58,8 @@ pub(super) fn try_handle_map_box( this.write_result(dst, VMValue::String("[map/bad-key] key must be string".to_string())); return Ok(true); } - let k = k_vm.to_nyash_box(); - let v = this.reg_load(args[1])?.to_nyash_box(); + let k = this.load_as_box(args[0])?; + let v = this.load_as_box(args[1])?; let ret = mb.set(k, v); this.write_result(dst, VMValue::from_nyash_box(ret)); return Ok(true); @@ -71,14 +71,14 @@ pub(super) fn try_handle_map_box( this.write_result(dst, VMValue::String("[map/bad-key] key must be string".to_string())); return Ok(true); } - let k = k_vm.to_nyash_box(); + let k = this.load_as_box(args[0])?; let ret = mb.get(k); this.write_result(dst, VMValue::from_nyash_box(ret)); return Ok(true); } "has" => { this.validate_args_exact("MapBox.has", args, 1)?; - let k = this.reg_load(args[0])?.to_nyash_box(); + let k = this.load_as_box(args[0])?; let ret = mb.has(k); this.write_result(dst, VMValue::from_nyash_box(ret)); return Ok(true); @@ -90,7 +90,7 @@ pub(super) fn try_handle_map_box( this.write_result(dst, VMValue::String("[map/bad-key] key must be string".to_string())); return Ok(true); } - let k = k_vm.to_nyash_box(); + let k = this.load_as_box(args[0])?; let ret = mb.delete(k); this.write_result(dst, VMValue::from_nyash_box(ret)); return Ok(true);