Skip to content

Commit 1deb008

Browse files
committed
---
yaml --- r: 124415 b: refs/heads/snap-stage3 c: 9fc8394 h: refs/heads/master i: 124413: 5dda050 124411: dd13269 124407: fe5ef89 124399: cfbf1d8 124383: 57f95bd 124351: 92aa676 124287: d253125 124159: 908919a 123903: 6b21faf v: v3
1 parent 6da1dac commit 1deb008

File tree

289 files changed

+11296
-4353
lines changed

Some content is hidden

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

289 files changed

+11296
-4353
lines changed

[refs]

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,7 @@
11
---
22
refs/heads/master: 32cb44bfff3facbded5fd9cc74af3f02e81565a8
33
refs/heads/snap-stage1: e33de59e47c5076a89eadeb38f4934f58a3618a6
4-
refs/heads/snap-stage3: ace3a77f7407690f725ee50f3f42f26a95ed6835
4+
refs/heads/snap-stage3: 9fc8394d3bce22ab483f98842434c84c396212ae
55
refs/heads/try: dff46952ab5c4567d1b5b35bfbd8befc45cdd38e
66
refs/tags/release-0.1: 1f5c5126e96c79d22cb7862f75304136e204f105
77
refs/heads/ndm: f3868061cd7988080c30d6d5bf352a5a5fe2460b

branches/snap-stage3/.gitignore

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -86,5 +86,5 @@ src/etc/dl
8686
.settings/
8787
/build
8888
i686-pc-mingw32/
89-
src/librustc/lib/llvmdeps.rs
89+
src/librustc_llvm/llvmdeps.rs
9090
*.pot

branches/snap-stage3/mk/crates.mk

Lines changed: 6 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -53,7 +53,8 @@ TARGET_CRATES := libc std green rustuv native flate arena glob term semver \
5353
uuid serialize sync getopts collections num test time rand \
5454
url log regex graphviz core rlibc alloc debug rustrt \
5555
unicode
56-
HOST_CRATES := syntax rustc rustdoc fourcc hexfloat regex_macros fmt_macros
56+
HOST_CRATES := syntax rustc rustdoc fourcc hexfloat regex_macros fmt_macros \
57+
rustc_llvm rustc_back
5758
CRATES := $(TARGET_CRATES) $(HOST_CRATES)
5859
TOOLS := compiletest rustdoc rustc
5960

@@ -70,8 +71,10 @@ DEPS_green := std native:context_switch
7071
DEPS_rustuv := std native:uv native:uv_support
7172
DEPS_native := std
7273
DEPS_syntax := std term serialize log fmt_macros debug
73-
DEPS_rustc := syntax native:rustllvm flate arena serialize getopts \
74-
time log graphviz debug
74+
DEPS_rustc := syntax flate arena serialize getopts \
75+
time log graphviz debug rustc_llvm rustc_back
76+
DEPS_rustc_llvm := native:rustllvm libc std
77+
DEPS_rustc_back := std syntax rustc_llvm flate log libc
7578
DEPS_rustdoc := rustc native:hoedown serialize getopts \
7679
test time debug
7780
DEPS_flate := std native:miniz

branches/snap-stage3/mk/llvm.mk

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -57,7 +57,7 @@ $(foreach host,$(CFG_HOST), \
5757
$(foreach host,$(CFG_HOST), \
5858
$(eval LLVM_CONFIGS := $(LLVM_CONFIGS) $(LLVM_CONFIG_$(host))))
5959

60-
$(S)src/librustc/lib/llvmdeps.rs: \
60+
$(S)src/librustc_llvm/llvmdeps.rs: \
6161
$(LLVM_CONFIGS) \
6262
$(S)src/etc/mklldeps.py \
6363
$(MKFILE_DEPS)

branches/snap-stage3/mk/target.mk

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -134,7 +134,7 @@ SNAPSHOT_RUSTC_POST_CLEANUP=$(HBIN0_H_$(CFG_BUILD))/rustc$(X_$(CFG_BUILD))
134134

135135
define TARGET_HOST_RULES
136136

137-
$$(TLIB$(1)_T_$(2)_H_$(3))/stamp.rustc: $(S)src/librustc/lib/llvmdeps.rs
137+
$$(TLIB$(1)_T_$(2)_H_$(3))/stamp.rustc_llvm: $(S)src/librustc_llvm/llvmdeps.rs
138138

139139
$$(TBIN$(1)_T_$(2)_H_$(3))/:
140140
mkdir -p $$@

branches/snap-stage3/src/compiletest/compiletest.rs

Lines changed: 14 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -30,7 +30,7 @@ use std::io::fs;
3030
use std::from_str::FromStr;
3131
use getopts::{optopt, optflag, reqopt};
3232
use common::Config;
33-
use common::{Pretty, DebugInfoGdb, Codegen};
33+
use common::{Pretty, DebugInfoGdb, DebugInfoLldb, Codegen};
3434
use util::logv;
3535
use regex::Regex;
3636

@@ -89,9 +89,9 @@ pub fn parse_config(args: Vec<String> ) -> Config {
8989
optflag("h", "help", "show this message"));
9090

9191
assert!(!args.is_empty());
92-
let argv0 = (*args.get(0)).clone();
92+
let argv0 = args[0].clone();
9393
let args_ = args.tail();
94-
if args.get(1).as_slice() == "-h" || args.get(1).as_slice() == "--help" {
94+
if args[1].as_slice() == "-h" || args[1].as_slice() == "--help" {
9595
let message = format!("Usage: {} [OPTIONS] [TESTNAME...]", argv0);
9696
println!("{}", getopts::usage(message.as_slice(), groups.as_slice()));
9797
println!("");
@@ -116,7 +116,7 @@ pub fn parse_config(args: Vec<String> ) -> Config {
116116
}
117117

118118
let filter = if !matches.free.is_empty() {
119-
let s = matches.free.get(0).as_slice();
119+
let s = matches.free[0].as_slice();
120120
match regex::Regex::new(s) {
121121
Ok(re) => Some(re),
122122
Err(e) => {
@@ -241,6 +241,16 @@ pub fn run_tests(config: &Config) {
241241
os::setenv("RUST_TEST_TASKS","1");
242242
}
243243

244+
match config.mode {
245+
DebugInfoLldb => {
246+
// Some older versions of LLDB seem to have problems with multiple
247+
// instances running in parallel, so only run one test task at a
248+
// time.
249+
os::setenv("RUST_TEST_TASKS", "1");
250+
}
251+
_ => { /* proceed */ }
252+
}
253+
244254
let opts = test_opts(config);
245255
let tests = make_tests(config);
246256
// sadly osx needs some file descriptor limits raised for running tests in

branches/snap-stage3/src/compiletest/procsrv.rs

Lines changed: 3 additions & 4 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::str;
1211
use std::io::process::{ProcessExit, Command, Process, ProcessOutput};
1312
use std::dynamic_lib::DynamicLibrary;
1413

@@ -25,7 +24,7 @@ fn add_target_env(cmd: &mut Command, lib_path: &str, aux_path: Option<&str>) {
2524
// Add the new dylib search path var
2625
let var = DynamicLibrary::envvar();
2726
let newpath = DynamicLibrary::create_path(path.as_slice());
28-
let newpath = str::from_utf8(newpath.as_slice()).unwrap().to_string();
27+
let newpath = String::from_utf8(newpath).unwrap();
2928
cmd.env(var.to_string(), newpath);
3029
}
3130

@@ -55,8 +54,8 @@ pub fn run(lib_path: &str,
5554

5655
Some(Result {
5756
status: status,
58-
out: str::from_utf8(output.as_slice()).unwrap().to_string(),
59-
err: str::from_utf8(error.as_slice()).unwrap().to_string()
57+
out: String::from_utf8(output).unwrap(),
58+
err: String::from_utf8(error).unwrap()
6059
})
6160
},
6261
Err(..) => None

branches/snap-stage3/src/compiletest/runtest.rs

Lines changed: 29 additions & 19 deletions
Original file line numberDiff line numberDiff line change
@@ -158,7 +158,7 @@ fn run_pretty_test(config: &Config, props: &TestProps, testfile: &Path) {
158158
match props.pp_exact { Some(_) => 1, None => 2 };
159159

160160
let src = File::open(testfile).read_to_end().unwrap();
161-
let src = str::from_utf8(src.as_slice()).unwrap().to_string();
161+
let src = String::from_utf8(src.clone()).unwrap();
162162
let mut srcs = vec!(src);
163163

164164
let mut round = 0;
@@ -167,7 +167,7 @@ fn run_pretty_test(config: &Config, props: &TestProps, testfile: &Path) {
167167
let proc_res = print_source(config,
168168
props,
169169
testfile,
170-
(*srcs.get(round)).to_string(),
170+
srcs[round].to_string(),
171171
"normal");
172172

173173
if !proc_res.status.success() {
@@ -185,11 +185,11 @@ fn run_pretty_test(config: &Config, props: &TestProps, testfile: &Path) {
185185
Some(ref file) => {
186186
let filepath = testfile.dir_path().join(file);
187187
let s = File::open(&filepath).read_to_end().unwrap();
188-
str::from_utf8(s.as_slice()).unwrap().to_string()
189-
}
190-
None => { (*srcs.get(srcs.len() - 2u)).clone() }
191-
};
192-
let mut actual = (*srcs.get(srcs.len() - 1u)).clone();
188+
String::from_utf8(s).unwrap()
189+
}
190+
None => { srcs[srcs.len() - 2u].clone() }
191+
};
192+
let mut actual = srcs[srcs.len() - 1u].clone();
193193

194194
if props.pp_exact.is_some() {
195195
// Now we have to care about line endings
@@ -209,7 +209,7 @@ fn run_pretty_test(config: &Config, props: &TestProps, testfile: &Path) {
209209
if props.no_pretty_expanded { return }
210210

211211
// additionally, run `--pretty expanded` and try to build it.
212-
let proc_res = print_source(config, props, testfile, (*srcs.get(round)).clone(), "expanded");
212+
let proc_res = print_source(config, props, testfile, srcs[round].clone(), "expanded");
213213
if !proc_res.status.success() {
214214
fatal_proc_rec("pretty-printing (expanded) failed", &proc_res);
215215
}
@@ -536,6 +536,16 @@ fn run_debuginfo_lldb_test(config: &Config, props: &TestProps, testfile: &Path)
536536
// We don't want to hang when calling `quit` while the process is still running
537537
let mut script_str = String::from_str("settings set auto-confirm true\n");
538538

539+
// Make LLDB emit its version, so we have it documented in the test output
540+
script_str.push_str("version\n");
541+
542+
// Switch LLDB into "Rust mode"
543+
script_str.push_str("command script import ./src/etc/lldb_rust_formatters.py\n");
544+
script_str.push_str("type summary add --no-value ");
545+
script_str.push_str("--python-function lldb_rust_formatters.print_val ");
546+
script_str.push_str("-x \".*\" --category Rust\n");
547+
script_str.push_str("type category enable Rust\n");
548+
539549
// Set breakpoints on every line that contains the string "#break"
540550
for line in breakpoint_lines.iter() {
541551
script_str.push_str(format!("breakpoint set --line {}\n",
@@ -582,8 +592,8 @@ fn run_debuginfo_lldb_test(config: &Config, props: &TestProps, testfile: &Path)
582592
process.wait_with_output().unwrap();
583593

584594
(status,
585-
str::from_utf8(output.as_slice()).unwrap().to_string(),
586-
str::from_utf8(error.as_slice()).unwrap().to_string())
595+
String::from_utf8(output).unwrap(),
596+
String::from_utf8(error).unwrap())
587597
},
588598
Err(e) => {
589599
fatal(format!("Failed to setup Python process for \
@@ -692,7 +702,7 @@ fn check_debugger_output(debugger_run_result: &ProcRes, check_lines: &[String])
692702
let mut rest = line.trim();
693703
let mut first = true;
694704
let mut failed = false;
695-
for frag in check_fragments.get(i).iter() {
705+
for frag in check_fragments[i].iter() {
696706
let found = if first {
697707
if rest.starts_with(frag.as_slice()) {
698708
Some(0)
@@ -742,7 +752,7 @@ fn check_error_patterns(props: &TestProps,
742752
}
743753

744754
let mut next_err_idx = 0u;
745-
let mut next_err_pat = props.error_patterns.get(next_err_idx);
755+
let mut next_err_pat = &props.error_patterns[next_err_idx];
746756
let mut done = false;
747757
let output_to_check = if props.check_stdout {
748758
format!("{}{}", proc_res.stdout, proc_res.stderr)
@@ -751,14 +761,14 @@ fn check_error_patterns(props: &TestProps,
751761
};
752762
for line in output_to_check.as_slice().lines() {
753763
if line.contains(next_err_pat.as_slice()) {
754-
debug!("found error pattern {}", *next_err_pat);
764+
debug!("found error pattern {}", next_err_pat);
755765
next_err_idx += 1u;
756766
if next_err_idx == props.error_patterns.len() {
757767
debug!("found all error patterns");
758768
done = true;
759769
break;
760770
}
761-
next_err_pat = props.error_patterns.get(next_err_idx);
771+
next_err_pat = &props.error_patterns[next_err_idx];
762772
}
763773
}
764774
if done { return; }
@@ -813,7 +823,7 @@ fn check_expected_errors(expected_errors: Vec<errors::ExpectedError> ,
813823
c
814824
}
815825
} ).collect();
816-
str::from_chars(c.as_slice()).to_string()
826+
String::from_chars(c.as_slice())
817827
}
818828

819829
#[cfg(target_os = "win32")]
@@ -837,13 +847,13 @@ fn check_expected_errors(expected_errors: Vec<errors::ExpectedError> ,
837847
for line in proc_res.stderr.as_slice().lines() {
838848
let mut was_expected = false;
839849
for (i, ee) in expected_errors.iter().enumerate() {
840-
if !*found_flags.get(i) {
850+
if !found_flags[i] {
841851
debug!("prefix={} ee.kind={} ee.msg={} line={}",
842-
prefixes.get(i).as_slice(),
852+
prefixes[i].as_slice(),
843853
ee.kind,
844854
ee.msg,
845855
line);
846-
if prefix_matches(line, prefixes.get(i).as_slice()) &&
856+
if prefix_matches(line, prefixes[i].as_slice()) &&
847857
line.contains(ee.kind.as_slice()) &&
848858
line.contains(ee.msg.as_slice()) {
849859
*found_flags.get_mut(i) = true;
@@ -867,7 +877,7 @@ fn check_expected_errors(expected_errors: Vec<errors::ExpectedError> ,
867877

868878
for (i, &flag) in found_flags.iter().enumerate() {
869879
if !flag {
870-
let ee = expected_errors.get(i);
880+
let ee = &expected_errors[i];
871881
fatal_proc_rec(format!("expected {} on line {} not found: {}",
872882
ee.kind, ee.line, ee.msg).as_slice(),
873883
proc_res);

branches/snap-stage3/src/doc/guide-ffi.md

Lines changed: 7 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -173,7 +173,7 @@ the same stack as the rust stack. This means that there is no extra
173173
stack-switching mechanism in place because it is assumed that the large stack
174174
for the rust task is plenty for the C function to have.
175175

176-
A planned future improvement (net yet implemented at the time of this writing)
176+
A planned future improvement (not yet implemented at the time of this writing)
177177
is to have a guard page at the end of every rust stack. No rust function will
178178
hit this guard page (due to Rust's usage of LLVM's `__morestack`). The intention
179179
for this unmapped page is to prevent infinite recursion in C from overflowing
@@ -201,7 +201,7 @@ It is possible to pass functions defined in Rust to an external library.
201201
The requirement for this is that the callback function is marked as `extern`
202202
with the correct calling convention to make it callable from C code.
203203

204-
The callback function that can then be sent to through a registration call
204+
The callback function can then be sent through a registration call
205205
to the C library and afterwards be invoked from there.
206206

207207
A basic example is:
@@ -243,14 +243,14 @@ void trigger_callback() {
243243
}
244244
~~~~
245245
246-
In this example will Rust's `main()` will call `do_callback()` in C,
247-
which would call back to `callback()` in Rust.
246+
In this example Rust's `main()` will call `do_callback()` in C,
247+
which would, in turn, call back to `callback()` in Rust.
248248
249249
250-
## Targetting callbacks to Rust objects
250+
## Targeting callbacks to Rust objects
251251
252252
The former example showed how a global function can be called from C code.
253-
However it is often desired that the callback is targetted to a special
253+
However it is often desired that the callback is targeted to a special
254254
Rust object. This could be the object that represents the wrapper for the
255255
respective C object.
256256
@@ -334,7 +334,7 @@ it is also absolutely necessary that no more callbacks are performed by the
334334
C library after the respective Rust object gets destroyed.
335335
This can be achieved by unregistering the callback in the object's
336336
destructor and designing the library in a way that guarantees that no
337-
callback will be performed after unregistration.
337+
callback will be performed after deregistration.
338338
339339
# Linking
340340

0 commit comments

Comments
 (0)