Skip to content

Commit ced515b

Browse files
committed
---
yaml --- r: 128702 b: refs/heads/try c: 0e47f94 h: refs/heads/master v: v3
1 parent d53aa36 commit ced515b

File tree

10 files changed

+13
-235
lines changed

10 files changed

+13
-235
lines changed

[refs]

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -2,7 +2,7 @@
22
refs/heads/master: 07d86b46a949a94223da714e35b343243e4ecce4
33
refs/heads/snap-stage1: e33de59e47c5076a89eadeb38f4934f58a3618a6
44
refs/heads/snap-stage3: a86d9ad15e339ab343a12513f9c90556f677b9ca
5-
refs/heads/try: 69c58bcf6f8392c078e5f4ea0281e904cd8e8afb
5+
refs/heads/try: 0e47f9481eed2b92b0d43325dc97917e2f3329d8
66
refs/tags/release-0.1: 1f5c5126e96c79d22cb7862f75304136e204f105
77
refs/heads/ndm: f3868061cd7988080c30d6d5bf352a5a5fe2460b
88
refs/heads/try2: 147ecfdd8221e4a4d4e090486829a06da1e0ca3c

branches/try/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;

branches/try/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 };

branches/try/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

branches/try/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() };

branches/try/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

branches/try/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,

branches/try/src/libserialize/serialize.rs

Lines changed: 0 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -571,8 +571,6 @@ 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.
576574

577575
pub trait EncoderHelpers<E> {
578576
fn emit_from_vec<T>(&mut self,

branches/try/src/test/run-pass/issue-15571.rs

Lines changed: 0 additions & 64 deletions
This file was deleted.

branches/try/src/test/run-pass/issue-16151.rs

Lines changed: 0 additions & 38 deletions
This file was deleted.

0 commit comments

Comments
 (0)