@@ -1080,12 +1080,13 @@ impl<'a, 'gcx, 'tcx> TyCtxt<'a, 'gcx, 'tcx> {
10801080 self ,
10811081 alloc : interpret:: Allocation ,
10821082 ) -> & ' gcx interpret:: Allocation {
1083- if let Some ( alloc) = self . interpret_interner . inner . borrow ( ) . allocs . get ( & alloc) {
1083+ let allocs = & mut self . interpret_interner . inner . borrow_mut ( ) . allocs ;
1084+ if let Some ( alloc) = allocs. get ( & alloc) {
10841085 return alloc;
10851086 }
10861087
10871088 let interned = self . global_arenas . const_allocs . alloc ( alloc) ;
1088- if let Some ( prev) = self . interpret_interner . inner . borrow_mut ( ) . allocs . replace ( interned) {
1089+ if let Some ( prev) = allocs. replace ( interned) {
10891090 bug ! ( "Tried to overwrite interned Allocation: {:#?}" , prev)
10901091 }
10911092 interned
@@ -1112,24 +1113,26 @@ impl<'a, 'gcx, 'tcx> TyCtxt<'a, 'gcx, 'tcx> {
11121113 }
11131114
11141115 pub fn intern_stability ( self , stab : attr:: Stability ) -> & ' gcx attr:: Stability {
1115- if let Some ( st) = self . stability_interner . borrow ( ) . get ( & stab) {
1116+ let mut stability_interner = self . stability_interner . borrow_mut ( ) ;
1117+ if let Some ( st) = stability_interner. get ( & stab) {
11161118 return st;
11171119 }
11181120
11191121 let interned = self . global_interners . arena . alloc ( stab) ;
1120- if let Some ( prev) = self . stability_interner . borrow_mut ( ) . replace ( interned) {
1122+ if let Some ( prev) = stability_interner. replace ( interned) {
11211123 bug ! ( "Tried to overwrite interned Stability: {:?}" , prev)
11221124 }
11231125 interned
11241126 }
11251127
11261128 pub fn intern_layout ( self , layout : LayoutDetails ) -> & ' gcx LayoutDetails {
1127- if let Some ( layout) = self . layout_interner . borrow ( ) . get ( & layout) {
1129+ let mut layout_interner = self . layout_interner . borrow_mut ( ) ;
1130+ if let Some ( layout) = layout_interner. get ( & layout) {
11281131 return layout;
11291132 }
11301133
11311134 let interned = self . global_arenas . layout . alloc ( layout) ;
1132- if let Some ( prev) = self . layout_interner . borrow_mut ( ) . replace ( interned) {
1135+ if let Some ( prev) = layout_interner. replace ( interned) {
11331136 bug ! ( "Tried to overwrite interned Layout: {:?}" , prev)
11341137 }
11351138 interned
0 commit comments