From ddb1fc9205586ccd4f71bb7de583769f9fd3fa77 Mon Sep 17 00:00:00 2001 From: Ralf Jung Date: Sat, 2 Nov 2019 11:50:21 +0100 Subject: [PATCH] store scalars where appropriate --- src/eval.rs | 6 +++--- src/machine.rs | 6 +++--- src/shims/foreign_items.rs | 6 +++--- 3 files changed, 9 insertions(+), 9 deletions(-) diff --git a/src/eval.rs b/src/eval.rs index 2f998408b8cc..b87d735ce525 100644 --- a/src/eval.rs +++ b/src/eval.rs @@ -105,7 +105,7 @@ pub fn create_ecx<'mir, 'tcx: 'mir>( { let argc_place = ecx.allocate(dest.layout, MiriMemoryKind::Env.into()); ecx.write_scalar(argc, argc_place.into())?; - ecx.machine.argc = Some(argc_place.ptr.to_ptr()?); + ecx.machine.argc = Some(argc_place.ptr); } // Third argument (`argv`): created from `config.args`. @@ -149,14 +149,14 @@ pub fn create_ecx<'mir, 'tcx: 'mir>( { let argv_place = ecx.allocate(dest.layout, MiriMemoryKind::Env.into()); ecx.write_scalar(argv, argv_place.into())?; - ecx.machine.argv = Some(argv_place.ptr.to_ptr()?); + ecx.machine.argv = Some(argv_place.ptr); } // Store command line as UTF-16 for Windows `GetCommandLineW`. { let cmd_utf16: Vec = cmd.encode_utf16().collect(); let cmd_type = tcx.mk_array(tcx.types.u16, cmd_utf16.len() as u64); let cmd_place = ecx.allocate(ecx.layout_of(cmd_type)?, MiriMemoryKind::Env.into()); - ecx.machine.cmd_line = Some(cmd_place.ptr.to_ptr()?); + ecx.machine.cmd_line = Some(cmd_place.ptr); // Store the UTF-16 string. We just allocated so we know the bounds are fine. let char_size = Size::from_bytes(2); for (idx, &c) in cmd_utf16.iter().enumerate() { diff --git a/src/machine.rs b/src/machine.rs index c07fca68199c..c76cc2e568f4 100644 --- a/src/machine.rs +++ b/src/machine.rs @@ -86,9 +86,9 @@ pub struct Evaluator<'tcx> { /// Program arguments (`Option` because we can only initialize them after creating the ecx). /// These are *pointers* to argc/argv because macOS. /// We also need the full command line as one string because of Windows. - pub(crate) argc: Option>, - pub(crate) argv: Option>, - pub(crate) cmd_line: Option>, + pub(crate) argc: Option>, + pub(crate) argv: Option>, + pub(crate) cmd_line: Option>, /// Last OS error location in memory. It is a 32-bit integer. pub(crate) last_error: Option>, diff --git a/src/shims/foreign_items.rs b/src/shims/foreign_items.rs index dea01c63a05b..74ce477b8e35 100644 --- a/src/shims/foreign_items.rs +++ b/src/shims/foreign_items.rs @@ -765,10 +765,10 @@ pub trait EvalContextExt<'mir, 'tcx: 'mir>: crate::MiriEvalContextExt<'mir, 'tcx // FIXME: register the destructor. } "_NSGetArgc" => { - this.write_scalar(Scalar::Ptr(this.machine.argc.unwrap()), dest)?; + this.write_scalar(this.machine.argc.expect("machine must be initialized"), dest)?; } "_NSGetArgv" => { - this.write_scalar(Scalar::Ptr(this.machine.argv.unwrap()), dest)?; + this.write_scalar(this.machine.argv.expect("machine must be initialized"), dest)?; } "SecRandomCopyBytes" => { let len = this.read_scalar(args[1])?.to_usize(this)?; @@ -927,7 +927,7 @@ pub trait EvalContextExt<'mir, 'tcx: 'mir>: crate::MiriEvalContextExt<'mir, 'tcx this.write_null(dest)?; } "GetCommandLineW" => { - this.write_scalar(Scalar::Ptr(this.machine.cmd_line.unwrap()), dest)?; + this.write_scalar(this.machine.cmd_line.expect("machine must be initialized"), dest)?; } // The actual name of 'RtlGenRandom' "SystemFunction036" => {