Skip to content

Commit b467092

Browse files
committed
---
yaml --- r: 132650 b: refs/heads/dist-snap c: 2016742 h: refs/heads/master v: v3
1 parent 7d9c1ff commit b467092

40 files changed

+55
-279
lines changed

[refs]

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -6,7 +6,7 @@ refs/heads/try: 457a3c991d79b971be07fce75f9d0c12848fb37c
66
refs/tags/release-0.1: 1f5c5126e96c79d22cb7862f75304136e204f105
77
refs/heads/ndm: f3868061cd7988080c30d6d5bf352a5a5fe2460b
88
refs/heads/try2: 147ecfdd8221e4a4d4e090486829a06da1e0ca3c
9-
refs/heads/dist-snap: 23276f9dfea081666aa565443351c06d76750794
9+
refs/heads/dist-snap: 2016742e072ab0e15e04db881c3a82382f50013b
1010
refs/tags/release-0.2: c870d2dffb391e14efb05aa27898f1f6333a9596
1111
refs/tags/release-0.3: b5f0d0f648d9a6153664837026ba1be43d3e2503
1212
refs/heads/try3: 9387340aab40a73e8424c48fd42f0c521a4875c0

branches/dist-snap/CONTRIBUTING.md

Lines changed: 1 addition & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -16,8 +16,7 @@ please do two things:
1616

1717
2. Run the full Rust test suite with the `make check` command. You're
1818
not off the hook even if you just stick to documentation; code
19-
examples in the docs are tested as well! Although for simple
20-
wording or grammar fixes, this is probably unnecessary.
19+
examples in the docs are tested as well!
2120

2221
Pull requests will be treated as "review requests", and we will give
2322
feedback we expect to see corrected on

branches/dist-snap/mk/main.mk

Lines changed: 0 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -139,10 +139,6 @@ endif
139139
RUSTFLAGS_STAGE0 += -C prefer-dynamic
140140
RUSTFLAGS_STAGE1 += -C prefer-dynamic
141141

142-
# Landing pads require a lot of codegen. We can get through bootstrapping faster
143-
# by not emitting them.
144-
RUSTFLAGS_STAGE0 += -Z no-landing-pads
145-
146142
# platform-specific auto-configuration
147143
include $(CFG_SRC_DIR)mk/platform.mk
148144

branches/dist-snap/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 {

branches/dist-snap/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/dist-snap/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/dist-snap/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/dist-snap/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/dist-snap/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/dist-snap/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/dist-snap/src/librustdoc/html/layout.rs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -106,7 +106,7 @@ r##"<!DOCTYPE html>
106106
</p>
107107
<p>
108108
Accepted types are: <code>fn</code>, <code>mod</code>,
109-
<code>struct</code>, <code>enum</code>,
109+
<code>struct</code> (or <code>str</code>), <code>enum</code>,
110110
<code>trait</code>, <code>typedef</code> (or
111111
<code>tdef</code>).
112112
</p>

branches/dist-snap/src/librustdoc/html/static/main.js

Lines changed: 5 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -368,19 +368,18 @@
368368
}
369369

370370
function getQuery() {
371-
var matches, type, query, raw = $('.search-input').val();
372-
query = raw;
371+
var matches, type, query = $('.search-input').val();
373372

374-
matches = query.match(/^(fn|mod|struct|enum|trait|t(ype)?d(ef)?)\s*:\s*/i);
373+
matches = query.match(/^(fn|mod|str(uct)?|enum|trait|t(ype)?d(ef)?)\s*:\s*/i);
375374
if (matches) {
376375
type = matches[1].replace(/^td$/, 'typedef')
376+
.replace(/^str$/, 'struct')
377377
.replace(/^tdef$/, 'typedef')
378378
.replace(/^typed$/, 'typedef');
379379
query = query.substring(matches[0].length);
380380
}
381381

382382
return {
383-
raw: raw,
384383
query: query,
385384
type: type,
386385
id: query + type,
@@ -536,10 +535,10 @@
536535
if (browserSupportsHistoryApi()) {
537536
if (!history.state && !params.search) {
538537
history.pushState(query, "", "?search=" +
539-
encodeURIComponent(query.raw));
538+
encodeURIComponent(query.query));
540539
} else {
541540
history.replaceState(query, "", "?search=" +
542-
encodeURIComponent(query.raw));
541+
encodeURIComponent(query.query));
543542
}
544543
}
545544

branches/dist-snap/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,

branches/dist-snap/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-
// cannonical message-passing benchmark as it heavily strains message
25+
// canonical message-passing benchmark as it heavily strains message
2626
// passing and almost nothing else.
2727

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

0 commit comments

Comments
 (0)