@@ -5,7 +5,7 @@ use std::collections::{hash_map::Entry, HashMap};
55use  rand:: Rng ; 
66
77use  rustc:: ty:: layout:: HasDataLayout ; 
8- use  rustc_mir:: interpret:: { AllocCheck ,  AllocId ,  InterpResult ,  Memory ,  Pointer ,  PointerArithmetic } ; 
8+ use  rustc_mir:: interpret:: { AllocCheck ,  AllocId ,  InterpResult ,  Memory ,  Machine ,   Pointer ,  PointerArithmetic } ; 
99use  rustc_target:: abi:: Size ; 
1010
1111use  crate :: { Evaluator ,  Tag ,  STACK_ADDR } ; 
@@ -80,12 +80,13 @@ impl<'mir, 'tcx> GlobalState {
8080    )  -> InterpResult < ' tcx ,  u64 >  { 
8181        let  mut  global_state = memory. extra . intptrcast . borrow_mut ( ) ; 
8282        let  global_state = & mut  * global_state; 
83+         let  id = Evaluator :: canonical_alloc_id ( memory,  ptr. alloc_id ) ; 
8384
8485        // There is nothing wrong with a raw pointer being cast to an integer only after 
8586        // it became dangling.  Hence `MaybeDead`. 
86-         let  ( size,  align)  = memory. get_size_and_align ( ptr . alloc_id ,  AllocCheck :: MaybeDead ) ?; 
87+         let  ( size,  align)  = memory. get_size_and_align ( id ,  AllocCheck :: MaybeDead ) ?; 
8788
88-         let  base_addr = match  global_state. base_addr . entry ( ptr . alloc_id )  { 
89+         let  base_addr = match  global_state. base_addr . entry ( id )  { 
8990            Entry :: Occupied ( entry)  => * entry. get ( ) , 
9091            Entry :: Vacant ( entry)  => { 
9192                // This allocation does not have a base address yet, pick one. 
@@ -102,7 +103,7 @@ impl<'mir, 'tcx> GlobalState {
102103                trace ! ( 
103104                    "Assigning base address {:#x} to allocation {:?} (slack: {}, align: {})" , 
104105                    base_addr, 
105-                     ptr . alloc_id , 
106+                     id , 
106107                    slack, 
107108                    align. bytes( ) , 
108109                ) ; 
@@ -112,7 +113,7 @@ impl<'mir, 'tcx> GlobalState {
112113                global_state. next_base_addr  = base_addr. checked_add ( max ( size. bytes ( ) ,  1 ) ) . unwrap ( ) ; 
113114                // Given that `next_base_addr` increases in each allocation, pushing the 
114115                // corresponding tuple keeps `int_to_ptr_map` sorted 
115-                 global_state. int_to_ptr_map . push ( ( base_addr,  ptr . alloc_id ) ) ; 
116+                 global_state. int_to_ptr_map . push ( ( base_addr,  id ) ) ; 
116117
117118                base_addr
118119            } 
0 commit comments