about summary refs log tree commit diff
path: root/src/librustc_const_eval/eval.rs
AgeCommit message (Collapse)AuthorLines
2018-03-08Move librustc_const_eval to librustc_mirOliver Schneider-697/+0
2018-03-08Produce instead of pointersOliver Schneider-85/+95
2018-03-05Turn features() into a query.Michael Woerister-1/+1
2018-02-05Rollup merge of #47892 - Badel2:const_type_id_of, r=oli-obkkennytm-0/+4
Turn `type_id` into a constant intrinsic https://github.com/rust-lang/rust/issues/27745 The method `get_type_id` in `Any` is intended to support reflection. It's currently unstable in favor of using an associated constant instead. This PR makes the `type_id` intrinsic a constant intrinsic, the same as `size_of` and `align_of`, allowing `TypeId::of` to be a `const fn`, which will allow using an associated constant in `Any`.
2018-02-01Turn `type_id` into a constant intrinsicBadel2-0/+4
Add rustc_const_unstable attribute for `any::TypeId::of` Add test for `const fn TypeId::of`
2018-02-01rustc: prefer ParamEnvAnd and LayoutCx over tuples for LayoutOf.Eduard-Mihai Burtescu-2/+1
2018-01-04rustc: use {U,I}size instead of {U,I}s shorthands.Eduard-Mihai Burtescu-4/+4
2017-12-12Move large chunks of miri from rustc::mir::interpret to rustc_mir::interpretOliver Schneider-295/+0
2017-12-12Put miri const eval checking behind -ZmiriOliver Schneider-20/+24
2017-12-06miri: don't use an associated constant for a Machine's own data.Eduard-Mihai Burtescu-4/+4
2017-12-06miri: move param_env from Machine to EvalContext.Eduard-Mihai Burtescu-2/+2
2017-12-06miri: monomorphize types iff they came from MIR.Eduard-Mihai Burtescu-3/+4
2017-12-06Update miri to rustc changesOliver Schneider-164/+272
2017-09-29Expose miri <-> ctfe differencesOliver Schneider-17/+17
miri needs to start storing everything in the TyCtxt so we can have relocations and aggregates
2017-09-29Adjust imports to librustc::mir::interpretOliver Schneider-1/+72
2017-09-18incr.comp.: Already hash HIR bodies during metadata export so they don't ↵Michael Woerister-3/+2
have to be hashed in downstream crates.
2017-09-11rustc: evaluate fixed-length array length expressions lazily.Eduard-Mihai Burtescu-1/+2
2017-09-11rustc: remove obsolete const_val::ErrKind::{Negate,Not}On.Eduard-Mihai Burtescu-6/+4
2017-09-11rustc: use ty::Const for the length of TyArray.Eduard-Mihai Burtescu-3/+8
2017-09-11rustc: replace usize with u64 and ConstUsize.Eduard-Mihai Burtescu-11/+12
2017-09-11rustc: introduce ty::Const { ConstVal, Ty }.Eduard-Mihai Burtescu-30/+31
2017-09-11rustc: intern ConstVal's in TyCtxt.Eduard-Mihai Burtescu-66/+76
2017-09-08Use NodeId/HirId instead of DefId for local variables.Eduard-Mihai Burtescu-12/+12
2017-09-05rustc: Store InternedString in `DefPathData`Alex Crichton-1/+1
Previously a `Symbol` was stored there, but this ended up causing hash collisions in situations that otherwise shouldn't have a hash collision. Only the symbol's string value was hashed, but it was possible for distinct symbols to have the same string value, fooling various calcuations into thinking that these paths *didn't* need disambiguating data when in fact they did! By storing `InternedString` instead we're hopefully triggering all the exising logic to disambiguate paths with same-name `Symbol` but actually distinct locations.
2017-09-05rustc: Rename item_body query to extern_const_bodyAlex Crichton-2/+2
Should hopefully more accurately reflect what's happening! This commit also removes the cache in the cstore implementation as it's already cached through the query infrastructure.
2017-09-05rustc: Migrate `CrateStore::item_body` to a queryAlex Crichton-2/+2
This commit migrates the `item_body` method on `CrateStore` to a query instead to enable better tracking of dependencies and whatnot.
2017-08-15use field init shorthand EVERYWHEREZack M. Davis-1/+1
Like #43008 (f668999), but _much more aggressive_.
2017-08-14Auto merge of #43740 - michaelwoerister:local-id-in-typecktables, r=arielb1bors-2/+2
Use hir::ItemLocalId as keys in TypeckTables. This PR makes `TypeckTables` use `ItemLocalId` instead of `NodeId` as key. This is needed for incremental compilation -- for stable hashing and for being able to persist and reload these tables. The PR implements the most important part of https://github.com/rust-lang/rust/issues/40303. Some notes on the implementation: * The PR adds the `HirId` to HIR nodes where needed (`Expr`, `Local`, `Block`, `Pat`) which obviates the need to store a `NodeId -> HirId` mapping in crate metadata. Thanks @eddyb for the suggestion! In the future the `HirId` should completely replace the `NodeId` in HIR nodes. * Before something is read or stored in one of the various `TypeckTables` subtables, the entry's key is validated via the new `TypeckTables::validate_hir_id()` method. This makes sure that we are not mixing information from different items in a single table. That last part could be made a bit nicer by either (a) new-typing the table-key and making `validate_hir_id()` the only way to convert a `HirId` to the new-typed key, or (b) just encapsulate sub-table access a little better. This PR, however, contents itself with not making things significantly worse. Also, there's quite a bit of switching around between `NodeId`, `HirId`, and `DefIndex`. These conversions are cheap except for `HirId -> NodeId`, so if the valued reviewer finds such an instance in a performance critical place, please let me know. Ideally we convert more and more code from `NodeId` to `HirId` in the future so that there are no more `NodeId`s after HIR lowering anywhere. Then the amount of switching should be minimal again. r? @eddyb, maybe?
2017-08-12Fix some typosBastien Orivel-1/+1
2017-08-11Use ItemLocalId as key for node_types, node_substs, and adjustments in ↵Michael Woerister-1/+1
TypeckTables.
2017-08-11Make TypeckTables::type_dependent_defs use ItemLocalId instead of NodeId.Michael Woerister-1/+1
2017-08-02rustc_const_math: use apfloat::ieee::{Single,Double} in ConstFloat.Eduard-Mihai Burtescu-28/+27
2017-07-27rustc_const_eval: keep track of the appropriate ParamEnv.Eduard-Mihai Burtescu-35/+33
2017-07-27rustc_const_eval: always require correct Substs.Eduard-Mihai Burtescu-38/+15
2017-07-19Implement const fn {size,align}_of.Eduard-Mihai Burtescu-0/+23
2017-06-13On-demand is_const_fnTaylor Cramer-1/+1
2017-06-10rustc: make the comon case of tcx.infer_ctxt(()) nicer.Eduard-Mihai Burtescu-1/+1
2017-06-01strip param-env from infcxNiko Matsakis-1/+3
2017-06-01move projection mode into parameter environmentNiko Matsakis-1/+1
2017-06-01rustc: remove unnecessary ItemSubsts wrapper.Eduard-Mihai Burtescu-2/+1
2017-05-04trait_of_itemachernyak-1/+1
2017-04-27query for describe_defachernyak-1/+1
2017-04-24rustc: use tcx.at(span) to set the location of a query.Eduard-Mihai Burtescu-1/+1
2017-04-24rustc: expose the common DUMMY_SP query case as tcx methods.Eduard-Mihai Burtescu-2/+2
2017-04-24rustc: rename some of the queries to match tcx methods.Eduard-Mihai Burtescu-3/+3
2017-04-23rustc_const_eval: support all unit enum variants.Eduard-Mihai Burtescu-44/+33
2017-04-23rustc_const_eval: CallOn isn't needed, typeck/const-qualif handle those cases.Eduard-Mihai Burtescu-1/+1
2017-04-23rustc: make the const-eval cache polymorphic.Eduard-Mihai Burtescu-104/+81
2017-04-16rustc: use monomorphic const_eval for cross-crate enum discriminants.Eduard-Mihai Burtescu-4/+7
2017-04-16rustc: expose monomorphic const_eval through on-demand.Eduard-Mihai Burtescu-34/+15