@@ -29,7 +29,6 @@ use serialize::Encodable;
2929use std:: cell:: RefCell ;
3030use std:: hash:: Hash ;
3131use std:: hash;
32- use std:: mem;
3332use std:: collections:: HashMap ;
3433use syntax:: abi;
3534use syntax:: ast:: * ;
@@ -1508,44 +1507,36 @@ fn my_visit_expr(_e: &Expr) { }
15081507
15091508fn my_visit_item ( i : & Item ,
15101509 rbml_w : & mut Encoder ,
1511- ecx_ptr : * const int ,
1510+ ecx : & EncodeContext ,
15121511 index : & mut Vec < entry < i64 > > ) {
1513- let mut rbml_w = unsafe { rbml_w. unsafe_clone ( ) } ;
1514- // See above
1515- let ecx: & EncodeContext = unsafe { mem:: transmute ( ecx_ptr) } ;
15161512 ecx. tcx . map . with_path ( i. id , |path| {
1517- encode_info_for_item ( ecx, & mut rbml_w, i, index, path, i. vis ) ;
1513+ encode_info_for_item ( ecx, rbml_w, i, index, path, i. vis ) ;
15181514 } ) ;
15191515}
15201516
15211517fn my_visit_foreign_item ( ni : & ForeignItem ,
15221518 rbml_w : & mut Encoder ,
1523- ecx_ptr : * const int ,
1519+ ecx : & EncodeContext ,
15241520 index : & mut Vec < entry < i64 > > ) {
1525- // See above
1526- let ecx: & EncodeContext = unsafe { mem:: transmute ( ecx_ptr) } ;
15271521 debug ! ( "writing foreign item {}::{}" ,
15281522 ecx. tcx. map. path_to_string( ni. id) ,
15291523 token:: get_ident( ni. ident) ) ;
15301524
1531- let mut rbml_w = unsafe {
1532- rbml_w. unsafe_clone ( )
1533- } ;
15341525 let abi = ecx. tcx . map . get_foreign_abi ( ni. id ) ;
15351526 ecx. tcx . map . with_path ( ni. id , |path| {
1536- encode_info_for_foreign_item ( ecx, & mut rbml_w,
1527+ encode_info_for_foreign_item ( ecx, rbml_w,
15371528 ni, index,
15381529 path, abi) ;
15391530 } ) ;
15401531}
15411532
1542- struct EncodeVisitor < ' a , ' b : ' a > {
1533+ struct EncodeVisitor < ' a , ' b : ' a , ' c : ' a , ' tcx : ' c > {
15431534 rbml_w_for_visit_item : & ' a mut Encoder < ' b > ,
1544- ecx_ptr : * const int ,
1535+ ecx : & ' a EncodeContext < ' c , ' tcx > ,
15451536 index : & ' a mut Vec < entry < i64 > > ,
15461537}
15471538
1548- impl < ' a , ' b , ' v > Visitor < ' v > for EncodeVisitor < ' a , ' b > {
1539+ impl < ' a , ' b , ' c , ' tcx , ' v > Visitor < ' v > for EncodeVisitor < ' a , ' b , ' c , ' tcx > {
15491540 fn visit_expr ( & mut self , ex : & Expr ) {
15501541 visit:: walk_expr ( self , ex) ;
15511542 my_visit_expr ( ex) ;
@@ -1554,14 +1545,14 @@ impl<'a, 'b, 'v> Visitor<'v> for EncodeVisitor<'a, 'b> {
15541545 visit:: walk_item ( self , i) ;
15551546 my_visit_item ( i,
15561547 self . rbml_w_for_visit_item ,
1557- self . ecx_ptr ,
1548+ self . ecx ,
15581549 self . index ) ;
15591550 }
15601551 fn visit_foreign_item ( & mut self , ni : & ForeignItem ) {
15611552 visit:: walk_foreign_item ( self , ni) ;
15621553 my_visit_foreign_item ( ni,
15631554 self . rbml_w_for_visit_item ,
1564- self . ecx_ptr ,
1555+ self . ecx ,
15651556 self . index ) ;
15661557 }
15671558}
@@ -1585,11 +1576,9 @@ fn encode_info_for_items(ecx: &EncodeContext,
15851576 syntax:: parse:: token:: special_idents:: invalid,
15861577 Public ) ;
15871578
1588- // See comment in `encode_side_tables_for_ii` in astencode
1589- let ecx_ptr: * const int = unsafe { mem:: transmute ( ecx) } ;
15901579 visit:: walk_crate ( & mut EncodeVisitor {
15911580 index : & mut index,
1592- ecx_ptr : ecx_ptr ,
1581+ ecx : ecx ,
15931582 rbml_w_for_visit_item : & mut * rbml_w,
15941583 } , krate) ;
15951584
0 commit comments