about summary refs log tree commit diff
path: root/src/librustc/middle/astencode.rs
AgeCommit message (Collapse)AuthorLines
2013-12-26librustc: De-`@mut` the `freevar_map`Patrick Walton-2/+4
2013-12-26libextra: Stop using `@mut MemWriter` in the EBML modulePatrick Walton-12/+23
2013-12-26librustc: De-`@mut` the vtable mapPatrick Walton-4/+7
2013-12-26librustc: De-`@mut` the capture mapPatrick Walton-2/+6
2013-12-26librustc: De-`@mut` `node_types` in the type contextPatrick Walton-2/+4
2013-12-26librustc: De-`@mut` the type cache in the type contextPatrick Walton-2/+4
2013-12-26librustc: De-`@mut` the adjustments table in the type contextPatrick Walton-2/+6
2013-12-26librustc: Remove `ty_param_defs` from the type contextPatrick Walton-3/+9
2013-12-26librustc: De-`@mut` the `node_type_substs` tablePatrick Walton-2/+6
2013-12-19Purge @-boxes from the reading half of EBMLAlex Crichton-12/+12
Now that the metadata is an owned value with a lifetime of a borrowed byte slice, it's possible to have future optimizations where the metadata doesn't need to be copied around (very expensive operation).
2013-12-11Make 'self lifetime illegal.Erik Price-1/+1
Also remove all instances of 'self within the codebase. This fixes #10889.
2013-12-08Remove dead codesKiet Tran-4/+0
2013-12-01Box Block, fn_decl, variant and Ty in the AST, as they were inflating ↵Eduard Burtescu-4/+4
critical enum sizes.
2013-11-28Register new snapshotsAlex Crichton-2/+2
2013-11-26auto merge of #10670 : eddyb/rust/node-u32, r=alexcrichtonbors-3/+2
### Rationale There is no reason to support more than 2³² nodes or names at this moment, as compiling something that big (even without considering the quadratic space usage of some analysis passes) would take at least **64GB**. Meanwhile, some can't (or barely can) compile rustc because it requires almost **1.5GB**. ### Potential problems Can someone confirm this doesn't affect metadata (de)serialization? I can't tell myself, I know nothing about it. ### Results Some structures have a size reduction of 25% to 50%: [before](https://gist.github.com/luqmana/3a82a51fa9c86d9191fa) - [after](https://gist.github.com/eddyb/5a75f8973d3d8018afd3). Sadly, there isn't a massive change in the memory used for compiling stage2 librustc (it doesn't go over **1.4GB** as [before](http://huonw.github.io/isrustfastyet/mem/), but I can barely see the difference). However, my own testcase (previously peaking at **1.6GB** in typeck) shows a reduction of **200**-**400MB**.
2013-11-27Shink NodeId, CrateNum, Name and Mrk down to 32 bits on x64.Eduard Burtescu-3/+2
2013-11-26Clean up SmallVector use a bitSteven Fackler-10/+4
2013-11-26Support multiple item macrosSteven Fackler-2/+10
Closes #4375
2013-11-26librustc: Remove non-procedure uses of `do` from librustc, librustdoc,Patrick Walton-136/+128
and librustpkg.
2013-11-19librustc: Change most uses of `&fn()` to `||`.Patrick Walton-4/+2
2013-11-11Move std::rt::io to std::ioAlex Crichton-3/+3
2013-11-08Rename and modernize region enum namesNiko Matsakis-11/+11
2013-11-08Generalize AST and ty::Generics to accept multiple lifetimes.Niko Matsakis-15/+38
2013-10-24Remove std::io from ebmlAlex Crichton-14/+16
2013-10-22libsyntax/librustc: Allow specifying mut on by-value self.Luqman Aden-1/+1
2013-10-22Drop the '2' suffix from logging macrosAlex Crichton-15/+15
Who doesn't like a massive renaming?
2013-10-03Rewrite lint passes with less visitor cruftAlex Crichton-2/+2
This purges about 500 lines of visitor cruft from lint passes. All lints are handled in a much more sane way at this point. The other huge bonus of this commit is that there are no more @-boxes in the lint passes, fixing the 500MB memory regression seen when the lint passes were refactored. Closes #8589
2013-09-30rustc: Remove usage of fmt!Alex Crichton-18/+18
2013-09-23librustc: Change the ID visitor to use traits instead of garbage-collected ↵Patrick Walton-16/+31
functions.
2013-09-23librustc: Change fold to use traits instead of `@fn`.Patrick Walton-29/+48
2013-09-11Properly encode/decode structural variants.SiegeLord-2/+2
2013-09-10Delay assignment of node ids until after expansion. Ensures that each AST nodeNiko Matsakis-4/+4
has a unique id. Fixes numerous bugs in macro expansion and deriving. Add two representative tests. Fixes #7971 Fixes #6304 Fixes #8367 Fixes #8754 Fixes #8852 Fixes #2543 Fixes #7654
2013-09-03Modernized a few more types in syntax::astMarvin Löbel-58/+58
2013-09-02Renamed syntax::ast::ident -> IdentMarvin Löbel-2/+2
2013-09-01Modernized a few type names in rustc and syntaxMarvin Löbel-9/+9
2013-08-27librustc: Ensure that type parameters are in the right positions in paths.Patrick Walton-2/+9
This removes the stacking of type parameters that occurs when invoking trait methods, and fixes all places in the standard library that were relying on it. It is somewhat awkward in places; I think we'll probably want something like the `Foo::<for T>::new()` syntax.
2013-08-27auto merge of #8797 : ↵bors-1/+1
nikomatsakis/rust/issue-8625-assign-to-andmut-in-borrowed-loc-2, r=pcwalton Fixes for #8625 to prevent assigning to `&mut` in borrowed or aliasable locations. The old code was insufficient in that it failed to catch bizarre cases like `& &mut &mut`. r? @pnkfelix
2013-08-27Remove remnants of implicit selfNiko Matsakis-1/+1
2013-08-25Revert "auto merge of #8745 : brson/rust/metadata, r=cmr"Brian Anderson-4/+4
This reverts commit 491bc3568c87dadaba4d342135bd308961c6e0ef, reversing changes made to 05f1bbba16912f63b562a7847801823872f89ec6.
2013-08-23Don't copy metadata after loadingBrian Anderson-4/+4
2013-08-19Make supertrait methods callable on object types.Michael Sullivan-2/+7
This requires changes to method search and to codegen. We now emit a vtable for objects that includes methods from all supertraits. Closes #4100. Also, actually populate the cache for vtables, and also key it by type so that it actually works.
2013-08-18quote_*! macros take an ExtCtxSteven Fackler-9/+9
They previously required one called "ext_cx" to be in scope. Fixes part of #7727
2013-08-11typeck: Modify method resolution to use new object adjustments, andNiko Matsakis-2/+2
to favor inherent methods over extension methods. The reason to favor inherent methods is that otherwise an impl like impl Foo for @Foo { fn method(&self) { self.method() } } causes infinite recursion. The current change to favor inherent methods is rather hacky; the method resolution code is in need of a refactoring.
2013-08-10Mass rename of .consume{,_iter}() to .move_iter()Erick Tryzelaar-1/+1
cc #7887
2013-08-05Updated std::Option, std::Either and std::ResultMarvin Löbel-5/+5
- Made naming schemes consistent between Option, Result and Either - Changed Options Add implementation to work like the maybe monad (return None if any of the inputs is None) - Removed duplicate Option::get and renamed all related functions to use the term `unwrap` instead
2013-08-03remove obsolete `foreach` keywordDaniel Micay-11/+11
this has been replaced by `for`
2013-08-03replace all remaining `for` with `foreach` or `do`Daniel Micay-2/+3
2013-08-02replace `range` with an external iteratorDaniel Micay-2/+1
2013-08-01migrate many `for` loops to `foreach`Daniel Micay-10/+10
2013-07-29New naming convention for ast::{node_id, local_crate, crate_node_id, ↵Michael Woerister-9/+9
blk_check_mode, ty_field, ty_method}