about summary refs log tree commit diff
diff options
context:
space:
mode:
-rw-r--r--src/libextra/arena.rs20
-rw-r--r--src/librustc/metadata/decoder.rs8
-rw-r--r--src/librustc/middle/mem_categorization.rs2
-rw-r--r--src/librustc/middle/reachable.rs3
-rw-r--r--src/librustc/middle/resolve.rs4
5 files changed, 24 insertions, 13 deletions
diff --git a/src/libextra/arena.rs b/src/libextra/arena.rs
index 79e09c32030..2f18b0562e0 100644
--- a/src/libextra/arena.rs
+++ b/src/libextra/arena.rs
@@ -229,15 +229,25 @@ impl Arena {
     fn alloc_nonpod_inner(&mut self, n_bytes: uint, align: uint)
                           -> (*u8, *u8) {
         unsafe {
-            let head = transmute_mut_region(&mut self.head);
+            let start;
+            let end;
+            let tydesc_start;
+            let after_tydesc;
+
+            {
+                let head = transmute_mut_region(&mut self.head);
+
+                tydesc_start = head.fill;
+                after_tydesc = head.fill + sys::size_of::<*TyDesc>();
+                start = round_up_to(after_tydesc, align);
+                end = start + n_bytes;
+            }
 
-            let tydesc_start = head.fill;
-            let after_tydesc = head.fill + sys::size_of::<*TyDesc>();
-            let start = round_up_to(after_tydesc, align);
-            let end = start + n_bytes;
             if end > at_vec::capacity(self.head.data) {
                 return self.alloc_nonpod_grow(n_bytes, align);
             }
+
+            let head = transmute_mut_region(&mut self.head);
             head.fill = round_up_to(end, sys::pref_align_of::<*TyDesc>());
 
             //debug!("idx = %u, size = %u, align = %u, fill = %u",
diff --git a/src/librustc/metadata/decoder.rs b/src/librustc/metadata/decoder.rs
index 2ebaa2b739f..ba8df3a6038 100644
--- a/src/librustc/metadata/decoder.rs
+++ b/src/librustc/metadata/decoder.rs
@@ -523,10 +523,10 @@ impl<'self> EachItemContext<'self> {
                 Mod | ForeignMod | Trait | Impl => {
                     continue = self.each_item_of_module(def_id);
                 }
-                Freeze | Struct | UnsafeFn | Fn | PureFn | ForeignFn |
-                UnsafeStaticMethod | StaticMethod | PureStaticMethod | Type |
-                ForeignType | Variant | Enum | PublicField | PrivateField |
-                InheritedField => {}
+                ImmStatic | MutStatic | Struct | UnsafeFn | Fn | PureFn |
+                ForeignFn | UnsafeStaticMethod | StaticMethod |
+                PureStaticMethod | Type | ForeignType | Variant | Enum |
+                PublicField | PrivateField | InheritedField => {}
             }
         }
 
diff --git a/src/librustc/middle/mem_categorization.rs b/src/librustc/middle/mem_categorization.rs
index f93cb265d78..52c01fa7647 100644
--- a/src/librustc/middle/mem_categorization.rs
+++ b/src/librustc/middle/mem_categorization.rs
@@ -452,7 +452,7 @@ impl mem_categorization_ctxt {
           ast::def_trait(_) | ast::def_ty(_) | ast::def_prim_ty(_) |
           ast::def_ty_param(*) | ast::def_struct(*) |
           ast::def_typaram_binder(*) | ast::def_region(_) |
-          ast::def_label(_) | ast::def_self_ty(*) => {
+          ast::def_label(_) | ast::def_self_ty(*) | ast::def_method(*) => {
               @cmt_ {
                   id:id,
                   span:span,
diff --git a/src/librustc/middle/reachable.rs b/src/librustc/middle/reachable.rs
index fe7eccf9d59..88bd9c1f6f4 100644
--- a/src/librustc/middle/reachable.rs
+++ b/src/librustc/middle/reachable.rs
@@ -396,7 +396,8 @@ impl ReachableContext {
     // this properly would result in the necessity of computing *type*
     // reachability, which might result in a compile time loss.
     fn mark_destructors_reachable(&self) {
-        for self.tcx.destructor_for_type.each |_, destructor_def_id| {
+        for self.tcx.destructor_for_type.iter().advance
+                |(_, destructor_def_id)| {
             if destructor_def_id.crate == local_crate {
                 self.reachable_symbols.insert(destructor_def_id.node);
             }
diff --git a/src/librustc/middle/resolve.rs b/src/librustc/middle/resolve.rs
index aa7033221cf..b2bfd9d1661 100644
--- a/src/librustc/middle/resolve.rs
+++ b/src/librustc/middle/resolve.rs
@@ -3240,8 +3240,8 @@ impl Resolver {
     pub fn add_exports_for_module(@mut self,
                                   exports2: &mut ~[Export2],
                                   module_: @mut Module) {
-        for module_.import_resolutions.iter().advance |ident,
-                                                       importresolution| {
+        for module_.import_resolutions.iter().advance |(ident,
+                                                        importresolution)| {
             if importresolution.privacy != Public {
                 debug!("(computing exports) not reexporting private `%s`",
                        self.session.str_of(*ident));