diff options
| author | Patrick Walton <pcwalton@mimiga.net> | 2013-04-01 15:33:21 -0700 |
|---|---|---|
| committer | Patrick Walton <pcwalton@mimiga.net> | 2013-04-19 11:53:32 -0700 |
| commit | 3ffaaab9e9e3a2437fd9ed5b04cf3ba3695cc2d2 (patch) | |
| tree | bda2064de1f021a6f6597ec4edc589560d049a5f | |
| parent | af42d37547c15732a7c9d358c0a14967aef75e96 (diff) | |
| download | rust-3ffaaab9e9e3a2437fd9ed5b04cf3ba3695cc2d2.tar.gz rust-3ffaaab9e9e3a2437fd9ed5b04cf3ba3695cc2d2.zip | |
librustc: Switch the `@`s in types with `~`
| -rw-r--r-- | src/librustc/middle/ty.rs | 18 | ||||
| -rw-r--r-- | src/test/bench/core-map.rs | 1 |
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 = { |
