Skip to content

Commit 9cb6499

Browse files
committed
miri: don't use an associated constant for a Machine's own data.
1 parent ff6152c commit 9cb6499

File tree

5 files changed

+13
-17
lines changed

5 files changed

+13
-17
lines changed

src/librustc/mir/interpret/const_eval.rs

+4-5
Original file line numberDiff line numberDiff line change
@@ -17,10 +17,10 @@ pub fn eval_body<'a, 'tcx>(
1717
tcx: TyCtxt<'a, 'tcx, 'tcx>,
1818
instance: Instance<'tcx>,
1919
param_env: ty::ParamEnv<'tcx>,
20-
) -> (EvalResult<'tcx, (PtrAndAlign, Ty<'tcx>)>, EvalContext<'a, 'tcx, CompileTimeFunctionEvaluator>) {
20+
) -> (EvalResult<'tcx, (PtrAndAlign, Ty<'tcx>)>, EvalContext<'a, 'tcx, CompileTimeEvaluator>) {
2121
debug!("eval_body: {:?}, {:?}", instance, param_env);
2222
let limits = super::ResourceLimits::default();
23-
let mut ecx = EvalContext::<CompileTimeFunctionEvaluator>::new(tcx, param_env, limits, (), ());
23+
let mut ecx = EvalContext::new(tcx, param_env, limits, CompileTimeEvaluator, ());
2424
let cid = GlobalId {
2525
instance,
2626
promoted: None,
@@ -120,7 +120,7 @@ pub fn eval_body_as_integer<'a, 'tcx>(
120120
})
121121
}
122122

123-
pub struct CompileTimeFunctionEvaluator;
123+
pub struct CompileTimeEvaluator;
124124

125125
impl<'tcx> Into<EvalError<'tcx>> for ConstEvalError {
126126
fn into(self) -> EvalError<'tcx> {
@@ -164,8 +164,7 @@ impl Error for ConstEvalError {
164164
}
165165
}
166166

167-
impl<'tcx> super::Machine<'tcx> for CompileTimeFunctionEvaluator {
168-
type Data = ();
167+
impl<'tcx> super::Machine<'tcx> for CompileTimeEvaluator {
169168
type MemoryData = ();
170169
type MemoryKinds = !;
171170
fn eval_fn_call<'a>(

src/librustc/mir/interpret/eval_context.rs

+4-4
Original file line numberDiff line numberDiff line change
@@ -19,8 +19,8 @@ use super::{EvalError, EvalResult, EvalErrorKind, GlobalId, Place, PlaceExtra, M
1919
ValidationQuery, Machine};
2020

2121
pub struct EvalContext<'a, 'tcx: 'a, M: Machine<'tcx>> {
22-
/// Stores data required by the `Machine`
23-
pub machine_data: M::Data,
22+
/// Stores the `Machine` instance.
23+
pub machine: M,
2424

2525
/// The results of the type checker, from rustc.
2626
pub tcx: TyCtxt<'a, 'tcx, 'tcx>,
@@ -217,11 +217,11 @@ impl<'a, 'tcx, M: Machine<'tcx>> EvalContext<'a, 'tcx, M> {
217217
tcx: TyCtxt<'a, 'tcx, 'tcx>,
218218
param_env: ty::ParamEnv<'tcx>,
219219
limits: ResourceLimits,
220-
machine_data: M::Data,
220+
machine: M,
221221
memory_data: M::MemoryData,
222222
) -> Self {
223223
EvalContext {
224-
machine_data,
224+
machine,
225225
tcx,
226226
param_env,
227227
memory: Memory::new(tcx, limits.memory_size, memory_data),

src/librustc/mir/interpret/machine.rs

-3
Original file line numberDiff line numberDiff line change
@@ -12,9 +12,6 @@ use syntax::ast::Mutability;
1212
/// Methods of this trait signifies a point where CTFE evaluation would fail
1313
/// and some use case dependent behaviour can instead be applied
1414
pub trait Machine<'tcx>: Sized {
15-
/// Additional data that can be accessed via the EvalContext
16-
type Data;
17-
1815
/// Additional data that can be accessed via the Memory
1916
type MemoryData;
2017

src/librustc/mir/interpret/mod.rs

+1-1
Original file line numberDiff line numberDiff line change
@@ -35,7 +35,7 @@ use self::range_map::RangeMap;
3535

3636
pub use self::value::{PrimVal, PrimValKind, Value, Pointer};
3737

38-
pub use self::const_eval::{eval_body_as_integer, eval_body, CompileTimeFunctionEvaluator};
38+
pub use self::const_eval::{eval_body_as_integer, eval_body, CompileTimeEvaluator};
3939

4040
pub use self::machine::Machine;
4141

src/librustc_const_eval/eval.rs

+4-4
Original file line numberDiff line numberDiff line change
@@ -24,7 +24,7 @@ use rustc::util::common::ErrorReported;
2424
use rustc::util::nodemap::NodeMap;
2525

2626
use rustc::mir::interpret::{PrimVal, Value, PtrAndAlign, HasMemory, EvalError};
27-
use rustc::mir::interpret::{CompileTimeFunctionEvaluator, EvalContext};
27+
use rustc::mir::interpret::{CompileTimeEvaluator, EvalContext};
2828
use rustc::mir::Field;
2929
use rustc::mir::interpret::{Place, PlaceExtra};
3030
use rustc_data_structures::indexed_vec::Idx;
@@ -754,7 +754,7 @@ pub(crate) fn const_eval<'a, 'tcx>(tcx: TyCtxt<'a, 'tcx, 'tcx>,
754754
}
755755

756756
fn check_ctfe_against_miri<'a, 'tcx>(
757-
ecx: &mut EvalContext<'a, 'tcx, CompileTimeFunctionEvaluator>,
757+
ecx: &mut EvalContext<'a, 'tcx, CompileTimeEvaluator>,
758758
miri_val: PtrAndAlign,
759759
miri_ty: Ty<'tcx>,
760760
ctfe: ConstVal<'tcx>,
@@ -950,7 +950,7 @@ fn check_ctfe_against_miri<'a, 'tcx>(
950950
}
951951

952952
fn get_prim<'a, 'tcx>(
953-
ecx: &mut EvalContext<'a, 'tcx, CompileTimeFunctionEvaluator>,
953+
ecx: &mut EvalContext<'a, 'tcx, CompileTimeEvaluator>,
954954
res: Result<Option<Value>, EvalError<'tcx>>,
955955
) -> u128 {
956956
match res {
@@ -961,7 +961,7 @@ fn get_prim<'a, 'tcx>(
961961
}
962962

963963
fn unwrap_miri<'a, 'tcx, T>(
964-
ecx: &EvalContext<'a, 'tcx, CompileTimeFunctionEvaluator>,
964+
ecx: &EvalContext<'a, 'tcx, CompileTimeEvaluator>,
965965
res: Result<T, EvalError<'tcx>>,
966966
) -> T {
967967
match res {

0 commit comments

Comments
 (0)