From 3ffaaab9e9e3a2437fd9ed5b04cf3ba3695cc2d2 Mon Sep 17 00:00:00 2001 From: Patrick Walton Date: Mon, 1 Apr 2013 15:33:21 -0700 Subject: [PATCH] librustc: Switch the `@`s in types with `~` --- src/librustc/middle/ty.rs | 18 ++++++++++++------ 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 4212b03c4165..ef0b2070a0e0 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, + interner: @mut HashMap, 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) -> 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) -> 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 8a8962fb9d63..b75aa3c909b9 100644 --- a/src/test/bench/core-map.rs +++ b/src/test/bench/core-map.rs @@ -88,6 +88,7 @@ fn vector>(map: &mut M, n_keys: uint, dist: &[uint]) { } } +#[fixed_stack_segment] fn main() { let args = os::args(); let n_keys = {