diff options
| author | Ralf Jung <post@ralfj.de> | 2025-02-28 15:54:26 +0100 |
|---|---|---|
| committer | Ralf Jung <post@ralfj.de> | 2025-02-28 16:07:52 +0100 |
| commit | 50a37ca56c1f13fdfc0df789a92d0052e731e9ba (patch) | |
| tree | de4e69bd07774d9ef2275dcd9ba70f82c3a64d8d /compiler/rustc_const_eval/src | |
| parent | 2f581937e1c06adb4607df1b571c0bef6d98e6ec (diff) | |
| download | rust-50a37ca56c1f13fdfc0df789a92d0052e731e9ba.tar.gz rust-50a37ca56c1f13fdfc0df789a92d0052e731e9ba.zip | |
miri native-call support: all previously exposed provenance is accessible to the callee
Diffstat (limited to 'compiler/rustc_const_eval/src')
| -rw-r--r-- | compiler/rustc_const_eval/src/interpret/memory.rs | 15 |
1 files changed, 5 insertions, 10 deletions
diff --git a/compiler/rustc_const_eval/src/interpret/memory.rs b/compiler/rustc_const_eval/src/interpret/memory.rs index 4f4b6785844..ce0b5a350e0 100644 --- a/compiler/rustc_const_eval/src/interpret/memory.rs +++ b/compiler/rustc_const_eval/src/interpret/memory.rs @@ -955,18 +955,13 @@ impl<'tcx, M: Machine<'tcx>> InterpCx<'tcx, M> { /// Handle the effect an FFI call might have on the state of allocations. /// This overapproximates the modifications which external code might make to memory: - /// We set all reachable allocations as initialized, mark all provenances as exposed + /// We set all reachable allocations as initialized, mark all reachable provenances as exposed /// and overwrite them with `Provenance::WILDCARD`. - pub fn prepare_for_native_call( - &mut self, - id: AllocId, - initial_prov: M::Provenance, - ) -> InterpResult<'tcx> { - // Expose provenance of the root allocation. - M::expose_provenance(self, initial_prov)?; - + /// + /// The allocations in `ids` are assumed to be already exposed. + pub fn prepare_for_native_call(&mut self, ids: Vec<AllocId>) -> InterpResult<'tcx> { let mut done = FxHashSet::default(); - let mut todo = vec![id]; + let mut todo = ids; while let Some(id) = todo.pop() { if !done.insert(id) { // We already saw this allocation before, don't process it again. |
