@@ -63,7 +63,7 @@ pub struct CrateSource {
63
63
pub struct CStore {
64
64
priv metas : RefCell < HashMap < ast:: CrateNum , @crate_metadata > > ,
65
65
priv extern_mod_crate_map : RefCell < extern_mod_crate_map > ,
66
- priv used_crate_sources : ~[ CrateSource ] ,
66
+ priv used_crate_sources : RefCell < ~[ CrateSource ] > ,
67
67
priv used_libraries : ~[ ( ~str , NativeLibaryKind ) ] ,
68
68
priv used_link_args : ~[ ~str ] ,
69
69
intr : @ident_interner
@@ -77,7 +77,7 @@ impl CStore {
77
77
CStore {
78
78
metas : RefCell :: new ( HashMap :: new ( ) ) ,
79
79
extern_mod_crate_map : RefCell :: new ( HashMap :: new ( ) ) ,
80
- used_crate_sources : ~[ ] ,
80
+ used_crate_sources : RefCell :: new ( ~[ ] ) ,
81
81
used_libraries : ~[ ] ,
82
82
used_link_args : ~[ ] ,
83
83
intr : intr
@@ -117,18 +117,17 @@ impl CStore {
117
117
}
118
118
119
119
pub fn add_used_crate_source ( & mut self , src : CrateSource ) {
120
- if !self . used_crate_sources . contains ( & src) {
121
- self . used_crate_sources . push ( src) ;
120
+ let mut used_crate_sources = self . used_crate_sources . borrow_mut ( ) ;
121
+ if !used_crate_sources. get ( ) . contains ( & src) {
122
+ used_crate_sources. get ( ) . push ( src) ;
122
123
}
123
124
}
124
125
125
- pub fn get_used_crate_sources < ' a > ( & ' a self ) -> & ' a [ CrateSource ] {
126
- self . used_crate_sources . as_slice ( )
127
- }
128
-
129
126
pub fn get_used_crates ( & self , prefer : LinkagePreference )
130
127
-> ~[ ( ast:: CrateNum , Option < Path > ) ] {
131
- self . used_crate_sources . iter ( )
128
+ let used_crate_sources = self . used_crate_sources . borrow ( ) ;
129
+ used_crate_sources. get ( )
130
+ . iter ( )
132
131
. map ( |src| ( src. cnum , match prefer {
133
132
RequireDynamic => src. dylib . clone ( ) ,
134
133
RequireStatic => src. rlib . clone ( ) ,
0 commit comments