@@ -120,7 +120,7 @@ impl<'a, 'mir, 'tcx: 'mir + 'a> EvalContextExt<'tcx, 'mir> for super::MiriEvalCo
120120
121121 match & link_name[ ..] {
122122 "malloc" => {
123- let size = self . read_scalar ( args[ 0 ] ) ?. to_usize ( & self ) ?;
123+ let size = self . read_scalar ( args[ 0 ] ) ?. to_usize ( self ) ?;
124124 if size == 0 {
125125 self . write_null ( dest) ?;
126126 } else {
@@ -132,7 +132,7 @@ impl<'a, 'mir, 'tcx: 'mir + 'a> EvalContextExt<'tcx, 'mir> for super::MiriEvalCo
132132
133133 "free" => {
134134 let ptr = self . read_scalar ( args[ 0 ] ) ?. not_undef ( ) ?. erase_tag ( ) ; // raw ptr operation, no tag
135- if !ptr. is_null_ptr ( & self ) {
135+ if !ptr. is_null_ptr ( self ) {
136136 self . memory_mut ( ) . deallocate (
137137 ptr. to_ptr ( ) ?. with_default_tag ( ) ,
138138 None ,
@@ -142,8 +142,8 @@ impl<'a, 'mir, 'tcx: 'mir + 'a> EvalContextExt<'tcx, 'mir> for super::MiriEvalCo
142142 }
143143
144144 "__rust_alloc" => {
145- let size = self . read_scalar ( args[ 0 ] ) ?. to_usize ( & self ) ?;
146- let align = self . read_scalar ( args[ 1 ] ) ?. to_usize ( & self ) ?;
145+ let size = self . read_scalar ( args[ 0 ] ) ?. to_usize ( self ) ?;
146+ let align = self . read_scalar ( args[ 1 ] ) ?. to_usize ( self ) ?;
147147 if size == 0 {
148148 return err ! ( HeapAllocZeroBytes ) ;
149149 }
@@ -160,8 +160,8 @@ impl<'a, 'mir, 'tcx: 'mir + 'a> EvalContextExt<'tcx, 'mir> for super::MiriEvalCo
160160 self . write_scalar ( Scalar :: Ptr ( ptr) , dest) ?;
161161 }
162162 "__rust_alloc_zeroed" => {
163- let size = self . read_scalar ( args[ 0 ] ) ?. to_usize ( & self ) ?;
164- let align = self . read_scalar ( args[ 1 ] ) ?. to_usize ( & self ) ?;
163+ let size = self . read_scalar ( args[ 0 ] ) ?. to_usize ( self ) ?;
164+ let align = self . read_scalar ( args[ 1 ] ) ?. to_usize ( self ) ?;
165165 if size == 0 {
166166 return err ! ( HeapAllocZeroBytes ) ;
167167 }
@@ -180,8 +180,8 @@ impl<'a, 'mir, 'tcx: 'mir + 'a> EvalContextExt<'tcx, 'mir> for super::MiriEvalCo
180180 }
181181 "__rust_dealloc" => {
182182 let ptr = self . read_scalar ( args[ 0 ] ) ?. to_ptr ( ) ?. erase_tag ( ) ; // raw ptr operation, no tag
183- let old_size = self . read_scalar ( args[ 1 ] ) ?. to_usize ( & self ) ?;
184- let align = self . read_scalar ( args[ 2 ] ) ?. to_usize ( & self ) ?;
183+ let old_size = self . read_scalar ( args[ 1 ] ) ?. to_usize ( self ) ?;
184+ let align = self . read_scalar ( args[ 2 ] ) ?. to_usize ( self ) ?;
185185 if old_size == 0 {
186186 return err ! ( HeapAllocZeroBytes ) ;
187187 }
@@ -196,9 +196,9 @@ impl<'a, 'mir, 'tcx: 'mir + 'a> EvalContextExt<'tcx, 'mir> for super::MiriEvalCo
196196 }
197197 "__rust_realloc" => {
198198 let ptr = self . read_scalar ( args[ 0 ] ) ?. to_ptr ( ) ?. erase_tag ( ) ; // raw ptr operation, no tag
199- let old_size = self . read_scalar ( args[ 1 ] ) ?. to_usize ( & self ) ?;
200- let align = self . read_scalar ( args[ 2 ] ) ?. to_usize ( & self ) ?;
201- let new_size = self . read_scalar ( args[ 3 ] ) ?. to_usize ( & self ) ?;
199+ let old_size = self . read_scalar ( args[ 1 ] ) ?. to_usize ( self ) ?;
200+ let align = self . read_scalar ( args[ 2 ] ) ?. to_usize ( self ) ?;
201+ let new_size = self . read_scalar ( args[ 3 ] ) ?. to_usize ( self ) ?;
202202 if old_size == 0 || new_size == 0 {
203203 return err ! ( HeapAllocZeroBytes ) ;
204204 }
@@ -222,7 +222,7 @@ impl<'a, 'mir, 'tcx: 'mir + 'a> EvalContextExt<'tcx, 'mir> for super::MiriEvalCo
222222 //
223223 // libc::syscall(NR_GETRANDOM, buf.as_mut_ptr(), buf.len(), GRND_NONBLOCK)
224224 // is called if a `HashMap` is created the regular way.
225- match self . read_scalar ( args[ 0 ] ) ?. to_usize ( & self ) ? {
225+ match self . read_scalar ( args[ 0 ] ) ?. to_usize ( self ) ? {
226226 318 | 511 => {
227227 return err ! ( Unimplemented (
228228 "miri does not support random number generators" . to_owned( ) ,
@@ -260,7 +260,7 @@ impl<'a, 'mir, 'tcx: 'mir + 'a> EvalContextExt<'tcx, 'mir> for super::MiriEvalCo
260260 // Now we make a function call. TODO: Consider making this re-usable? EvalContext::step does sth. similar for the TLS dtors,
261261 // and of course eval_main.
262262 let mir = self . load_mir ( f_instance. def ) ?;
263- let ret_place = MPlaceTy :: dangling ( self . layout_of ( self . tcx . mk_unit ( ) ) ?, & self ) . into ( ) ;
263+ let ret_place = MPlaceTy :: dangling ( self . layout_of ( self . tcx . mk_unit ( ) ) ?, self ) . into ( ) ;
264264 self . push_stack_frame (
265265 f_instance,
266266 mir. span ,
@@ -294,7 +294,7 @@ impl<'a, 'mir, 'tcx: 'mir + 'a> EvalContextExt<'tcx, 'mir> for super::MiriEvalCo
294294 "memcmp" => {
295295 let left = self . read_scalar ( args[ 0 ] ) ?. not_undef ( ) ?. erase_tag ( ) ; // raw ptr operation
296296 let right = self . read_scalar ( args[ 1 ] ) ?. not_undef ( ) ?. erase_tag ( ) ; // raw ptr operation
297- let n = Size :: from_bytes ( self . read_scalar ( args[ 2 ] ) ?. to_usize ( & self ) ?) ;
297+ let n = Size :: from_bytes ( self . read_scalar ( args[ 2 ] ) ?. to_usize ( self ) ?) ;
298298
299299 let result = {
300300 let left_bytes = self . memory ( ) . read_bytes ( left. with_default_tag ( ) , n) ?;
@@ -318,11 +318,11 @@ impl<'a, 'mir, 'tcx: 'mir + 'a> EvalContextExt<'tcx, 'mir> for super::MiriEvalCo
318318 let ptr = self . read_scalar ( args[ 0 ] ) ?. not_undef ( ) ?. erase_tag ( ) ; // raw ptr operation
319319 let ptr = ptr. with_default_tag ( ) ;
320320 let val = self . read_scalar ( args[ 1 ] ) ?. to_bytes ( ) ? as u8 ;
321- let num = self . read_scalar ( args[ 2 ] ) ?. to_usize ( & self ) ?;
321+ let num = self . read_scalar ( args[ 2 ] ) ?. to_usize ( self ) ?;
322322 if let Some ( idx) = self . memory ( ) . read_bytes ( ptr, Size :: from_bytes ( num) ) ?
323323 . iter ( ) . rev ( ) . position ( |& c| c == val)
324324 {
325- let new_ptr = ptr. ptr_offset ( Size :: from_bytes ( num - idx as u64 - 1 ) , & self ) ?;
325+ let new_ptr = ptr. ptr_offset ( Size :: from_bytes ( num - idx as u64 - 1 ) , self ) ?;
326326 self . write_scalar ( new_ptr, dest) ?;
327327 } else {
328328 self . write_null ( dest) ?;
@@ -333,12 +333,12 @@ impl<'a, 'mir, 'tcx: 'mir + 'a> EvalContextExt<'tcx, 'mir> for super::MiriEvalCo
333333 let ptr = self . read_scalar ( args[ 0 ] ) ?. not_undef ( ) ?. erase_tag ( ) ; // raw ptr operation
334334 let ptr = ptr. with_default_tag ( ) ;
335335 let val = self . read_scalar ( args[ 1 ] ) ?. to_bytes ( ) ? as u8 ;
336- let num = self . read_scalar ( args[ 2 ] ) ?. to_usize ( & self ) ?;
336+ let num = self . read_scalar ( args[ 2 ] ) ?. to_usize ( self ) ?;
337337 if let Some ( idx) = self . memory ( ) . read_bytes ( ptr, Size :: from_bytes ( num) ) ?. iter ( ) . position (
338338 |& c| c == val,
339339 )
340340 {
341- let new_ptr = ptr. ptr_offset ( Size :: from_bytes ( idx as u64 ) , & self ) ?;
341+ let new_ptr = ptr. ptr_offset ( Size :: from_bytes ( idx as u64 ) , self ) ?;
342342 self . write_scalar ( new_ptr, dest) ?;
343343 } else {
344344 self . write_null ( dest) ?;
@@ -351,7 +351,7 @@ impl<'a, 'mir, 'tcx: 'mir + 'a> EvalContextExt<'tcx, 'mir> for super::MiriEvalCo
351351 let name = self . memory ( ) . read_c_str ( name_ptr. with_default_tag ( ) ) ?;
352352 match self . machine . env_vars . get ( name) {
353353 Some ( & var) => Scalar :: Ptr ( var) ,
354- None => Scalar :: ptr_null ( * self . tcx ) ,
354+ None => Scalar :: ptr_null ( & * self . tcx ) ,
355355 }
356356 } ;
357357 self . write_scalar ( result, dest) ?;
@@ -361,7 +361,7 @@ impl<'a, 'mir, 'tcx: 'mir + 'a> EvalContextExt<'tcx, 'mir> for super::MiriEvalCo
361361 let mut success = None ;
362362 {
363363 let name_ptr = self . read_scalar ( args[ 0 ] ) ?. not_undef ( ) ?. erase_tag ( ) ; // raw ptr operation
364- if !name_ptr. is_null_ptr ( & self ) {
364+ if !name_ptr. is_null_ptr ( self ) {
365365 let name = self . memory ( ) . read_c_str ( name_ptr. to_ptr ( ) ?
366366 . with_default_tag ( ) ) ?. to_owned ( ) ;
367367 if !name. is_empty ( ) && !name. contains ( & b'=' ) {
@@ -385,7 +385,7 @@ impl<'a, 'mir, 'tcx: 'mir + 'a> EvalContextExt<'tcx, 'mir> for super::MiriEvalCo
385385 let name_ptr = self . read_scalar ( args[ 0 ] ) ?. not_undef ( ) ?. erase_tag ( ) ; // raw ptr operation
386386 let value_ptr = self . read_scalar ( args[ 1 ] ) ?. to_ptr ( ) ?. erase_tag ( ) ; // raw ptr operation
387387 let value = self . memory ( ) . read_c_str ( value_ptr. with_default_tag ( ) ) ?;
388- if !name_ptr. is_null_ptr ( & self ) {
388+ if !name_ptr. is_null_ptr ( self ) {
389389 let name = self . memory ( ) . read_c_str ( name_ptr. to_ptr ( ) ?. with_default_tag ( ) ) ?;
390390 if !name. is_empty ( ) && !name. contains ( & b'=' ) {
391391 new = Some ( ( name. to_owned ( ) , value. to_owned ( ) ) ) ;
@@ -400,7 +400,7 @@ impl<'a, 'mir, 'tcx: 'mir + 'a> EvalContextExt<'tcx, 'mir> for super::MiriEvalCo
400400 MiriMemoryKind :: Env . into ( ) ,
401401 ) ?. with_default_tag ( ) ;
402402 self . memory_mut ( ) . write_bytes ( value_copy. into ( ) , & value) ?;
403- let trailing_zero_ptr = value_copy. offset ( Size :: from_bytes ( value. len ( ) as u64 ) , & self ) ?. into ( ) ;
403+ let trailing_zero_ptr = value_copy. offset ( Size :: from_bytes ( value. len ( ) as u64 ) , self ) ?. into ( ) ;
404404 self . memory_mut ( ) . write_bytes ( trailing_zero_ptr, & [ 0 ] ) ?;
405405 if let Some ( var) = self . machine . env_vars . insert (
406406 name. to_owned ( ) ,
@@ -510,7 +510,7 @@ impl<'a, 'mir, 'tcx: 'mir + 'a> EvalContextExt<'tcx, 'mir> for super::MiriEvalCo
510510 let key_layout = self . layout_of ( key_type) ?;
511511
512512 // Create key and write it into the memory where key_ptr wants it
513- let key = self . machine . tls . create_tls_key ( dtor, * self . tcx ) as u128 ;
513+ let key = self . machine . tls . create_tls_key ( dtor, & * self . tcx ) as u128 ;
514514 if key_layout. size . bits ( ) < 128 && key >= ( 1u128 << key_layout. size . bits ( ) as u128 ) {
515515 return err ! ( OutOfTls ) ;
516516 }
@@ -555,7 +555,7 @@ impl<'a, 'mir, 'tcx: 'mir + 'a> EvalContextExt<'tcx, 'mir> for super::MiriEvalCo
555555 }
556556 "pthread_attr_getstack" => {
557557 // second argument is where we are supposed to write the stack size
558- let ptr = self . ref_to_mplace ( self . read_value ( args[ 1 ] ) ?) ?;
558+ let ptr = self . ref_to_mplace ( self . read_immediate ( args[ 1 ] ) ?) ?;
559559 let stackaddr = Scalar :: from_int ( 0x80000 , args[ 1 ] . layout . size ) ; // just any address
560560 self . write_scalar ( stackaddr, ptr. into ( ) ) ?;
561561 // return 0
@@ -613,7 +613,7 @@ impl<'a, 'mir, 'tcx: 'mir + 'a> EvalContextExt<'tcx, 'mir> for super::MiriEvalCo
613613 // This just creates a key; Windows does not natively support TLS dtors.
614614
615615 // Create key and return it
616- let key = self . machine . tls . create_tls_key ( None , * self . tcx ) as u128 ;
616+ let key = self . machine . tls . create_tls_key ( None , & * self . tcx ) as u128 ;
617617
618618 // Figure out how large a TLS key actually is. This is c::DWORD.
619619 if dest. layout . size . bits ( ) < 128 && key >= ( 1u128 << dest. layout . size . bits ( ) as u128 ) {
0 commit comments