diff options
| author | bors <bors@rust-lang.org> | 2022-09-03 09:20:54 +0000 |
|---|---|---|
| committer | bors <bors@rust-lang.org> | 2022-09-03 09:20:54 +0000 |
| commit | 06b72b06a2734a3997abe12dded7c19d49a18cc2 (patch) | |
| tree | e40e4fb99fbce9fe63c25c21c067effa3d724e1f | |
| parent | 92086258e30ae59610a1b1097d97227377db0ada (diff) | |
| parent | 8b53abd60208614f0ab8d85be022f59e55f2a3ce (diff) | |
| download | rust-06b72b06a2734a3997abe12dded7c19d49a18cc2.tar.gz rust-06b72b06a2734a3997abe12dded7c19d49a18cc2.zip | |
Auto merge of #101154 - RalfJung:validation-perf, r=oli-obk
interpret: fix unnecessary allocation in validation visitor Should fix the perf regression introduced by https://github.com/rust-lang/rust/pull/100043. r? `@oli-obk`
| -rw-r--r-- | compiler/rustc_const_eval/src/interpret/validity.rs | 9 |
1 files changed, 5 insertions, 4 deletions
diff --git a/compiler/rustc_const_eval/src/interpret/validity.rs b/compiler/rustc_const_eval/src/interpret/validity.rs index 0382e2d5805..14aaee6ac3f 100644 --- a/compiler/rustc_const_eval/src/interpret/validity.rs +++ b/compiler/rustc_const_eval/src/interpret/validity.rs @@ -5,7 +5,7 @@ //! to be const-safe. use std::convert::TryFrom; -use std::fmt::Write; +use std::fmt::{Display, Write}; use std::num::NonZeroUsize; use rustc_ast::Mutability; @@ -311,7 +311,7 @@ impl<'rt, 'mir, 'tcx: 'mir, M: Machine<'mir, 'tcx>> ValidityVisitor<'rt, 'mir, ' fn read_immediate( &self, op: &OpTy<'tcx, M::Provenance>, - expected: &str, + expected: impl Display, ) -> InterpResult<'tcx, ImmTy<'tcx, M::Provenance>> { Ok(try_validation!( self.ecx.read_immediate(op), @@ -323,7 +323,7 @@ impl<'rt, 'mir, 'tcx: 'mir, M: Machine<'mir, 'tcx>> ValidityVisitor<'rt, 'mir, ' fn read_scalar( &self, op: &OpTy<'tcx, M::Provenance>, - expected: &str, + expected: impl Display, ) -> InterpResult<'tcx, Scalar<M::Provenance>> { Ok(self.read_immediate(op, expected)?.to_scalar()) } @@ -368,7 +368,8 @@ impl<'rt, 'mir, 'tcx: 'mir, M: Machine<'mir, 'tcx>> ValidityVisitor<'rt, 'mir, ' value: &OpTy<'tcx, M::Provenance>, kind: &str, ) -> InterpResult<'tcx> { - let place = self.ecx.ref_to_mplace(&self.read_immediate(value, &format!("a {kind}"))?)?; + let place = + self.ecx.ref_to_mplace(&self.read_immediate(value, format_args!("a {kind}"))?)?; // Handle wide pointers. // Check metadata early, for better diagnostics if place.layout.is_unsized() { |
