Skip to content

Commit 5cde31f

Browse files
committed
---
yaml --- r: 127486 b: refs/heads/master c: 954bae9 h: refs/heads/master v: v3
1 parent 164e970 commit 5cde31f

38 files changed

+49
-277
lines changed

[refs]

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,5 @@
11
---
2-
refs/heads/master: 4d27b4875e16ed6a4a0c9697432f1152b727e84a
2+
refs/heads/master: 954bae9df17681e611be4bf943c34b492db46dc8
33
refs/heads/snap-stage1: e33de59e47c5076a89eadeb38f4934f58a3618a6
44
refs/heads/snap-stage3: 12e0f72f517516ac4fce2aed85e6142e9b874bce
55
refs/heads/try: e9a2d9f337a45a2ddcd854d1039bbc9f907de41a

trunk/src/doc/guide-pointers.md

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -655,7 +655,7 @@ This part is coming soon.
655655
# Returning Pointers
656656

657657
In many languages with pointers, you'd return a pointer from a function
658-
so as to avoid copying a large data structure. For example:
658+
so as to avoid a copying a large data structure. For example:
659659

660660
```{rust}
661661
struct BigStruct {

trunk/src/doc/guide.md

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -2090,7 +2090,7 @@ In this case, I happen to prefer the latter, and in the `random()` case, I prefe
20902090
the former. I think the nested `<>`s make the first option especially ugly and
20912091
a bit harder to read.
20922092

2093-
Anyway, with us now convering our input to a number, our code looks like this:
2093+
Anyway, with us now converting our input to a number, our code looks like this:
20942094

20952095
```{rust,ignore}
20962096
use std::io;

trunk/src/doc/tutorial.md

Lines changed: 0 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -1133,16 +1133,6 @@ let xs = Cons(1, box Cons(2, box Cons(3, box Nil)));
11331133
let ys = xs; // copies `Cons(u32, pointer)` shallowly
11341134
~~~
11351135

1136-
> *Note:* Names like `xs` and `ys` are a naming
1137-
> convention for collection-like data structures
1138-
> (like our `List`). These collections are given
1139-
> names appended with 's' to signify plurality,
1140-
> i.e. that the data structure stores multiple
1141-
> elements. For example, `xs` in this case can
1142-
> be read as "a list of ex-es", where "x" here
1143-
> are elements of type `u32`.
1144-
1145-
11461136
Rust will consider a shallow copy of a type with a destructor like `List` to
11471137
*move ownership* of the value. After a value has been moved, the source
11481138
location cannot be used unless it is reinitialized.

trunk/src/librustc/metadata/common.rs

Lines changed: 1 addition & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -140,10 +140,9 @@ pub enum astencode_tag { // Reserves 0x40 -- 0x5f
140140
tag_table_moves_map = 0x52,
141141
tag_table_capture_map = 0x53,
142142
tag_table_unboxed_closure_type = 0x54,
143-
tag_table_upvar_borrow_map = 0x55,
144143
}
145144
static first_astencode_tag: uint = tag_ast as uint;
146-
static last_astencode_tag: uint = tag_table_upvar_borrow_map as uint;
145+
static last_astencode_tag: uint = tag_table_unboxed_closure_type as uint;
147146
impl astencode_tag {
148147
pub fn from_uint(value : uint) -> Option<astencode_tag> {
149148
let is_a_tag = first_astencode_tag <= value && value <= last_astencode_tag;

trunk/src/librustc/middle/astencode.rs

Lines changed: 1 addition & 42 deletions
Original file line numberDiff line numberDiff line change
@@ -18,7 +18,6 @@ use driver::session::Session;
1818
use metadata::decoder;
1919
use middle::def;
2020
use e = metadata::encoder;
21-
use middle::freevars;
2221
use middle::freevars::freevar_entry;
2322
use middle::region;
2423
use metadata::tydecode;
@@ -552,15 +551,6 @@ impl tr for freevar_entry {
552551
}
553552
}
554553

555-
impl tr for ty::UpvarBorrow {
556-
fn tr(&self, xcx: &ExtendedDecodeContext) -> ty::UpvarBorrow {
557-
ty::UpvarBorrow {
558-
kind: self.kind,
559-
region: self.region.tr(xcx)
560-
}
561-
}
562-
}
563-
564554
// ______________________________________________________________________
565555
// Encoding and decoding of MethodCallee
566556

@@ -1071,29 +1061,7 @@ fn encode_side_tables_for_id(ecx: &e::EncodeContext,
10711061
Ok(encode_freevar_entry(rbml_w, fv_entry))
10721062
});
10731063
})
1074-
});
1075-
1076-
for freevar in fv.iter() {
1077-
match freevars::get_capture_mode(tcx, id) {
1078-
freevars::CaptureByRef => {
1079-
rbml_w.tag(c::tag_table_upvar_borrow_map, |rbml_w| {
1080-
rbml_w.id(id);
1081-
rbml_w.tag(c::tag_table_val, |rbml_w| {
1082-
let var_id = freevar.def.def_id().node;
1083-
let upvar_id = ty::UpvarId {
1084-
var_id: var_id,
1085-
closure_expr_id: id
1086-
};
1087-
let upvar_borrow = tcx.upvar_borrow_map.borrow()
1088-
.get_copy(&upvar_id);
1089-
var_id.encode(rbml_w);
1090-
upvar_borrow.encode(rbml_w);
1091-
})
1092-
})
1093-
}
1094-
_ => {}
1095-
}
1096-
}
1064+
})
10971065
}
10981066

10991067
let lid = ast::DefId { krate: ast::LOCAL_CRATE, node: id };
@@ -1500,15 +1468,6 @@ fn decode_side_tables(xcx: &ExtendedDecodeContext,
15001468
}).unwrap().move_iter().collect();
15011469
dcx.tcx.freevars.borrow_mut().insert(id, fv_info);
15021470
}
1503-
c::tag_table_upvar_borrow_map => {
1504-
let var_id: ast::NodeId = Decodable::decode(val_dsr).unwrap();
1505-
let upvar_id = ty::UpvarId {
1506-
var_id: xcx.tr_id(var_id),
1507-
closure_expr_id: id
1508-
};
1509-
let ub: ty::UpvarBorrow = Decodable::decode(val_dsr).unwrap();
1510-
dcx.tcx.upvar_borrow_map.borrow_mut().insert(upvar_id, ub.tr(xcx));
1511-
}
15121471
c::tag_table_tcache => {
15131472
let pty = val_dsr.read_polytype(xcx);
15141473
let lid = ast::DefId { krate: ast::LOCAL_CRATE, node: id };

trunk/src/librustc/middle/freevars.rs

Lines changed: 5 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -14,7 +14,6 @@
1414
#![allow(non_camel_case_types)]
1515

1616
use middle::def;
17-
use middle::mem_categorization::Typer;
1817
use middle::resolve;
1918
use middle::ty;
2019
use util::nodemap::{DefIdSet, NodeMap, NodeSet};
@@ -148,8 +147,11 @@ pub fn with_freevars<T>(tcx: &ty::ctxt, fid: ast::NodeId, f: |&[freevar_entry]|
148147
}
149148
}
150149

151-
pub fn get_capture_mode<T: Typer>(tcx: &T, closure_expr_id: ast::NodeId) -> CaptureMode {
152-
let fn_ty = tcx.node_ty(closure_expr_id).ok().expect("couldn't find closure ty?");
150+
pub fn get_capture_mode(tcx: &ty::ctxt,
151+
closure_expr_id: ast::NodeId)
152+
-> CaptureMode
153+
{
154+
let fn_ty = ty::node_id_to_type(tcx, closure_expr_id);
153155
match ty::ty_closure_store(fn_ty) {
154156
ty::RegionTraitStore(..) => CaptureByRef,
155157
ty::UniqTraitStore => CaptureByValue

trunk/src/librustc/middle/trans/_match.rs

Lines changed: 3 additions & 50 deletions
Original file line numberDiff line numberDiff line change
@@ -189,9 +189,7 @@
189189
#![allow(non_camel_case_types)]
190190

191191
use back::abi;
192-
use mc = middle::mem_categorization;
193192
use driver::config::FullDebugInfo;
194-
use euv = middle::expr_use_visitor;
195193
use llvm;
196194
use llvm::{ValueRef, BasicBlockRef};
197195
use middle::const_eval;
@@ -1294,58 +1292,13 @@ pub fn trans_match<'a>(
12941292
trans_match_inner(bcx, match_expr.id, discr_expr, arms, dest)
12951293
}
12961294

1297-
/// Checks whether the binding in `discr` is assigned to anywhere in the expression `body`
1298-
fn is_discr_reassigned(bcx: &Block, discr: &ast::Expr, body: &ast::Expr) -> bool {
1299-
match discr.node {
1300-
ast::ExprPath(..) => match bcx.def(discr.id) {
1301-
def::DefArg(vid, _) | def::DefBinding(vid, _) |
1302-
def::DefLocal(vid, _) | def::DefUpvar(vid, _, _, _) => {
1303-
let mut rc = ReassignmentChecker {
1304-
node: vid,
1305-
reassigned: false
1306-
};
1307-
{
1308-
let mut visitor = euv::ExprUseVisitor::new(&mut rc, bcx);
1309-
visitor.walk_expr(body);
1310-
}
1311-
rc.reassigned
1312-
}
1313-
_ => false
1314-
},
1315-
_ => false
1316-
}
1317-
}
1318-
1319-
struct ReassignmentChecker {
1320-
node: ast::NodeId,
1321-
reassigned: bool
1322-
}
1323-
1324-
impl euv::Delegate for ReassignmentChecker {
1325-
fn consume(&mut self, _: ast::NodeId, _: Span, _: mc::cmt, _: euv::ConsumeMode) {}
1326-
fn consume_pat(&mut self, _: &ast::Pat, _: mc::cmt, _: euv::ConsumeMode) {}
1327-
fn borrow(&mut self, _: ast::NodeId, _: Span, _: mc::cmt, _: ty::Region,
1328-
_: ty::BorrowKind, _: euv::LoanCause) {}
1329-
fn decl_without_init(&mut self, _: ast::NodeId, _: Span) {}
1330-
1331-
fn mutate(&mut self, _: ast::NodeId, _: Span, cmt: mc::cmt, _: euv::MutateMode) {
1332-
match cmt.cat {
1333-
mc::cat_copied_upvar(mc::CopiedUpvar { upvar_id: vid, .. }) |
1334-
mc::cat_arg(vid) | mc::cat_local(vid) => self.reassigned = self.node == vid,
1335-
_ => {}
1336-
}
1337-
}
1338-
}
1339-
1340-
fn create_bindings_map(bcx: &Block, pat: Gc<ast::Pat>,
1341-
discr: &ast::Expr, body: &ast::Expr) -> BindingsMap {
1295+
fn create_bindings_map(bcx: &Block, pat: Gc<ast::Pat>) -> BindingsMap {
13421296
// Create the bindings map, which is a mapping from each binding name
13431297
// to an alloca() that will be the value for that local variable.
13441298
// Note that we use the names because each binding will have many ids
13451299
// from the various alternatives.
13461300
let ccx = bcx.ccx();
13471301
let tcx = bcx.tcx();
1348-
let reassigned = is_discr_reassigned(bcx, discr, body);
13491302
let mut bindings_map = HashMap::new();
13501303
pat_bindings(&tcx.def_map, &*pat, |bm, p_id, span, path1| {
13511304
let ident = path1.node;
@@ -1357,7 +1310,7 @@ fn create_bindings_map(bcx: &Block, pat: Gc<ast::Pat>,
13571310
let trmode;
13581311
match bm {
13591312
ast::BindByValue(_)
1360-
if !ty::type_moves_by_default(tcx, variable_ty) || reassigned => {
1313+
if !ty::type_moves_by_default(tcx, variable_ty) => {
13611314
llmatch = alloca_no_lifetime(bcx,
13621315
llvariable_ty.ptr_to(),
13631316
"__llmatch");
@@ -1418,7 +1371,7 @@ fn trans_match_inner<'a>(scope_cx: &'a Block<'a>,
14181371
let arm_datas: Vec<ArmData> = arms.iter().map(|arm| ArmData {
14191372
bodycx: fcx.new_id_block("case_body", arm.body.id),
14201373
arm: arm,
1421-
bindings_map: create_bindings_map(bcx, *arm.pats.get(0), discr_expr, &*arm.body)
1374+
bindings_map: create_bindings_map(bcx, *arm.pats.get(0))
14221375
}).collect();
14231376

14241377
let mut static_inliner = StaticInliner { tcx: scope_cx.tcx() };

trunk/src/librustc/middle/trans/common.rs

Lines changed: 0 additions & 31 deletions
Original file line numberDiff line numberDiff line change
@@ -16,7 +16,6 @@ use driver::session::Session;
1616
use llvm;
1717
use llvm::{ValueRef, BasicBlockRef, BuilderRef};
1818
use llvm::{True, False, Bool};
19-
use mc = middle::mem_categorization;
2019
use middle::def;
2120
use middle::lang_items::LangItem;
2221
use middle::subst;
@@ -482,36 +481,6 @@ impl<'a> Block<'a> {
482481
}
483482
}
484483

485-
impl<'a> mc::Typer for Block<'a> {
486-
fn tcx<'a>(&'a self) -> &'a ty::ctxt {
487-
self.tcx()
488-
}
489-
490-
fn node_ty(&self, id: ast::NodeId) -> mc::McResult<ty::t> {
491-
Ok(node_id_type(self, id))
492-
}
493-
494-
fn node_method_ty(&self, method_call: typeck::MethodCall) -> Option<ty::t> {
495-
self.tcx().method_map.borrow().find(&method_call).map(|method| method.ty)
496-
}
497-
498-
fn adjustments<'a>(&'a self) -> &'a RefCell<NodeMap<ty::AutoAdjustment>> {
499-
&self.tcx().adjustments
500-
}
501-
502-
fn is_method_call(&self, id: ast::NodeId) -> bool {
503-
self.tcx().method_map.borrow().contains_key(&typeck::MethodCall::expr(id))
504-
}
505-
506-
fn temporary_scope(&self, rvalue_id: ast::NodeId) -> Option<ast::NodeId> {
507-
self.tcx().region_maps.temporary_scope(rvalue_id)
508-
}
509-
510-
fn upvar_borrow(&self, upvar_id: ty::UpvarId) -> ty::UpvarBorrow {
511-
self.tcx().upvar_borrow_map.borrow().get_copy(&upvar_id)
512-
}
513-
}
514-
515484
pub struct Result<'a> {
516485
pub bcx: &'a Block<'a>,
517486
pub val: ValueRef

trunk/src/librustc/middle/ty.rs

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -539,7 +539,7 @@ pub struct UpvarId {
539539
pub closure_expr_id: ast::NodeId,
540540
}
541541

542-
#[deriving(Clone, PartialEq, Eq, Hash, Show, Encodable, Decodable)]
542+
#[deriving(Clone, PartialEq, Eq, Hash, Show)]
543543
pub enum BorrowKind {
544544
/// Data must be immutable and is aliasable.
545545
ImmBorrow,
@@ -634,7 +634,7 @@ pub enum BorrowKind {
634634
* the closure, so sometimes it is necessary for them to be larger
635635
* than the closure lifetime itself.
636636
*/
637-
#[deriving(PartialEq, Clone, Encodable, Decodable)]
637+
#[deriving(PartialEq, Clone)]
638638
pub struct UpvarBorrow {
639639
pub kind: BorrowKind,
640640
pub region: ty::Region,

trunk/src/libserialize/serialize.rs

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -571,6 +571,8 @@ impl<E, D: Decoder<E>, T: Decodable<D, E>> Decodable<D, E> for RefCell<T> {
571571

572572
// ___________________________________________________________________________
573573
// Helper routines
574+
//
575+
// In some cases, these should eventually be coded as traits.
574576

575577
pub trait EncoderHelpers<E> {
576578
fn emit_from_vec<T>(&mut self,

trunk/src/test/bench/rt-messaging-ping-pong.rs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -22,7 +22,7 @@ use std::uint;
2222

2323
// This is a simple bench that creates M pairs of tasks. These
2424
// tasks ping-pong back and forth over a pair of streams. This is a
25-
// canonical message-passing benchmark as it heavily strains message
25+
// cannonical message-passing benchmark as it heavily strains message
2626
// passing and almost nothing else.
2727

2828
fn ping_pong_bench(n: uint, m: uint) {

trunk/src/test/bench/shootout-meteor.rs

Lines changed: 6 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -101,7 +101,7 @@ impl<'a, T> Iterator<&'a T> for ListIterator<'a, T> {
101101
// every possible transformations (the 6 rotations with their
102102
// corresponding mirrored piece), with, as minimum coordinates, (0,
103103
// 0). If all is false, only generate half of the possibilities (used
104-
// to break the symmetry of the board).
104+
// to break the symetry of the board).
105105
fn transform(piece: Vec<(int, int)> , all: bool) -> Vec<Vec<(int, int)>> {
106106
let mut res: Vec<Vec<(int, int)>> =
107107
// rotations
@@ -124,9 +124,9 @@ fn transform(piece: Vec<(int, int)> , all: bool) -> Vec<Vec<(int, int)>> {
124124
res
125125
}
126126

127-
// A mask is a piece somewhere on the board. It is represented as a
127+
// A mask is a piece somewere on the board. It is represented as a
128128
// u64: for i in the first 50 bits, m[i] = 1 if the cell at (i/5, i%5)
129-
// is occupied. m[50 + id] = 1 if the identifier of the piece is id.
129+
// is occuped. m[50 + id] = 1 if the identifier of the piece is id.
130130

131131
// Takes a piece with minimum coordinate (0, 0) (as generated by
132132
// transform). Returns the corresponding mask if p translated by (dy,
@@ -159,7 +159,7 @@ fn make_masks() -> Vec<Vec<Vec<u64> > > {
159159
vec!((0i,0i),(0,1),(0,2),(1,2),(1,3)),
160160
vec!((0i,0i),(0,1),(0,2),(0,3),(1,2)));
161161

162-
// To break the central symmetry of the problem, every
162+
// To break the central symetry of the problem, every
163163
// transformation must be taken except for one piece (piece 3
164164
// here).
165165
let transforms: Vec<Vec<Vec<(int, int)>>> =
@@ -263,7 +263,7 @@ impl Data {
263263
// Records a new found solution. Returns false if the search must be
264264
// stopped.
265265
fn handle_sol(raw_sol: &List<u64>, data: &mut Data) {
266-
// because we break the symmetry, 2 solutions correspond to a call
266+
// because we break the symetry, 2 solutions correspond to a call
267267
// to this method: the normal solution, and the same solution in
268268
// reverse order, i.e. the board rotated by half a turn.
269269
data.nb += 2;
@@ -298,7 +298,7 @@ fn search(
298298
for id in range(0u, 10).filter(|id| board & (1 << (id + 50)) == 0) {
299299
// for each mask that fits on the board
300300
for m in masks_at.get(id).iter().filter(|&m| board & *m == 0) {
301-
// This check is too costly.
301+
// This check is too costy.
302302
//if is_board_unfeasible(board | m, masks) {continue;}
303303
search(masks, board | *m, i + 1, Cons(*m, &cur), data);
304304
}

trunk/src/test/bench/shootout-spectralnorm.rs

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -36,8 +36,8 @@ fn dot(v: &[f64], u: &[f64]) -> f64 {
3636

3737
fn mult(v: Arc<RWLock<Vec<f64>>>, out: Arc<RWLock<Vec<f64>>>,
3838
f: fn(&Vec<f64>, uint) -> f64) {
39-
// We launch in different tasks the work to be done. To finish
40-
// this function, we need to wait for the completion of every
39+
// We lanch in different tasks the work to be done. To finish
40+
// this fuction, we need to wait for the completion of every
4141
// tasks. To do that, we give to each tasks a wait_chan that we
4242
// drop at the end of the work. At the end of this function, we
4343
// wait until the channel hang up.

trunk/src/test/compile-fail/borrowck-forbid-static-unsafe-interior.rs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -9,7 +9,7 @@
99
// except according to those terms.
1010

1111
// Verify that it is not possible to take the address of
12-
// static items with unsafe interior.
12+
// static items with usnafe interior.
1313

1414
use std::kinds::marker;
1515
use std::cell::UnsafeCell;

trunk/src/test/compile-fail/borrowck-managed-pointer-deref-scope.rs

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -8,8 +8,8 @@
88
// option. This file may not be copied, modified, or distributed
99
// except according to those terms.
1010

11-
// Verify that managed pointers scope is treated like owned pointers.
12-
// regression test for #11586
11+
// Verify that managed pointers scope is treated like ownoed pointers.
12+
// regresion test for #11586
1313

1414

1515
use std::gc::{GC, Gc};

0 commit comments

Comments
 (0)