about summary refs log tree commit diff
diff options
context:
space:
mode:
authorPatrick Walton <pcwalton@mimiga.net>2013-04-01 15:33:21 -0700
committerPatrick Walton <pcwalton@mimiga.net>2013-04-19 11:53:32 -0700
commit3ffaaab9e9e3a2437fd9ed5b04cf3ba3695cc2d2 (patch)
treebda2064de1f021a6f6597ec4edc589560d049a5f
parentaf42d37547c15732a7c9d358c0a14967aef75e96 (diff)
downloadrust-3ffaaab9e9e3a2437fd9ed5b04cf3ba3695cc2d2.tar.gz
rust-3ffaaab9e9e3a2437fd9ed5b04cf3ba3695cc2d2.zip
librustc: Switch the `@`s in types with `~`
-rw-r--r--src/librustc/middle/ty.rs18
-rw-r--r--src/test/bench/core-map.rs1
2 files changed, 13 insertions, 6 deletions
diff --git a/src/librustc/middle/ty.rs b/src/librustc/middle/ty.rs
index 4212b03c416..ef0b2070a0e 100644
--- a/src/librustc/middle/ty.rs
+++ b/src/librustc/middle/ty.rs
@@ -232,7 +232,7 @@ pub type ctxt = @ctxt_;
 
 struct ctxt_ {
     diag: @syntax::diagnostic::span_handler,
-    interner: @mut HashMap<intern_key, t_box>,
+    interner: @mut HashMap<intern_key, ~t_box_>,
     next_id: @mut uint,
     vecs_implicitly_copyable: bool,
     legacy_modes: bool,
@@ -320,7 +320,7 @@ enum tbox_flag {
     needs_subst = 1 | 2 | 8
 }
 
-type t_box = @t_box_;
+type t_box = &'static t_box_;
 
 struct t_box_ {
     sty: sty,
@@ -903,7 +903,7 @@ fn mk_t(cx: ctxt, +st: sty) -> t { mk_t_with_id(cx, st, None) }
 fn mk_t_with_id(cx: ctxt, +st: sty, o_def_id: Option<ast::def_id>) -> t {
     let key = intern_key { sty: to_unsafe_ptr(&st), o_def_id: o_def_id };
     match cx.interner.find(&key) {
-      Some(&t) => unsafe { return cast::reinterpret_cast(&t); },
+      Some(t) => unsafe { return cast::transmute(&t.sty); },
       _ => ()
     }
 
@@ -973,21 +973,27 @@ fn mk_t_with_id(cx: ctxt, +st: sty, o_def_id: Option<ast::def_id>) -> t {
       }
     }
 
-    let t = @t_box_ {
+    let t = ~t_box_ {
         sty: st,
         id: *cx.next_id,
         flags: flags,
         o_def_id: o_def_id
     };
+
+    let sty_ptr = to_unsafe_ptr(&t.sty);
+
     let key = intern_key {
-        sty: to_unsafe_ptr(&t.sty),
+        sty: sty_ptr,
         o_def_id: o_def_id
     };
 
     cx.interner.insert(key, t);
 
     *cx.next_id += 1;
-    unsafe { cast::reinterpret_cast(&t) }
+
+    unsafe {
+        cast::transmute::<*sty, t>(sty_ptr)
+    }
 }
 
 pub fn mk_nil(cx: ctxt) -> t { mk_t(cx, ty_nil) }
diff --git a/src/test/bench/core-map.rs b/src/test/bench/core-map.rs
index 8a8962fb9d6..b75aa3c909b 100644
--- a/src/test/bench/core-map.rs
+++ b/src/test/bench/core-map.rs
@@ -88,6 +88,7 @@ fn vector<M: Map<uint, uint>>(map: &mut M, n_keys: uint, dist: &[uint]) {
     }
 }
 
+#[fixed_stack_segment]
 fn main() {
     let args = os::args();
     let n_keys = {