diff options
| author | Ralf Jung <post@ralfj.de> | 2025-01-28 02:56:32 +0100 |
|---|---|---|
| committer | Ralf Jung <post@ralfj.de> | 2025-01-28 02:58:44 +0100 |
| commit | bc135aaa9815557704978ccf9ee15aed49f2f976 (patch) | |
| tree | 0f10715d3d968a13a0f676c981bd115e5bcde02d /compiler/rustc_const_eval/src | |
| parent | f753850659bdf5788332525f3fe395685929c682 (diff) | |
| download | rust-bc135aaa9815557704978ccf9ee15aed49f2f976.tar.gz rust-bc135aaa9815557704978ccf9ee15aed49f2f976.zip | |
interpret: is_alloc_live: check global allocs last
Diffstat (limited to 'compiler/rustc_const_eval/src')
| -rw-r--r-- | compiler/rustc_const_eval/src/interpret/memory.rs | 6 |
1 files changed, 4 insertions, 2 deletions
diff --git a/compiler/rustc_const_eval/src/interpret/memory.rs b/compiler/rustc_const_eval/src/interpret/memory.rs index 2772c94d52b..d736f14f5a3 100644 --- a/compiler/rustc_const_eval/src/interpret/memory.rs +++ b/compiler/rustc_const_eval/src/interpret/memory.rs @@ -830,9 +830,11 @@ impl<'tcx, M: Machine<'tcx>> InterpCx<'tcx, M> { /// [`InterpCx::get_alloc_info`] if all you need to check is whether the kind is /// [`AllocKind::Dead`] because it doesn't have to look up the type and layout of statics. pub fn is_alloc_live(&self, id: AllocId) -> bool { - self.tcx.try_get_global_alloc(id).is_some() - || self.memory.alloc_map.contains_key_ref(&id) + self.memory.alloc_map.contains_key_ref(&id) || self.memory.extra_fn_ptr_map.contains_key(&id) + // We check `tcx` last as that has to acquire a lock in `many-seeds` mode. + // This also matches the order in `get_alloc_info`. + || self.tcx.try_get_global_alloc(id).is_some() } /// Obtain the size and alignment of an allocation, even if that allocation has |
