@@ -62,7 +62,7 @@ pub struct CrateSource {
62
62
63
63
pub struct CStore {
64
64
priv metas : RefCell < HashMap < ast:: CrateNum , @crate_metadata > > ,
65
- priv extern_mod_crate_map : extern_mod_crate_map ,
65
+ priv extern_mod_crate_map : RefCell < extern_mod_crate_map > ,
66
66
priv used_crate_sources : ~[ CrateSource ] ,
67
67
priv used_libraries : ~[ ( ~str , NativeLibaryKind ) ] ,
68
68
priv used_link_args : ~[ ~str ] ,
@@ -76,7 +76,7 @@ impl CStore {
76
76
pub fn new ( intr : @ident_interner ) -> CStore {
77
77
CStore {
78
78
metas : RefCell :: new ( HashMap :: new ( ) ) ,
79
- extern_mod_crate_map : HashMap :: new ( ) ,
79
+ extern_mod_crate_map : RefCell :: new ( HashMap :: new ( ) ) ,
80
80
used_crate_sources : ~[ ] ,
81
81
used_libraries : ~[ ] ,
82
82
used_link_args : ~[ ] ,
@@ -162,20 +162,23 @@ impl CStore {
162
162
pub fn add_extern_mod_stmt_cnum ( & mut self ,
163
163
emod_id : ast:: NodeId ,
164
164
cnum : ast:: CrateNum ) {
165
- self . extern_mod_crate_map . insert ( emod_id, cnum) ;
165
+ let mut extern_mod_crate_map = self . extern_mod_crate_map . borrow_mut ( ) ;
166
+ extern_mod_crate_map. get ( ) . insert ( emod_id, cnum) ;
166
167
}
167
168
168
169
pub fn find_extern_mod_stmt_cnum ( & self , emod_id : ast:: NodeId )
169
170
-> Option < ast:: CrateNum > {
170
- self . extern_mod_crate_map . find ( & emod_id) . map ( |x| * x)
171
+ let extern_mod_crate_map = self . extern_mod_crate_map . borrow ( ) ;
172
+ extern_mod_crate_map. get ( ) . find ( & emod_id) . map ( |x| * x)
171
173
}
172
174
173
175
// returns hashes of crates directly used by this crate. Hashes are sorted by
174
176
// (crate name, crate version, crate hash) in lexicographic order (not semver)
175
177
pub fn get_dep_hashes ( & self ) -> ~[ @str ] {
176
178
let mut result = ~[ ] ;
177
179
178
- for ( _, & cnum) in self . extern_mod_crate_map . iter ( ) {
180
+ let extern_mod_crate_map = self . extern_mod_crate_map . borrow ( ) ;
181
+ for ( _, & cnum) in extern_mod_crate_map. get ( ) . iter ( ) {
179
182
let cdata = self . get_crate_data ( cnum) ;
180
183
let hash = decoder:: get_crate_hash ( cdata. data ( ) ) ;
181
184
let vers = decoder:: get_crate_vers ( cdata. data ( ) ) ;
0 commit comments