Skip to content

Commit 394df29

Browse files
committed
---
yaml --- r: 148717 b: refs/heads/try2 c: 0d0205a h: refs/heads/master i: 148715: 0ae9292 v: v3
1 parent 445c2e7 commit 394df29

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

63 files changed

+215
-670
lines changed

[refs]

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -5,7 +5,7 @@ refs/heads/snap-stage3: 78a7676898d9f80ab540c6df5d4c9ce35bb50463
55
refs/heads/try: 519addf6277dbafccbb4159db4b710c37eaa2ec5
66
refs/tags/release-0.1: 1f5c5126e96c79d22cb7862f75304136e204f105
77
refs/heads/ndm: f3868061cd7988080c30d6d5bf352a5a5fe2460b
8-
refs/heads/try2: 0a0f87b7b83bb6b96a465c21ca6280cb48c851df
8+
refs/heads/try2: 0d0205a577594b1be55230e07ab93ee3063e008c
99
refs/heads/dist-snap: ba4081a5a8573875fed17545846f6f6902c8ba8d
1010
refs/tags/release-0.2: c870d2dffb391e14efb05aa27898f1f6333a9596
1111
refs/tags/release-0.3: b5f0d0f648d9a6153664837026ba1be43d3e2503

branches/try2/src/libextra/arc.rs

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
// Copyright 2012-2014 The Rust Project Developers. See the COPYRIGHT
1+
// Copyright 2012-2013 The Rust Project Developers. See the COPYRIGHT
22
// file at the top-level directory of this distribution and at
33
// http://rust-lang.org/COPYRIGHT.
44
//
@@ -47,6 +47,7 @@ use sync::{Mutex, RWLock};
4747
use std::cast;
4848
use std::sync::arc::UnsafeArc;
4949
use std::task;
50+
use std::borrow;
5051

5152
/// As sync::condvar, a mechanism for unlock-and-descheduling and signaling.
5253
pub struct Condvar<'a> {
@@ -464,7 +465,7 @@ impl<T:Freeze + Send> RWArc<T> {
464465
// of this cast is removing the mutability.)
465466
let new_data = data;
466467
// Downgrade ensured the token belonged to us. Just a sanity check.
467-
assert!((&(*state).data as *T as uint) == (new_data as *mut T as uint));
468+
assert!(borrow::ref_eq(&(*state).data, new_data));
468469
// Produce new token
469470
RWReadMode {
470471
data: new_data,

branches/try2/src/libextra/sync.rs

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
// Copyright 2012-2014 The Rust Project Developers. See the COPYRIGHT
1+
// Copyright 2012-2013 The Rust Project Developers. See the COPYRIGHT
22
// file at the top-level directory of this distribution and at
33
// http://rust-lang.org/COPYRIGHT.
44
//
@@ -18,6 +18,7 @@
1818
*/
1919

2020

21+
use std::borrow;
2122
use std::comm;
2223
use std::unstable::sync::Exclusive;
2324
use std::sync::arc::UnsafeArc;
@@ -633,7 +634,7 @@ impl RWLock {
633634
/// To be called inside of the write_downgrade block.
634635
pub fn downgrade<'a>(&self, token: RWLockWriteMode<'a>)
635636
-> RWLockReadMode<'a> {
636-
if !((self as *RWLock) == (token.lock as *RWLock)) {
637+
if !borrow::ref_eq(self, token.lock) {
637638
fail!("Can't downgrade() with a different rwlock's write_mode!");
638639
}
639640
unsafe {

branches/try2/src/librustc/front/feature_gate.rs

Lines changed: 0 additions & 15 deletions
Original file line numberDiff line numberDiff line change
@@ -48,7 +48,6 @@ static KNOWN_FEATURES: &'static [(&'static str, Status)] = &[
4848
("log_syntax", Active),
4949
("trace_macros", Active),
5050
("simd", Active),
51-
("default_type_params", Active),
5251

5352
// These are used to test this portion of the compiler, they don't actually
5453
// mean anything
@@ -235,20 +234,6 @@ impl Visitor<()> for Context {
235234
}
236235
visit::walk_expr(self, e, ());
237236
}
238-
239-
fn visit_generics(&mut self, generics: &ast::Generics, _: ()) {
240-
for type_parameter in generics.ty_params.iter() {
241-
match type_parameter.default {
242-
Some(ty) => {
243-
self.gate_feature("default_type_params", ty.span,
244-
"default type parameters are \
245-
experimental and possibly buggy");
246-
}
247-
None => {}
248-
}
249-
}
250-
visit::walk_generics(self, generics, ());
251-
}
252237
}
253238

254239
pub fn check_crate(sess: Session, crate: &ast::Crate) {

branches/try2/src/librustc/metadata/tydecode.rs

Lines changed: 3 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -573,12 +573,9 @@ pub fn parse_type_param_def_data(data: &[u8], start: uint,
573573
}
574574

575575
fn parse_type_param_def(st: &mut PState, conv: conv_did) -> ty::TypeParameterDef {
576-
ty::TypeParameterDef {
577-
ident: parse_ident(st, ':'),
578-
def_id: parse_def(st, NominalType, |x,y| conv(x,y)),
579-
bounds: @parse_bounds(st, |x,y| conv(x,y)),
580-
default: parse_opt(st, |st| parse_ty(st, |x,y| conv(x,y)))
581-
}
576+
ty::TypeParameterDef {ident: parse_ident(st, ':'),
577+
def_id: parse_def(st, NominalType, |x,y| conv(x,y)),
578+
bounds: @parse_bounds(st, |x,y| conv(x,y))}
582579
}
583580

584581
fn parse_bounds(st: &mut PState, conv: conv_did) -> ty::ParamBounds {

branches/try2/src/librustc/metadata/tyencode.rs

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -421,5 +421,4 @@ fn enc_bounds(w: &mut MemWriter, cx: @ctxt, bs: &ty::ParamBounds) {
421421
pub fn enc_type_param_def(w: &mut MemWriter, cx: @ctxt, v: &ty::TypeParameterDef) {
422422
mywrite!(w, "{}:{}|", cx.tcx.sess.str_of(v.ident), (cx.ds)(v.def_id));
423423
enc_bounds(w, cx, v.bounds);
424-
enc_opt(w, v.default, |w, t| enc_ty(w, cx, t));
425424
}

branches/try2/src/librustc/middle/lint.rs

Lines changed: 0 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -86,7 +86,6 @@ pub enum Lint {
8686
AttributeUsage,
8787
UnknownFeatures,
8888
UnknownCrateType,
89-
DefaultTypeParamUsage,
9089

9190
ManagedHeapMemory,
9291
OwnedHeapMemory,
@@ -360,7 +359,6 @@ static lint_table: &'static [(&'static str, LintSpec)] = &[
360359
desc: "unknown features found in crate-level #[feature] directives",
361360
default: deny,
362361
}),
363-
364362
("unknown_crate_type",
365363
LintSpec {
366364
lint: UnknownCrateType,
@@ -381,13 +379,6 @@ static lint_table: &'static [(&'static str, LintSpec)] = &[
381379
desc: "unused result of an expression in a statement",
382380
default: allow,
383381
}),
384-
385-
("default_type_param_usage",
386-
LintSpec {
387-
lint: DefaultTypeParamUsage,
388-
desc: "prevents explicitly setting a type parameter with a default",
389-
default: deny,
390-
}),
391382
];
392383

393384
/*

branches/try2/src/librustc/middle/resolve.rs

Lines changed: 0 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -3931,10 +3931,6 @@ impl Resolver {
39313931
for bound in type_parameter.bounds.iter() {
39323932
self.resolve_type_parameter_bound(type_parameter.id, bound);
39333933
}
3934-
match type_parameter.default {
3935-
Some(ty) => self.resolve_type(ty),
3936-
None => {}
3937-
}
39383934
}
39393935
}
39403936

branches/try2/src/librustc/middle/subst.rs

Lines changed: 1 addition & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -164,8 +164,7 @@ impl Subst for ty::TypeParameterDef {
164164
ty::TypeParameterDef {
165165
ident: self.ident,
166166
def_id: self.def_id,
167-
bounds: self.bounds.subst(tcx, substs),
168-
default: self.default.map(|x| x.subst(tcx, substs))
167+
bounds: self.bounds.subst(tcx, substs)
169168
}
170169
}
171170
}

branches/try2/src/librustc/middle/trans/base.rs

Lines changed: 4 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -30,7 +30,7 @@ use driver::session;
3030
use driver::session::Session;
3131
use driver::driver::{CrateAnalysis, CrateTranslation};
3232
use lib::llvm::{ModuleRef, ValueRef, BasicBlockRef};
33-
use lib::llvm::{llvm, True, Vector};
33+
use lib::llvm::{llvm, True};
3434
use lib;
3535
use metadata::common::LinkMeta;
3636
use metadata::{csearch, encoder};
@@ -376,7 +376,7 @@ pub fn malloc_raw_dyn<'a>(
376376

377377
// Get the tydesc for the body:
378378
let static_ti = get_tydesc(ccx, t);
379-
glue::lazily_emit_tydesc_glue(ccx, abi::tydesc_field_drop_glue, static_ti);
379+
glue::lazily_emit_all_tydesc_glue(ccx, static_ti);
380380

381381
// Allocate space:
382382
let tydesc = PointerCast(bcx, static_ti.tydesc, Type::i8p());
@@ -827,10 +827,8 @@ pub fn cast_shift_rhs(op: ast::BinOp,
827827
// Shifts may have any size int on the rhs
828828
unsafe {
829829
if ast_util::is_shift_binop(op) {
830-
let mut rhs_llty = val_ty(rhs);
831-
let mut lhs_llty = val_ty(lhs);
832-
if rhs_llty.kind() == Vector { rhs_llty = rhs_llty.element_type() }
833-
if lhs_llty.kind() == Vector { lhs_llty = lhs_llty.element_type() }
830+
let rhs_llty = val_ty(rhs);
831+
let lhs_llty = val_ty(lhs);
834832
let rhs_sz = llvm::LLVMGetIntTypeWidth(rhs_llty.to_ref());
835833
let lhs_sz = llvm::LLVMGetIntTypeWidth(lhs_llty.to_ref());
836834
if lhs_sz < rhs_sz {

branches/try2/src/librustc/middle/trans/debuginfo.rs

Lines changed: 5 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -1646,7 +1646,7 @@ fn set_members_of_composite_type(cx: &CrateContext,
16461646
.map(|(i, member_description)| {
16471647
let (member_size, member_align) = size_and_align_of(cx, member_description.llvm_type);
16481648
let member_offset = match member_description.offset {
1649-
FixedMemberOffset { bytes } => bytes as u64,
1649+
FixedMemberOffset { bytes } => bytes,
16501650
ComputedMemberOffset => machine::llelement_offset(cx, composite_llvm_type, i)
16511651
};
16521652

@@ -1815,7 +1815,7 @@ fn fixed_vec_metadata(cx: &CrateContext,
18151815
return unsafe {
18161816
llvm::LLVMDIBuilderCreateArrayType(
18171817
DIB(cx),
1818-
bytes_to_bits(element_type_size * (len as u64)),
1818+
bytes_to_bits(element_type_size * len),
18191819
bytes_to_bits(element_type_align),
18201820
element_type_metadata,
18211821
subscripts)
@@ -2000,8 +2000,7 @@ fn trait_metadata(cx: &CrateContext,
20002000
ppaux::mutability_to_str(mutability) +
20012001
token::ident_to_str(&ident);
20022002
// Add type and region parameters
2003-
let name = ppaux::parameterized(cx.tcx, name, &substs.regions,
2004-
substs.tps, def_id, true);
2003+
let name = ppaux::parameterized(cx.tcx, name, &substs.regions, substs.tps);
20052004

20062005
let (containing_scope, definition_span) =
20072006
get_namespace_and_span_for_item(cx, def_id, usage_site_span);
@@ -2211,11 +2210,11 @@ fn span_start(cx: &CrateContext, span: Span) -> codemap::Loc {
22112210
cx.sess.codemap.lookup_char_pos(span.lo)
22122211
}
22132212

2214-
fn size_and_align_of(cx: &CrateContext, llvm_type: Type) -> (u64, u64) {
2213+
fn size_and_align_of(cx: &CrateContext, llvm_type: Type) -> (uint, uint) {
22152214
(machine::llsize_of_alloc(cx, llvm_type), machine::llalign_of_min(cx, llvm_type))
22162215
}
22172216

2218-
fn bytes_to_bits(bytes: u64) -> c_ulonglong {
2217+
fn bytes_to_bits(bytes: uint) -> c_ulonglong {
22192218
(bytes * 8) as c_ulonglong
22202219
}
22212220

branches/try2/src/librustc/middle/trans/foreign.rs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -341,7 +341,7 @@ pub fn trans_native_call<'a>(
341341
let llalign = cmp::min(llforeign_align, llrust_align);
342342
debug!("llrust_size={:?}", llrust_size);
343343
base::call_memcpy(bcx, llretptr_i8, llscratch_i8,
344-
C_uint(ccx, llrust_size as uint), llalign as u32);
344+
C_uint(ccx, llrust_size), llalign as u32);
345345
}
346346
}
347347

branches/try2/src/librustc/middle/trans/glue.rs

Lines changed: 12 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -131,7 +131,7 @@ fn simplified_glue_type(tcx: ty::ctxt, field: uint, t: ty::t) -> ty::t {
131131
t
132132
}
133133

134-
pub fn lazily_emit_tydesc_glue(ccx: @CrateContext, field: uint, ti: @tydesc_info) {
134+
fn lazily_emit_tydesc_glue(ccx: @CrateContext, field: uint, ti: @tydesc_info) {
135135
let _icx = push_ctxt("lazily_emit_tydesc_glue");
136136

137137
let simpl = simplified_glue_type(ccx.tcx, field, ti.ty);
@@ -367,9 +367,17 @@ fn make_drop_glue<'a>(bcx: &'a Block<'a>, v0: ValueRef, t: ty::t) -> &'a Block<'
367367
let lluniquevalue = GEPi(bcx, v0, [0, abi::trt_field_box]);
368368
// Only drop the value when it is non-null
369369
with_cond(bcx, IsNotNull(bcx, Load(bcx, lluniquevalue)), |bcx| {
370-
let lldtor_ptr = Load(bcx, GEPi(bcx, v0, [0, abi::trt_field_vtable]));
371-
let lldtor = Load(bcx, lldtor_ptr);
372-
Call(bcx, lldtor, [PointerCast(bcx, lluniquevalue, Type::i8p())], []);
370+
let llvtable = Load(bcx, GEPi(bcx, v0, [0, abi::trt_field_vtable]));
371+
372+
// Cast the vtable to a pointer to a pointer to a tydesc.
373+
let llvtable = PointerCast(bcx, llvtable,
374+
ccx.tydesc_type.ptr_to().ptr_to());
375+
let lltydesc = Load(bcx, llvtable);
376+
call_tydesc_glue_full(bcx,
377+
lluniquevalue,
378+
lltydesc,
379+
abi::tydesc_field_drop_glue,
380+
None);
373381
bcx
374382
})
375383
}

branches/try2/src/librustc/middle/trans/intrinsic.rs

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -247,7 +247,7 @@ pub fn trans_intrinsic(ccx: @CrateContext,
247247
"size_of" => {
248248
let tp_ty = substs.tys[0];
249249
let lltp_ty = type_of::type_of(ccx, tp_ty);
250-
Ret(bcx, C_uint(ccx, machine::llsize_of_real(ccx, lltp_ty) as uint));
250+
Ret(bcx, C_uint(ccx, machine::llsize_of_real(ccx, lltp_ty)));
251251
}
252252
"move_val_init" => {
253253
// Create a datum reflecting the value being moved.
@@ -266,12 +266,12 @@ pub fn trans_intrinsic(ccx: @CrateContext,
266266
"min_align_of" => {
267267
let tp_ty = substs.tys[0];
268268
let lltp_ty = type_of::type_of(ccx, tp_ty);
269-
Ret(bcx, C_uint(ccx, machine::llalign_of_min(ccx, lltp_ty) as uint));
269+
Ret(bcx, C_uint(ccx, machine::llalign_of_min(ccx, lltp_ty)));
270270
}
271271
"pref_align_of"=> {
272272
let tp_ty = substs.tys[0];
273273
let lltp_ty = type_of::type_of(ccx, tp_ty);
274-
Ret(bcx, C_uint(ccx, machine::llalign_of_pref(ccx, lltp_ty) as uint));
274+
Ret(bcx, C_uint(ccx, machine::llalign_of_pref(ccx, lltp_ty)));
275275
}
276276
"get_tydesc" => {
277277
let tp_ty = substs.tys[0];
@@ -337,7 +337,7 @@ pub fn trans_intrinsic(ccx: @CrateContext,
337337
_ => fail!("transmute has non-expr arg"),
338338
}
339339
};
340-
let pluralize = |n| if 1 == n { "" } else { "s" };
340+
let pluralize = |n| if 1u == n { "" } else { "s" };
341341
ccx.sess.span_fatal(sp,
342342
format!("transmute called on types with \
343343
different sizes: {} ({} bit{}) to \

branches/try2/src/librustc/middle/trans/machine.rs

Lines changed: 17 additions & 17 deletions
Original file line numberDiff line numberDiff line change
@@ -21,17 +21,17 @@ use middle::trans::type_::Type;
2121
// compute sizeof / alignof
2222

2323
// Returns the number of bytes clobbered by a Store to this type.
24-
pub fn llsize_of_store(cx: &CrateContext, ty: Type) -> u64 {
24+
pub fn llsize_of_store(cx: &CrateContext, ty: Type) -> uint {
2525
unsafe {
26-
return llvm::LLVMStoreSizeOfType(cx.td.lltd, ty.to_ref()) as u64;
26+
return llvm::LLVMStoreSizeOfType(cx.td.lltd, ty.to_ref()) as uint;
2727
}
2828
}
2929

3030
// Returns the number of bytes between successive elements of type T in an
3131
// array of T. This is the "ABI" size. It includes any ABI-mandated padding.
32-
pub fn llsize_of_alloc(cx: &CrateContext, ty: Type) -> u64 {
32+
pub fn llsize_of_alloc(cx: &CrateContext, ty: Type) -> uint {
3333
unsafe {
34-
return llvm::LLVMABISizeOfType(cx.td.lltd, ty.to_ref()) as u64;
34+
return llvm::LLVMABISizeOfType(cx.td.lltd, ty.to_ref()) as uint;
3535
}
3636
}
3737

@@ -43,22 +43,22 @@ pub fn llsize_of_alloc(cx: &CrateContext, ty: Type) -> u64 {
4343
// that LLVM *does* distinguish between e.g. a 1-bit value and an 8-bit value
4444
// at the codegen level! In general you should prefer `llbitsize_of_real`
4545
// below.
46-
pub fn llsize_of_real(cx: &CrateContext, ty: Type) -> u64 {
46+
pub fn llsize_of_real(cx: &CrateContext, ty: Type) -> uint {
4747
unsafe {
48-
let nbits = llvm::LLVMSizeOfTypeInBits(cx.td.lltd, ty.to_ref()) as u64;
49-
if nbits & 7 != 0 {
48+
let nbits = llvm::LLVMSizeOfTypeInBits(cx.td.lltd, ty.to_ref()) as uint;
49+
if nbits & 7u != 0u {
5050
// Not an even number of bytes, spills into "next" byte.
51-
1 + (nbits >> 3)
51+
1u + (nbits >> 3)
5252
} else {
5353
nbits >> 3
5454
}
5555
}
5656
}
5757

5858
/// Returns the "real" size of the type in bits.
59-
pub fn llbitsize_of_real(cx: &CrateContext, ty: Type) -> u64 {
59+
pub fn llbitsize_of_real(cx: &CrateContext, ty: Type) -> uint {
6060
unsafe {
61-
llvm::LLVMSizeOfTypeInBits(cx.td.lltd, ty.to_ref()) as u64
61+
llvm::LLVMSizeOfTypeInBits(cx.td.lltd, ty.to_ref()) as uint
6262
}
6363
}
6464

@@ -71,7 +71,7 @@ pub fn llsize_of(cx: &CrateContext, ty: Type) -> ValueRef {
7171
// there's no need for that contrivance. The instruction
7272
// selection DAG generator would flatten that GEP(1) node into a
7373
// constant of the type's alloc size, so let's save it some work.
74-
return C_uint(cx, llsize_of_alloc(cx, ty) as uint);
74+
return C_uint(cx, llsize_of_alloc(cx, ty));
7575
}
7676

7777
// Returns the "default" size of t (see above), or 1 if the size would
@@ -89,18 +89,18 @@ pub fn nonzero_llsize_of(cx: &CrateContext, ty: Type) -> ValueRef {
8989
// The preferred alignment may be larger than the alignment used when
9090
// packing the type into structs. This will be used for things like
9191
// allocations inside a stack frame, which LLVM has a free hand in.
92-
pub fn llalign_of_pref(cx: &CrateContext, ty: Type) -> u64 {
92+
pub fn llalign_of_pref(cx: &CrateContext, ty: Type) -> uint {
9393
unsafe {
94-
return llvm::LLVMPreferredAlignmentOfType(cx.td.lltd, ty.to_ref()) as u64;
94+
return llvm::LLVMPreferredAlignmentOfType(cx.td.lltd, ty.to_ref()) as uint;
9595
}
9696
}
9797

9898
// Returns the minimum alignment of a type required by the platform.
9999
// This is the alignment that will be used for struct fields, arrays,
100100
// and similar ABI-mandated things.
101-
pub fn llalign_of_min(cx: &CrateContext, ty: Type) -> u64 {
101+
pub fn llalign_of_min(cx: &CrateContext, ty: Type) -> uint {
102102
unsafe {
103-
return llvm::LLVMABIAlignmentOfType(cx.td.lltd, ty.to_ref()) as u64;
103+
return llvm::LLVMABIAlignmentOfType(cx.td.lltd, ty.to_ref()) as uint;
104104
}
105105
}
106106

@@ -114,8 +114,8 @@ pub fn llalign_of(cx: &CrateContext, ty: Type) -> ValueRef {
114114
}
115115
}
116116

117-
pub fn llelement_offset(cx: &CrateContext, struct_ty: Type, element: uint) -> u64 {
117+
pub fn llelement_offset(cx: &CrateContext, struct_ty: Type, element: uint) -> uint {
118118
unsafe {
119-
return llvm::LLVMOffsetOfElement(cx.td.lltd, struct_ty.to_ref(), element as u32) as u64;
119+
return llvm::LLVMOffsetOfElement(cx.td.lltd, struct_ty.to_ref(), element as u32) as uint;
120120
}
121121
}

0 commit comments

Comments
 (0)