about summary refs log tree commit diff
diff options
context:
space:
mode:
authorEduard-Mihai Burtescu <edy.burt@gmail.com>2017-12-06 14:23:32 +0200
committerEduard-Mihai Burtescu <edy.burt@gmail.com>2017-12-06 14:23:32 +0200
commit9cb6499dde3826ade463c380d495afabca7aad5c (patch)
tree28d0de0d3dcfa5a9ece76fdb72e81cff35d2994b
parentff6152cdc88f972f61530974b1b6fae08d9e8a7b (diff)
downloadrust-9cb6499dde3826ade463c380d495afabca7aad5c.tar.gz
rust-9cb6499dde3826ade463c380d495afabca7aad5c.zip
miri: don't use an associated constant for a Machine's own data.
-rw-r--r--src/librustc/mir/interpret/const_eval.rs9
-rw-r--r--src/librustc/mir/interpret/eval_context.rs8
-rw-r--r--src/librustc/mir/interpret/machine.rs3
-rw-r--r--src/librustc/mir/interpret/mod.rs2
-rw-r--r--src/librustc_const_eval/eval.rs8
5 files changed, 13 insertions, 17 deletions
diff --git a/src/librustc/mir/interpret/const_eval.rs b/src/librustc/mir/interpret/const_eval.rs
index c70825474b7..dd8bf09586a 100644
--- a/src/librustc/mir/interpret/const_eval.rs
+++ b/src/librustc/mir/interpret/const_eval.rs
@@ -17,10 +17,10 @@ pub fn eval_body<'a, 'tcx>(
     tcx: TyCtxt<'a, 'tcx, 'tcx>,
     instance: Instance<'tcx>,
     param_env: ty::ParamEnv<'tcx>,
-) -> (EvalResult<'tcx, (PtrAndAlign, Ty<'tcx>)>, EvalContext<'a, 'tcx, CompileTimeFunctionEvaluator>) {
+) -> (EvalResult<'tcx, (PtrAndAlign, Ty<'tcx>)>, EvalContext<'a, 'tcx, CompileTimeEvaluator>) {
     debug!("eval_body: {:?}, {:?}", instance, param_env);
     let limits = super::ResourceLimits::default();
-    let mut ecx = EvalContext::<CompileTimeFunctionEvaluator>::new(tcx, param_env, limits, (), ());
+    let mut ecx = EvalContext::new(tcx, param_env, limits, CompileTimeEvaluator, ());
     let cid = GlobalId {
         instance,
         promoted: None,
@@ -120,7 +120,7 @@ pub fn eval_body_as_integer<'a, 'tcx>(
     })
 }
 
-pub struct CompileTimeFunctionEvaluator;
+pub struct CompileTimeEvaluator;
 
 impl<'tcx> Into<EvalError<'tcx>> for ConstEvalError {
     fn into(self) -> EvalError<'tcx> {
@@ -164,8 +164,7 @@ impl Error for ConstEvalError {
     }
 }
 
-impl<'tcx> super::Machine<'tcx> for CompileTimeFunctionEvaluator {
-    type Data = ();
+impl<'tcx> super::Machine<'tcx> for CompileTimeEvaluator {
     type MemoryData = ();
     type MemoryKinds = !;
     fn eval_fn_call<'a>(
diff --git a/src/librustc/mir/interpret/eval_context.rs b/src/librustc/mir/interpret/eval_context.rs
index 74fa34b5c6d..f23946fbc16 100644
--- a/src/librustc/mir/interpret/eval_context.rs
+++ b/src/librustc/mir/interpret/eval_context.rs
@@ -19,8 +19,8 @@ use super::{EvalError, EvalResult, EvalErrorKind, GlobalId, Place, PlaceExtra, M
             ValidationQuery, Machine};
 
 pub struct EvalContext<'a, 'tcx: 'a, M: Machine<'tcx>> {
-    /// Stores data required by the `Machine`
-    pub machine_data: M::Data,
+    /// Stores the `Machine` instance.
+    pub machine: M,
 
     /// The results of the type checker, from rustc.
     pub tcx: TyCtxt<'a, 'tcx, 'tcx>,
@@ -217,11 +217,11 @@ impl<'a, 'tcx, M: Machine<'tcx>> EvalContext<'a, 'tcx, M> {
         tcx: TyCtxt<'a, 'tcx, 'tcx>,
         param_env: ty::ParamEnv<'tcx>,
         limits: ResourceLimits,
-        machine_data: M::Data,
+        machine: M,
         memory_data: M::MemoryData,
     ) -> Self {
         EvalContext {
-            machine_data,
+            machine,
             tcx,
             param_env,
             memory: Memory::new(tcx, limits.memory_size, memory_data),
diff --git a/src/librustc/mir/interpret/machine.rs b/src/librustc/mir/interpret/machine.rs
index 5416f231e27..3fbc69b80e5 100644
--- a/src/librustc/mir/interpret/machine.rs
+++ b/src/librustc/mir/interpret/machine.rs
@@ -12,9 +12,6 @@ use syntax::ast::Mutability;
 /// Methods of this trait signifies a point where CTFE evaluation would fail
 /// and some use case dependent behaviour can instead be applied
 pub trait Machine<'tcx>: Sized {
-    /// Additional data that can be accessed via the EvalContext
-    type Data;
-
     /// Additional data that can be accessed via the Memory
     type MemoryData;
 
diff --git a/src/librustc/mir/interpret/mod.rs b/src/librustc/mir/interpret/mod.rs
index d3b742e0030..9c1a3f09432 100644
--- a/src/librustc/mir/interpret/mod.rs
+++ b/src/librustc/mir/interpret/mod.rs
@@ -35,7 +35,7 @@ use self::range_map::RangeMap;
 
 pub use self::value::{PrimVal, PrimValKind, Value, Pointer};
 
-pub use self::const_eval::{eval_body_as_integer, eval_body, CompileTimeFunctionEvaluator};
+pub use self::const_eval::{eval_body_as_integer, eval_body, CompileTimeEvaluator};
 
 pub use self::machine::Machine;
 
diff --git a/src/librustc_const_eval/eval.rs b/src/librustc_const_eval/eval.rs
index a9f20828244..f400380536e 100644
--- a/src/librustc_const_eval/eval.rs
+++ b/src/librustc_const_eval/eval.rs
@@ -24,7 +24,7 @@ use rustc::util::common::ErrorReported;
 use rustc::util::nodemap::NodeMap;
 
 use rustc::mir::interpret::{PrimVal, Value, PtrAndAlign, HasMemory, EvalError};
-use rustc::mir::interpret::{CompileTimeFunctionEvaluator, EvalContext};
+use rustc::mir::interpret::{CompileTimeEvaluator, EvalContext};
 use rustc::mir::Field;
 use rustc::mir::interpret::{Place, PlaceExtra};
 use rustc_data_structures::indexed_vec::Idx;
@@ -754,7 +754,7 @@ pub(crate) fn const_eval<'a, 'tcx>(tcx: TyCtxt<'a, 'tcx, 'tcx>,
 }
 
 fn check_ctfe_against_miri<'a, 'tcx>(
-    ecx: &mut EvalContext<'a, 'tcx, CompileTimeFunctionEvaluator>,
+    ecx: &mut EvalContext<'a, 'tcx, CompileTimeEvaluator>,
     miri_val: PtrAndAlign,
     miri_ty: Ty<'tcx>,
     ctfe: ConstVal<'tcx>,
@@ -950,7 +950,7 @@ fn check_ctfe_against_miri<'a, 'tcx>(
 }
 
 fn get_prim<'a, 'tcx>(
-    ecx: &mut EvalContext<'a, 'tcx, CompileTimeFunctionEvaluator>,
+    ecx: &mut EvalContext<'a, 'tcx, CompileTimeEvaluator>,
     res: Result<Option<Value>, EvalError<'tcx>>,
 ) -> u128 {
     match res {
@@ -961,7 +961,7 @@ fn get_prim<'a, 'tcx>(
 }
 
 fn unwrap_miri<'a, 'tcx, T>(
-    ecx: &EvalContext<'a, 'tcx, CompileTimeFunctionEvaluator>,
+    ecx: &EvalContext<'a, 'tcx, CompileTimeEvaluator>,
     res: Result<T, EvalError<'tcx>>,
 ) -> T {
     match res {