diff --git a/src/libextra/num/complex.rs b/src/libextra/num/complex.rs index b75537b8b3e..c626260043e 100644 --- a/src/libextra/num/complex.rs +++ b/src/libextra/num/complex.rs @@ -80,7 +80,6 @@ impl Cmplx { } } -#[cfg(not(stage0))] // Fixed by #4228 impl Cmplx { /// Calculate |self| #[inline] @@ -89,7 +88,6 @@ impl Cmplx { } } -#[cfg(not(stage0))] // Fixed by #4228 impl Cmplx { /// Calculate the principal Arg of self. #[inline] diff --git a/src/libextra/std.rc b/src/libextra/std.rc index 96c53266c6f..d4c85ef5136 100644 --- a/src/libextra/std.rc +++ b/src/libextra/std.rc @@ -32,16 +32,10 @@ Rust extras are part of the standard Rust distribution. #[deny(non_camel_case_types)]; #[deny(missing_doc)]; -// NOTE: remove these two attributes after the next snapshot -#[no_core]; // for stage0 -#[allow(unrecognized_lint)]; // otherwise stage0 is seriously ugly - #[no_std]; extern mod core(name = "std", vers = "0.7-pre"); -#[cfg(stage0)] -use core::{str, unstable}; use core::str::{StrSlice, OwnedStr}; pub use core::os; diff --git a/src/libextra/time.rs b/src/libextra/time.rs index 50592d5f730..005238a564e 100644 --- a/src/libextra/time.rs +++ b/src/libextra/time.rs @@ -275,7 +275,7 @@ priv fn do_strptime(s: &str, format: &str) -> Result { let mut i = 0u; let len = strs.len(); while i < len { - match strs[i] { // can't use let due to stage0 bugs + match strs[i] { // can't use let due to let-pattern bugs (ref needle, value) => { if match_str(ss, pos, *needle) { return Some((value, pos + needle.len())); diff --git a/src/librustc/back/rpath.rs b/src/librustc/back/rpath.rs index ed70f41f3ec..fd22a7e79c6 100644 --- a/src/librustc/back/rpath.rs +++ b/src/librustc/back/rpath.rs @@ -174,19 +174,6 @@ pub fn get_absolute_rpath(lib: &Path) -> Path { os::make_absolute(lib).dir_path() } -#[cfg(stage0)] -pub fn get_install_prefix_rpath(target_triple: &str) -> Path { - let install_prefix = env!("CFG_PREFIX"); - - if install_prefix.is_empty() { - fail!("rustc compiled without CFG_PREFIX environment variable"); - } - - let tlib = filesearch::relative_target_lib_path(target_triple); - os::make_absolute(&Path(install_prefix).push_rel(&tlib)) -} - -#[cfg(not(stage0))] pub fn get_install_prefix_rpath(target_triple: &str) -> Path { let install_prefix = env!("CFG_PREFIX"); diff --git a/src/librustc/driver/driver.rs b/src/librustc/driver/driver.rs index cc1eb373652..43b3397094b 100644 --- a/src/librustc/driver/driver.rs +++ b/src/librustc/driver/driver.rs @@ -521,25 +521,6 @@ pub fn build_target_config(sopts: @session::options, return target_cfg; } -#[cfg(stage0)] -pub fn host_triple() -> ~str { - // Get the host triple out of the build environment. This ensures that our - // idea of the host triple is the same as for the set of libraries we've - // actually built. We can't just take LLVM's host triple because they - // normalize all ix86 architectures to i386. - // - // Instead of grabbing the host triple (for the current host), we grab (at - // compile time) the target triple that this rustc is built with and - // calling that (at runtime) the host triple. - let ht = env!("CFG_COMPILER_TRIPLE"); - return if ht != ~"" { - ht - } else { - fail!("rustc built without CFG_COMPILER_TRIPLE") - }; -} - -#[cfg(not(stage0))] pub fn host_triple() -> ~str { // Get the host triple out of the build environment. This ensures that our // idea of the host triple is the same as for the set of libraries we've diff --git a/src/librustc/middle/liveness.rs b/src/librustc/middle/liveness.rs index 1c335ee4084..08cba4d51cd 100644 --- a/src/librustc/middle/liveness.rs +++ b/src/librustc/middle/liveness.rs @@ -749,11 +749,7 @@ impl Liveness { None => { // Vanilla 'break' or 'loop', so use the enclosing // loop scope - let len = { // FIXME(#5074) stage0 - let loop_scope = &mut *self.loop_scope; - loop_scope.len() - }; - if len == 0 { + if self.loop_scope.len() == 0 { self.tcx.sess.span_bug(sp, "break outside loop"); } else { // FIXME(#5275): this shouldn't have to be a method... diff --git a/src/librustc/middle/trans/base.rs b/src/librustc/middle/trans/base.rs index 55fc22a8fcc..a050467529a 100644 --- a/src/librustc/middle/trans/base.rs +++ b/src/librustc/middle/trans/base.rs @@ -1318,7 +1318,7 @@ pub fn cleanup_and_leave(bcx: block, match cur.kind { block_scope(inf) if !inf.empty_cleanups() => { let (sub_cx, dest, inf_cleanups) = { - let inf = &mut *inf; // FIXME(#5074) workaround stage0 + let inf = &mut *inf; let mut skip = 0; let mut dest = None; { diff --git a/src/librustc/middle/typeck/check/vtable.rs b/src/librustc/middle/typeck/check/vtable.rs index 99e68e3330b..207f986efd9 100644 --- a/src/librustc/middle/typeck/check/vtable.rs +++ b/src/librustc/middle/typeck/check/vtable.rs @@ -248,16 +248,9 @@ fn lookup_vtable(vcx: &VtableContext, // Nothing found. Continue. } Some(implementations) => { - let len = { // FIXME(#5074): stage0 requires it - let implementations: &mut ~[@Impl] = *implementations; - implementations.len() - }; - // implementations is the list of all impls in scope for // trait_ref. (Usually, there's just one.) - for uint::range(0, len) |i| { - let im = implementations[i]; - + for implementations.iter().advance |im| { // im is one specific impl of trait_ref. // First, ensure we haven't processed this impl yet. diff --git a/src/librustc/middle/typeck/coherence.rs b/src/librustc/middle/typeck/coherence.rs index 9528c825fbe..d71820a67b3 100644 --- a/src/librustc/middle/typeck/coherence.rs +++ b/src/librustc/middle/typeck/coherence.rs @@ -520,12 +520,8 @@ impl CoherenceChecker { match extension_methods.find(&trait_def_id) { Some(impls) => { - let len = { // FIXME(#5074) stage0 requires this - let impls: &mut ~[@Impl] = *impls; - impls.len() - }; - for uint::range(0, len) |i| { - f(impls[i]); + for impls.iter().advance |&im| { + f(im); } } None => { /* no impls? */ } diff --git a/src/librustc/rustc.rc b/src/librustc/rustc.rc index 1197693d1b6..021dd6648cb 100644 --- a/src/librustc/rustc.rc +++ b/src/librustc/rustc.rc @@ -28,16 +28,8 @@ extern mod core(name = "std"); extern mod extra(name = "extra"); extern mod syntax; -// For deriving(Encodable) purposes... -#[cfg(stage0)] -extern mod std(name = "extra", vers = "0.7-pre"); -#[cfg(not(stage0))] extern mod std(name = "std", vers = "0.7-pre"); -// For bootstrapping purposes. -#[cfg(stage0)] -pub use core::unstable; - use core::prelude::*; use driver::driver::{host_triple, optgroups, early_error}; diff --git a/src/libstd/cast.rs b/src/libstd/cast.rs index 900cc600923..30b6b030dba 100644 --- a/src/libstd/cast.rs +++ b/src/libstd/cast.rs @@ -14,21 +14,8 @@ use sys; use unstable::intrinsics; /// Casts the value at `src` to U. The two types must have the same length. -#[cfg(stage0)] -pub unsafe fn transmute_copy(src: &T) -> U { - let mut dest: U = intrinsics::uninit(); - { - let dest_ptr: *mut u8 = transmute(&mut dest); - let src_ptr: *u8 = transmute(src); - intrinsics::memmove64(dest_ptr, - src_ptr, - sys::size_of::() as u64); - } - dest -} - /// Casts the value at `src` to U. The two types must have the same length. -#[cfg(target_word_size = "32", not(stage0))] +#[cfg(target_word_size = "32")] #[inline] pub unsafe fn transmute_copy(src: &T) -> U { let mut dest: U = intrinsics::uninit(); @@ -39,7 +26,7 @@ pub unsafe fn transmute_copy(src: &T) -> U { } /// Casts the value at `src` to U. The two types must have the same length. -#[cfg(target_word_size = "64", not(stage0))] +#[cfg(target_word_size = "64")] #[inline] pub unsafe fn transmute_copy(src: &T) -> U { let mut dest: U = intrinsics::uninit(); diff --git a/src/libstd/core.rc b/src/libstd/core.rc index f37f65c1edc..6911c00e55b 100644 --- a/src/libstd/core.rc +++ b/src/libstd/core.rc @@ -57,10 +57,6 @@ they contained the following prologue: #[license = "MIT/ASL2"]; #[crate_type = "lib"]; -// NOTE: remove these two attributes after the next snapshot -#[no_core]; // for stage0 -#[allow(unrecognized_lint)]; // otherwise stage0 is seriously ugly - // Don't link to std. We are std. #[no_std]; diff --git a/src/libstd/io.rs b/src/libstd/io.rs index 3e771c4ddde..e5e8a4cb601 100644 --- a/src/libstd/io.rs +++ b/src/libstd/io.rs @@ -1654,9 +1654,7 @@ impl Writer for BytesWriter { vec::reserve(bytes, count); unsafe { - // Silly stage0 borrow check workaround... - let casted: &mut ~[u8] = cast::transmute_copy(&bytes); - vec::raw::set_len(casted, count); + vec::raw::set_len(bytes, count); let view = vec::mut_slice(*bytes, *self.pos, count); vec::bytes::copy_memory(view, v, v_len); diff --git a/src/libstd/ptr.rs b/src/libstd/ptr.rs index b505602702b..7f89d454be1 100644 --- a/src/libstd/ptr.rs +++ b/src/libstd/ptr.rs @@ -75,21 +75,7 @@ pub fn is_not_null(ptr: *const T) -> bool { !is_null(ptr) } * and destination may overlap. */ #[inline] -#[cfg(target_word_size = "32", stage0)] -pub unsafe fn copy_memory(dst: *mut T, src: *const T, count: uint) { - use unstable::intrinsics::memmove32; - let n = count * sys::size_of::(); - memmove32(dst as *mut u8, src as *u8, n as u32); -} - -/** - * Copies data from one location to another. - * - * Copies `count` elements (not bytes) from `src` to `dst`. The source - * and destination may overlap. - */ -#[inline] -#[cfg(target_word_size = "32", not(stage0))] +#[cfg(target_word_size = "32")] pub unsafe fn copy_memory(dst: *mut T, src: *const T, count: uint) { use unstable::intrinsics::memmove32; memmove32(dst, src as *T, count as u32); @@ -102,21 +88,7 @@ pub unsafe fn copy_memory(dst: *mut T, src: *const T, count: uint) { * and destination may overlap. */ #[inline] -#[cfg(target_word_size = "64", stage0)] -pub unsafe fn copy_memory(dst: *mut T, src: *const T, count: uint) { - use unstable::intrinsics::memmove64; - let n = count * sys::size_of::(); - memmove64(dst as *mut u8, src as *u8, n as u64); -} - -/** - * Copies data from one location to another. - * - * Copies `count` elements (not bytes) from `src` to `dst`. The source - * and destination may overlap. - */ -#[inline] -#[cfg(target_word_size = "64", not(stage0))] +#[cfg(target_word_size = "64")] pub unsafe fn copy_memory(dst: *mut T, src: *const T, count: uint) { use unstable::intrinsics::memmove64; memmove64(dst, src as *T, count as u64); @@ -129,21 +101,7 @@ pub unsafe fn copy_memory(dst: *mut T, src: *const T, count: uint) { * and destination may *not* overlap. */ #[inline] -#[cfg(target_word_size = "32", stage0)] -pub unsafe fn copy_nonoverlapping_memory(dst: *mut T, src: *const T, count: uint) { - use unstable::intrinsics::memmove32; - let n = count * sys::size_of::(); - memmove32(dst as *mut u8, src as *u8, n as u32); -} - -/** - * Copies data from one location to another. - * - * Copies `count` elements (not bytes) from `src` to `dst`. The source - * and destination may *not* overlap. - */ -#[inline] -#[cfg(target_word_size = "32", not(stage0))] +#[cfg(target_word_size = "32")] pub unsafe fn copy_nonoverlapping_memory(dst: *mut T, src: *const T, count: uint) { use unstable::intrinsics::memcpy32; memcpy32(dst, src as *T, count as u32); @@ -156,21 +114,7 @@ pub unsafe fn copy_nonoverlapping_memory(dst: *mut T, src: *const T, count: u * and destination may *not* overlap. */ #[inline] -#[cfg(target_word_size = "64", stage0)] -pub unsafe fn copy_nonoverlapping_memory(dst: *mut T, src: *const T, count: uint) { - use unstable::intrinsics::memmove64; - let n = count * sys::size_of::(); - memmove64(dst as *mut u8, src as *u8, n as u64); -} - -/** - * Copies data from one location to another. - * - * Copies `count` elements (not bytes) from `src` to `dst`. The source - * and destination may *not* overlap. - */ -#[inline] -#[cfg(target_word_size = "64", not(stage0))] +#[cfg(target_word_size = "64")] pub unsafe fn copy_nonoverlapping_memory(dst: *mut T, src: *const T, count: uint) { use unstable::intrinsics::memcpy64; memcpy64(dst, src as *T, count as u64); @@ -181,7 +125,7 @@ pub unsafe fn copy_nonoverlapping_memory(dst: *mut T, src: *const T, count: u * bytes of memory starting at `dst` to `c`. */ #[inline] -#[cfg(target_word_size = "32", not(stage0))] +#[cfg(target_word_size = "32")] pub unsafe fn set_memory(dst: *mut T, c: u8, count: uint) { use unstable::intrinsics::memset32; memset32(dst, c, count as u32); @@ -192,7 +136,7 @@ pub unsafe fn set_memory(dst: *mut T, c: u8, count: uint) { * bytes of memory starting at `dst` to `c`. */ #[inline] -#[cfg(target_word_size = "64", not(stage0))] +#[cfg(target_word_size = "64")] pub unsafe fn set_memory(dst: *mut T, c: u8, count: uint) { use unstable::intrinsics::memset64; memset64(dst, c, count as u64); @@ -592,7 +536,6 @@ pub mod ptr_tests { } #[test] - #[cfg(not(stage0))] fn test_set_memory() { let mut xs = [0u8, ..20]; let ptr = vec::raw::to_mut_ptr(xs); diff --git a/src/libstd/unstable/intrinsics.rs b/src/libstd/unstable/intrinsics.rs index 908c5e23ab0..13425007785 100644 --- a/src/libstd/unstable/intrinsics.rs +++ b/src/libstd/unstable/intrinsics.rs @@ -130,36 +130,23 @@ pub extern "rust-intrinsic" { /// Equivalent to the `llvm.memcpy.p0i8.0i8.i32` intrinsic, with a size of /// `count` * `size_of::()` and an alignment of `min_align_of::()` - #[cfg(not(stage0))] pub fn memcpy32(dst: *mut T, src: *T, count: u32); /// Equivalent to the `llvm.memcpy.p0i8.0i8.i64` intrinsic, with a size of /// `count` * `size_of::()` and an alignment of `min_align_of::()` - #[cfg(not(stage0))] pub fn memcpy64(dst: *mut T, src: *T, count: u64); - /// Equivalent to the `llvm.memmove.p0i8.0i8.i32` intrinsic. - #[cfg(stage0)] - pub fn memmove32(dst: *mut u8, src: *u8, size: u32); - /// Equivalent to the `llvm.memmove.p0i8.0i8.i64` intrinsic. - #[cfg(stage0)] - pub fn memmove64(dst: *mut u8, src: *u8, size: u64); - /// Equivalent to the `llvm.memmove.p0i8.0i8.i32` intrinsic, with a size of /// `count` * `size_of::()` and an alignment of `min_align_of::()` - #[cfg(not(stage0))] pub fn memmove32(dst: *mut T, src: *T, count: u32); /// Equivalent to the `llvm.memmove.p0i8.0i8.i64` intrinsic, with a size of /// `count` * `size_of::()` and an alignment of `min_align_of::()` - #[cfg(not(stage0))] pub fn memmove64(dst: *mut T, src: *T, count: u64); /// Equivalent to the `llvm.memset.p0i8.i32` intrinsic, with a size of /// `count` * `size_of::()` and an alignment of `min_align_of::()` - #[cfg(not(stage0))] pub fn memset32(dst: *mut T, val: u8, count: u32); /// Equivalent to the `llvm.memset.p0i8.i64` intrinsic, with a size of /// `count` * `size_of::()` and an alignment of `min_align_of::()` - #[cfg(not(stage0))] pub fn memset64(dst: *mut T, val: u8, count: u64); pub fn sqrtf32(x: f32) -> f32; diff --git a/src/libsyntax/parse/token.rs b/src/libsyntax/parse/token.rs index fc6f07288f2..555342d3d60 100644 --- a/src/libsyntax/parse/token.rs +++ b/src/libsyntax/parse/token.rs @@ -402,94 +402,6 @@ impl ident_interner { // return a fresh interner, preloaded with special identifiers. -#[cfg(stage0)] -fn mk_fresh_ident_interner() -> @ident_interner { - // the indices here must correspond to the numbers in - // special_idents. - let init_vec = ~[ - "_", // 0 - "anon", // 1 - "", // 2 - "unary", // 3 - "!", // 4 - "[]", // 5 - "unary-", // 6 - "__extensions__", // 7 - "self", // 8 - "item", // 9 - "block", // 10 - "stmt", // 11 - "pat", // 12 - "expr", // 13 - "ty", // 14 - "ident", // 15 - "path", // 16 - "tt", // 17 - "matchers", // 18 - "str", // 19 - "TyVisitor", // 20 - "arg", // 21 - "descrim", // 22 - "__rust_abi", // 23 - "__rust_stack_shim", // 24 - "TyDesc", // 25 - "main", // 26 - "", // 27 - "blk", // 28 - "static", // 29 - "intrinsic", // 30 - "__foreign_mod__", // 31 - "__field__", // 32 - "C", // 33 - "Self", // 34 - - "as", // 35 - "break", // 36 - "const", // 37 - "copy", // 38 - "do", // 39 - "drop", // 40 - "else", // 41 - "enum", // 42 - "extern", // 43 - "false", // 44 - "fn", // 45 - "for", // 46 - "if", // 47 - "impl", // 48 - "let", // 49 - "__log", // 50 - "loop", // 51 - "match", // 52 - "mod", // 53 - "mut", // 54 - "once", // 55 - "priv", // 56 - "pub", // 57 - "pure", // 58 - "ref", // 59 - "return", // 60 - "static", // 29 -- also a special ident - "self", // 8 -- also a special ident - "struct", // 61 - "super", // 62 - "true", // 63 - "trait", // 64 - "type", // 65 - "unsafe", // 66 - "use", // 67 - "while", // 68 - - "be", // 69 - ]; - - @ident_interner { - interner: interner::StrInterner::prefill(init_vec) - } -} - -// return a fresh interner, preloaded with special identifiers. -#[cfg(not(stage0))] fn mk_fresh_ident_interner() -> @ident_interner { // the indices here must correspond to the numbers in // special_idents. @@ -700,48 +612,6 @@ pub mod keywords { } impl Keyword { - #[cfg(stage0)] - pub fn to_ident(&self) -> ident { - match *self { - As => ident { name: 35, ctxt: 0 }, - Break => ident { name: 36, ctxt: 0 }, - Const => ident { name: 37, ctxt: 0 }, - Copy => ident { name: 38, ctxt: 0 }, - Do => ident { name: 39, ctxt: 0 }, - Else => ident { name: 41, ctxt: 0 }, - Enum => ident { name: 42, ctxt: 0 }, - Extern => ident { name: 43, ctxt: 0 }, - False => ident { name: 44, ctxt: 0 }, - Fn => ident { name: 45, ctxt: 0 }, - For => ident { name: 46, ctxt: 0 }, - If => ident { name: 47, ctxt: 0 }, - Impl => ident { name: 48, ctxt: 0 }, - Let => ident { name: 49, ctxt: 0 }, - __Log => ident { name: 50, ctxt: 0 }, - Loop => ident { name: 51, ctxt: 0 }, - Match => ident { name: 52, ctxt: 0 }, - Mod => ident { name: 53, ctxt: 0 }, - Mut => ident { name: 54, ctxt: 0 }, - Once => ident { name: 55, ctxt: 0 }, - Priv => ident { name: 56, ctxt: 0 }, - Pub => ident { name: 57, ctxt: 0 }, - Pure => ident { name: 58, ctxt: 0 }, - Ref => ident { name: 59, ctxt: 0 }, - Return => ident { name: 60, ctxt: 0 }, - Static => ident { name: 29, ctxt: 0 }, - Self => ident { name: 8, ctxt: 0 }, - Struct => ident { name: 61, ctxt: 0 }, - Super => ident { name: 62, ctxt: 0 }, - True => ident { name: 63, ctxt: 0 }, - Trait => ident { name: 64, ctxt: 0 }, - Type => ident { name: 65, ctxt: 0 }, - Unsafe => ident { name: 66, ctxt: 0 }, - Use => ident { name: 67, ctxt: 0 }, - While => ident { name: 68, ctxt: 0 }, - Be => ident { name: 69, ctxt: 0 }, - } - } - #[cfg(not(stage0))] pub fn to_ident(&self) -> ident { match *self { As => ident { name: 35, ctxt: 0 }, @@ -792,18 +662,6 @@ pub fn is_keyword(kw: keywords::Keyword, tok: &Token) -> bool { } } -#[cfg(stage0)] -pub fn is_any_keyword(tok: &Token) -> bool { - match *tok { - token::IDENT(sid, false) => match sid.name { - 8 | 29 | 35 .. 69 => true, - _ => false, - }, - _ => false - } -} - -#[cfg(not(stage0))] pub fn is_any_keyword(tok: &Token) -> bool { match *tok { token::IDENT(sid, false) => match sid.name { @@ -814,18 +672,6 @@ pub fn is_any_keyword(tok: &Token) -> bool { } } -#[cfg(stage0)] -pub fn is_strict_keyword(tok: &Token) -> bool { - match *tok { - token::IDENT(sid, false) => match sid.name { - 8 | 29 | 35 .. 68 => true, - _ => false, - }, - _ => false, - } -} - -#[cfg(not(stage0))] pub fn is_strict_keyword(tok: &Token) -> bool { match *tok { token::IDENT(sid, false) => match sid.name { @@ -836,18 +682,6 @@ pub fn is_strict_keyword(tok: &Token) -> bool { } } -#[cfg(stage0)] -pub fn is_reserved_keyword(tok: &Token) -> bool { - match *tok { - token::IDENT(sid, false) => match sid.name { - 69 => true, - _ => false, - }, - _ => false, - } -} - -#[cfg(not(stage0))] pub fn is_reserved_keyword(tok: &Token) -> bool { match *tok { token::IDENT(sid, false) => match sid.name { diff --git a/src/libsyntax/syntax.rc b/src/libsyntax/syntax.rc index 78fbcab213c..278600bc039 100644 --- a/src/libsyntax/syntax.rc +++ b/src/libsyntax/syntax.rc @@ -30,17 +30,8 @@ extern mod core(name = "std"); extern mod extra(name = "extra"); // For deriving(Encodable) purposes... -#[cfg(stage0)] -extern mod std(name = "extra"); -#[cfg(not(stage0))] extern mod std(name = "std"); -// For bootstrapping purposes. -#[cfg(stage0)] -pub use core::str; -#[cfg(stage0)] -pub use core::unstable; - use core::prelude::*; pub mod util { diff --git a/src/rt/rust_builtin.cpp b/src/rt/rust_builtin.cpp index 3bd5e09e007..e476fa0ad5e 100644 --- a/src/rt/rust_builtin.cpp +++ b/src/rt/rust_builtin.cpp @@ -732,17 +732,10 @@ rust_task_deref(rust_task *task) { // Must call on rust stack. extern "C" CDECL void rust_call_tydesc_glue(void *root, size_t *tydesc, size_t glue_index) { -#ifdef _RUST_STAGE0 - void (*glue_fn)(void *, void *, void *, void *) = - (void (*)(void *, void *, void *, void *))tydesc[glue_index]; - if (glue_fn) - glue_fn(0, 0, 0, root); -#else void (*glue_fn)(void *, void *, void *) = (void (*)(void *, void *, void *))tydesc[glue_index]; if (glue_fn) glue_fn(0, 0, root); -#endif } // Don't run on the Rust stack! @@ -762,11 +755,7 @@ public: virtual void run() { record_sp_limit(0); -#ifdef _RUST_STAGE0 - fn.f(NULL, fn.env, NULL); -#else fn.f(fn.env, NULL); -#endif } }; diff --git a/src/rt/rust_task.cpp b/src/rt/rust_task.cpp index f9b588b7850..fe1b4622137 100644 --- a/src/rt/rust_task.cpp +++ b/src/rt/rust_task.cpp @@ -162,11 +162,7 @@ void task_start_wrapper(spawn_args *a) bool threw_exception = false; try { -#ifdef _RUST_STAGE0 - a->f(NULL, a->envptr, a->argptr); -#else a->f(a->envptr, a->argptr); -#endif } catch (rust_task *ex) { assert(ex == task && "Expected this task to be thrown for unwinding"); threw_exception = true; @@ -187,11 +183,7 @@ void task_start_wrapper(spawn_args *a) if(env) { // free the environment (which should be a unique closure). const type_desc *td = env->td; -#ifdef _RUST_STAGE0 - td->drop_glue(NULL, NULL, NULL, box_body(env)); -#else td->drop_glue(NULL, NULL, box_body(env)); -#endif task->kernel->region()->free(env); } diff --git a/src/rt/rust_type.h b/src/rt/rust_type.h index b50c08379de..6d36d2c960a 100644 --- a/src/rt/rust_type.h +++ b/src/rt/rust_type.h @@ -21,19 +21,11 @@ struct rust_opaque_box; // - the main function: has a NULL environment, but uses the void* arg // - unique closures of type fn~(): have a non-NULL environment, but // no arguments (and hence the final void*) is harmless -#ifdef _RUST_STAGE0 -typedef void (*CDECL spawn_fn)(void *, rust_opaque_box*, void *); -#else typedef void (*CDECL spawn_fn)(rust_opaque_box*, void *); -#endif struct type_desc; -#ifdef _RUST_STAGE0 -typedef void CDECL (glue_fn)(void *, void *, const type_desc **, void *); -#else typedef void CDECL (glue_fn)(void *, const type_desc **, void *); -#endif // Corresponds to the boxed data in the @ region. The body follows the // header; you can obtain a ptr via box_body() below.