Skip to content

Commit faef9ef

Browse files
committed
---
yaml --- r: 162559 b: refs/heads/try c: 02355b8 h: refs/heads/master i: 162557: 4bae88d 162555: 597b6e7 162551: aeb6e88 162543: 6f65610 162527: 31c67e0 162495: 44e6cbb 162431: 0bd00ca 162303: ff936b0 v: v3
1 parent bb41786 commit faef9ef

Some content is hidden

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

60 files changed

+617
-655
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: 9146a919b616e39e528e4d7100d16eef52f1f852
33
refs/heads/snap-stage1: e33de59e47c5076a89eadeb38f4934f58a3618a6
44
refs/heads/snap-stage3: cafe2966770ff377aad6dd9fd808e68055587c58
5-
refs/heads/try: 4e5259503cd8aac9905c7ac6d68d0c4caab1d28c
5+
refs/heads/try: 02355b87261385533b46bbce632aeb5f9baf3bf4
66
refs/tags/release-0.1: 1f5c5126e96c79d22cb7862f75304136e204f105
77
refs/heads/dist-snap: ba4081a5a8573875fed17545846f6f6902c8ba8d
88
refs/tags/release-0.2: c870d2dffb391e14efb05aa27898f1f6333a9596

branches/try/configure

Lines changed: 15 additions & 14 deletions
Original file line numberDiff line numberDiff line change
@@ -546,26 +546,22 @@ CFG_TARGET=$(to_llvm_triple $CFG_TARGET)
546546
# there's no rpath. This is where the build system itself puts libraries;
547547
# --libdir is used to configure the installation directory.
548548
# FIXME: This needs to parameterized over target triples. Do it in platform.mk
549+
CFG_LIBDIR_RELATIVE=lib
549550
if [ "$CFG_OSTYPE" = "pc-windows-gnu" ]
550551
then
551552
CFG_LIBDIR_RELATIVE=bin
553+
CFG_LIBDIR="${CFG_PREFIX}/${CFG_LIBDIR_RELATIVE}"
552554
else
553-
CFG_LIBDIR_RELATIVE=lib
554-
fi
555-
556-
valopt libdir "${CFG_PREFIX}/${CFG_LIBDIR_RELATIVE}" "install libraries (do not set it on windows platform)"
557-
558-
case "$CFG_LIBDIR" in
559-
"$CFG_PREFIX"/*) CAT_INC=2;;
560-
"$CFG_PREFIX"*) CAT_INC=1;;
561-
*)
562-
err "libdir must begin with the prefix. Use --prefix to set it accordingly.";;
563-
esac
555+
valopt libdir "${CFG_PREFIX}/${CFG_LIBDIR_RELATIVE}" "install libraries (ignored on windows platform)"
564556

565-
CFG_LIBDIR_RELATIVE=`echo ${CFG_LIBDIR} | cut -c$((${#CFG_PREFIX}+${CAT_INC}))-`
557+
case "$CFG_LIBDIR" in
558+
"$CFG_PREFIX"/*) CAT_INC=2;;
559+
"$CFG_PREFIX"*) CAT_INC=1;;
560+
*)
561+
err "libdir must begin with the prefix. Use --prefix to set it accordingly.";;
562+
esac
566563

567-
if [ "$CFG_OSTYPE" = "pc-windows-gnu" ] && [ "$CFG_LIBDIR_RELATIVE" != "bin" ]; then
568-
err "libdir on windows should be set to 'bin'"
564+
CFG_LIBDIR_RELATIVE=`echo ${CFG_LIBDIR} | cut -c$((${#CFG_PREFIX}+${CAT_INC}))-`
569565
fi
570566

571567
if [ $HELP -eq 1 ]
@@ -715,6 +711,11 @@ then
715711
fi
716712
step_msg "using rustc at: ${CFG_LOCAL_RUST_ROOT} with version: $LRV"
717713
putvar CFG_LOCAL_RUST_ROOT
714+
else
715+
if [ ! -z "$CFG_LOCAL_RUST_ROOT" ]
716+
then
717+
warn "Use of --local-rust-root without --enable-local-rust"
718+
fi
718719
fi
719720

720721
# Force freebsd to build with clang; gcc doesn't like us there

branches/try/mk/main.mk

Lines changed: 2 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -190,14 +190,11 @@ endif
190190
# Target-and-rule "utility variables"
191191
######################################################################
192192

193-
define DEF_FOR_TARGET
193+
define DEF_X
194194
X_$(1) := $(CFG_EXE_SUFFIX_$(1))
195-
ifndef CFG_LLVM_TARGET_$(1)
196-
CFG_LLVM_TARGET_$(1) := $(1)
197-
endif
198195
endef
199196
$(foreach target,$(CFG_TARGET), \
200-
$(eval $(call DEF_FOR_TARGET,$(target))))
197+
$(eval $(call DEF_X,$(target))))
201198

202199
# "Source" files we generate in builddir along the way.
203200
GENERATED :=

branches/try/mk/rt.mk

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -75,7 +75,7 @@ $$(RT_OUTPUT_DIR_$(1))/%.o: $(S)src/rt/%.ll $$(MKFILE_DEPS) \
7575
@mkdir -p $$(@D)
7676
@$$(call E, compile: $$@)
7777
$$(Q)$$(LLC_$$(CFG_BUILD)) $$(CFG_LLC_FLAGS_$(1)) \
78-
-filetype=obj -mtriple=$$(CFG_LLVM_TARGET_$(1)) -relocation-model=pic -o $$@ $$<
78+
-filetype=obj -mtriple=$(1) -relocation-model=pic -o $$@ $$<
7979

8080
$$(RT_OUTPUT_DIR_$(1))/%.o: $(S)src/rt/%.c $$(MKFILE_DEPS)
8181
@mkdir -p $$(@D)

branches/try/mk/stage0.mk

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -22,7 +22,7 @@ ifdef CFG_ENABLE_LOCAL_RUST
2222
else
2323
$(Q)$(CFG_PYTHON) $(S)src/etc/get-snapshot.py $(CFG_BUILD) $(SNAPSHOT_FILE)
2424
endif
25-
$(Q)if [ -e "$@" ]; then touch "$@"; else echo "ERROR: snapshot $@ not found"; exit 1; fi
25+
$(Q)touch $@
2626

2727
# For other targets, let the host build the target:
2828

branches/try/mk/target.mk

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -116,7 +116,7 @@ $$(TBIN$(1)_T_$(2)_H_$(3))/$(4)$$(X_$(2)): \
116116
$$(foreach dep,$$(TOOL_DEPS_$(4)), \
117117
$$(TLIB$(1)_T_$(2)_H_$(3))/stamp.$$(dep)) \
118118
$$(TSREQ$(1)_T_$(2)_H_$(3)) \
119-
| $$(TBIN$(1)_T_$(2)_H_$(3))/
119+
| $$(TBIN$(1)_T_$(4)_H_$(3))/
120120
@$$(call E, rustc: $$@)
121121
$$(STAGE$(1)_T_$(2)_H_$(3)) -o $$@ $$< --cfg $(4)
122122

branches/try/src/compiletest/errors.rs

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

11-
use std::ascii::AsciiExt;
1211
use std::io::{BufferedReader, File};
1312
use regex::Regex;
1413

@@ -32,7 +31,7 @@ pub fn load_errors(re: &Regex, testfile: &Path) -> Vec<ExpectedError> {
3231
fn parse_expected(line_num: uint, line: &str, re: &Regex) -> Option<ExpectedError> {
3332
re.captures(line).and_then(|caps| {
3433
let adjusts = caps.name("adjusts").len();
35-
let kind = caps.name("kind").to_ascii_lower();
34+
let kind = caps.name("kind").to_ascii().to_lowercase().into_string();
3635
let msg = caps.name("msg").trim().to_string();
3736

3837
debug!("line={} kind={} msg={}", line_num, kind, msg);

branches/try/src/compiletest/runtest.rs

Lines changed: 7 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -7,7 +7,7 @@
77
// <LICENSE-MIT or http://opensource.org/licenses/MIT>, at your
88
// option. This file may not be copied, modified, or distributed
99
// except according to those terms.
10-
10+
#[cfg(not(stage0))]
1111
use self::TargetLocation::*;
1212

1313
use common::Config;
@@ -990,7 +990,7 @@ fn check_expected_errors(expected_errors: Vec<errors::ExpectedError> ,
990990
let i = s.chars();
991991
let c : Vec<char> = i.map( |c| {
992992
if c.is_ascii() {
993-
c.to_ascii().to_lowercase().as_char()
993+
c.to_ascii().to_lowercase().to_char()
994994
} else {
995995
c
996996
}
@@ -1161,7 +1161,7 @@ fn compile_test_(config: &Config, props: &TestProps,
11611161
let args = make_compile_args(config,
11621162
props,
11631163
link_args,
1164-
|a, b| TargetLocation::ThisFile(make_exe_name(a, b)), testfile);
1164+
|a, b| ThisFile(make_exe_name(a, b)), testfile);
11651165
compose_and_run_compiler(config, props, testfile, args, None)
11661166
}
11671167

@@ -1219,7 +1219,7 @@ fn compose_and_run_compiler(
12191219
crate_type,
12201220
|a,b| {
12211221
let f = make_lib_name(a, b, testfile);
1222-
TargetLocation::ThisDirectory(f.dir_path())
1222+
ThisDirectory(f.dir_path())
12231223
},
12241224
&abs_ab);
12251225
let auxres = compose_and_run(config,
@@ -1296,11 +1296,11 @@ fn make_compile_args(config: &Config,
12961296
args.push("prefer-dynamic".to_string());
12971297
}
12981298
let path = match xform_file {
1299-
TargetLocation::ThisFile(path) => {
1299+
ThisFile(path) => {
13001300
args.push("-o".to_string());
13011301
path
13021302
}
1303-
TargetLocation::ThisDirectory(path) => {
1303+
ThisDirectory(path) => {
13041304
args.push("--out-dir".to_string());
13051305
path
13061306
}
@@ -1672,8 +1672,7 @@ fn compile_test_and_save_bitcode(config: &Config, props: &TestProps,
16721672
let args = make_compile_args(config,
16731673
props,
16741674
link_args,
1675-
|a, b| TargetLocation::ThisDirectory(
1676-
output_base_name(a, b).dir_path()),
1675+
|a, b| ThisDirectory(output_base_name(a, b).dir_path()),
16771676
testfile);
16781677
compose_and_run_compiler(config, props, testfile, args, None)
16791678
}

branches/try/src/doc/guide.md

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -3144,8 +3144,8 @@ pub fn add_three_times_four(x: int) -> int {
31443144
}
31453145
```
31463146

3147-
We're calling this file `lib.rs`, because Cargo uses that filename as the crate
3148-
root by convention.
3147+
We're calling this file `lib.rs` because it has the same name as our project,
3148+
and so it's named this, by convention.
31493149

31503150
We'll then need to use this crate in our `src/main.rs`:
31513151

branches/try/src/driver/driver.rs

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

11+
#![no_start]
12+
1113
#[cfg(rustdoc)]
1214
extern crate "rustdoc" as this;
1315

branches/try/src/etc/lldb_rust_formatters.py

Lines changed: 31 additions & 21 deletions
Original file line numberDiff line numberDiff line change
@@ -43,6 +43,8 @@ def print_struct_val(val, internal_dict):
4343
return print_struct_val_starting_from(0, val, internal_dict)
4444

4545
def print_vec_slice_val(val, internal_dict):
46+
output = "&["
47+
4648
length = val.GetChildAtIndex(1).GetValueAsUnsigned()
4749

4850
data_ptr_val = val.GetChildAtIndex(0)
@@ -54,12 +56,16 @@ def print_vec_slice_val(val, internal_dict):
5456

5557
start_address = data_ptr_val.GetValueAsUnsigned()
5658

57-
def render_element(i):
59+
for i in range(length):
5860
address = start_address + i * element_type_size
59-
element_val = val.CreateValueFromAddress( val.GetName() + ("[%s]" % i), address, element_type)
60-
return print_val(element_val, internal_dict)
61+
element_val = val.CreateValueFromAddress( val.GetName() + ("[%s]" % i), address, element_type )
62+
output += print_val(element_val, internal_dict)
63+
64+
if i != length - 1:
65+
output += ", "
6166

62-
return "&[%s]" % (', '.join([render_element(i) for i in range(length)]))
67+
output += "]"
68+
return output
6369

6470
def print_struct_val_starting_from(field_start_index, val, internal_dict):
6571
'''
@@ -71,33 +77,39 @@ def print_struct_val_starting_from(field_start_index, val, internal_dict):
7177
t = val.GetType()
7278
has_field_names = type_has_field_names(t)
7379
type_name = extract_type_name(t.GetName())
80+
output = ""
81+
82+
if not type_name.startswith("("):
83+
# this is a tuple, so don't print the type name
84+
output += type_name
7485

7586
if has_field_names:
76-
template = "%(type_name)s {\n%(body)s\n}"
77-
separator = ", \n"
87+
output += " { \n"
7888
else:
79-
template = "%(type_name)s(%(body)s)"
80-
separator = ", "
81-
82-
if type_name.startswith("("):
83-
# this is a tuple, so don't print the type name
84-
type_name = ""
89+
output += "("
8590

8691
num_children = val.num_children
8792

88-
def render_child(child_index):
89-
this = ""
93+
for child_index in range(field_start_index, num_children):
9094
if has_field_names:
9195
field_name = t.GetFieldAtIndex(child_index).GetName()
92-
this += field_name + ": "
96+
output += field_name + ": "
9397

9498
field_val = val.GetChildAtIndex(child_index)
95-
return this + print_val(field_val, internal_dict)
99+
output += print_val(field_val, internal_dict)
96100

97-
body = separator.join([render_child(idx) for idx in range(field_start_index, num_children)])
101+
if child_index != num_children - 1:
102+
output += ", "
103+
104+
if has_field_names:
105+
output += "\n"
106+
107+
if has_field_names:
108+
output += "}"
109+
else:
110+
output += ")"
98111

99-
return template % {"type_name": type_name,
100-
"body": body}
112+
return output
101113

102114

103115
def print_enum_val(val, internal_dict):
@@ -231,5 +243,3 @@ def is_vec_slice(val):
231243

232244
type_name = extract_type_name(ty.GetName()).replace("&'static", "&").replace(" ", "")
233245
return type_name.startswith("&[") and type_name.endswith("]")
234-
235-
# vi: sw=2:ts=2

branches/try/src/liballoc/arc.rs

Lines changed: 1 addition & 54 deletions
Original file line numberDiff line numberDiff line change
@@ -119,16 +119,6 @@ impl<T> Arc<T> {
119119
}
120120
}
121121

122-
/// Get the number of weak references to this value.
123-
#[inline]
124-
#[experimental]
125-
pub fn weak_count<T>(this: &Arc<T>) -> uint { this.inner().weak.load(atomic::SeqCst) - 1 }
126-
127-
/// Get the number of strong references to this value.
128-
#[inline]
129-
#[experimental]
130-
pub fn strong_count<T>(this: &Arc<T>) -> uint { this.inner().strong.load(atomic::SeqCst) }
131-
132122
#[unstable = "waiting on stability of Clone"]
133123
impl<T> Clone for Arc<T> {
134124
/// Duplicate an atomically reference counted wrapper.
@@ -331,7 +321,7 @@ mod tests {
331321
use std::sync::atomic;
332322
use std::task;
333323
use std::vec::Vec;
334-
use super::{Arc, Weak, weak_count, strong_count};
324+
use super::{Arc, Weak};
335325
use std::sync::Mutex;
336326

337327
struct Canary(*mut atomic::AtomicUint);
@@ -475,49 +465,6 @@ mod tests {
475465
drop(arc_weak);
476466
}
477467

478-
#[test]
479-
fn test_strong_count() {
480-
let a = Arc::new(0u32);
481-
assert!(strong_count(&a) == 1);
482-
let w = a.downgrade();
483-
assert!(strong_count(&a) == 1);
484-
let b = w.upgrade().expect("");
485-
assert!(strong_count(&b) == 2);
486-
assert!(strong_count(&a) == 2);
487-
drop(w);
488-
drop(a);
489-
assert!(strong_count(&b) == 1);
490-
let c = b.clone();
491-
assert!(strong_count(&b) == 2);
492-
assert!(strong_count(&c) == 2);
493-
}
494-
495-
#[test]
496-
fn test_weak_count() {
497-
let a = Arc::new(0u32);
498-
assert!(strong_count(&a) == 1);
499-
assert!(weak_count(&a) == 0);
500-
let w = a.downgrade();
501-
assert!(strong_count(&a) == 1);
502-
assert!(weak_count(&a) == 1);
503-
let x = w.clone();
504-
assert!(weak_count(&a) == 2);
505-
drop(w);
506-
drop(x);
507-
assert!(strong_count(&a) == 1);
508-
assert!(weak_count(&a) == 0);
509-
let c = a.clone();
510-
assert!(strong_count(&a) == 2);
511-
assert!(weak_count(&a) == 0);
512-
let d = c.downgrade();
513-
assert!(weak_count(&c) == 1);
514-
assert!(strong_count(&c) == 2);
515-
516-
drop(a);
517-
drop(c);
518-
drop(d);
519-
}
520-
521468
#[test]
522469
fn show_arc() {
523470
let a = Arc::new(5u32);

branches/try/src/liballoc/boxed.rs

Lines changed: 7 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -15,6 +15,7 @@ use core::clone::Clone;
1515
use core::cmp::{PartialEq, PartialOrd, Eq, Ord, Ordering};
1616
use core::default::Default;
1717
use core::fmt;
18+
use core::intrinsics;
1819
use core::kinds::Sized;
1920
use core::mem;
2021
use core::option::Option;
@@ -103,14 +104,17 @@ pub trait BoxAny {
103104
}
104105

105106
#[stable]
106-
impl BoxAny for Box<Any> {
107+
impl BoxAny for Box<Any+'static> {
107108
#[inline]
108-
fn downcast<T: 'static>(self) -> Result<Box<T>, Box<Any>> {
109+
fn downcast<T: 'static>(self) -> Result<Box<T>, Box<Any+'static>> {
109110
if self.is::<T>() {
110111
unsafe {
111112
// Get the raw representation of the trait object
112113
let to: TraitObject =
113-
mem::transmute::<Box<Any>, TraitObject>(self);
114+
*mem::transmute::<&Box<Any>, &TraitObject>(&self);
115+
116+
// Prevent destructor on self being run
117+
intrinsics::forget(self);
114118

115119
// Extract the data pointer
116120
Ok(mem::transmute(to.data))

0 commit comments

Comments
 (0)