@@ -27,7 +27,6 @@ use core::run;
2727use core:: hashmap:: linear:: LinearMap ;
2828use core:: task;
2929use core:: to_bytes;
30- use core:: mutable:: Mut ;
3130
3231/**
3332*
@@ -168,7 +167,7 @@ impl<D:Decoder> Decodable<D> for WorkMap {
168167struct Database {
169168 db_filename : Path ,
170169 db_cache : LinearMap < ~str , ~str > ,
171- mut db_dirty : bool
170+ db_dirty : bool
172171}
173172
174173pub impl Database {
@@ -210,8 +209,8 @@ pub impl Logger {
210209}
211210
212211struct Context {
213- db: @Mut< Database> ,
214- logger: @Mut< Logger> ,
212+ db: @mut Database,
213+ logger: @mut Logger,
215214 cfg: @json::Object,
216215 freshness: LinearMap<~str,@fn(&str,&str)->bool>
217216}
@@ -228,7 +227,7 @@ struct Exec {
228227}
229228
230229struct Work<T> {
231- prep: @Mut< Prep> ,
230+ prep: @mut Prep,
232231 res: Option<Either<T,PortOne<(Exec,T)>>>
233232}
234233
@@ -261,8 +260,8 @@ fn digest_file(path: &Path) -> ~str {
261260
262261pub impl Context {
263262
264- fn new(db: @Mut< Database> ,
265- lg: @Mut< Logger> ,
263+ fn new(db: @mut Database,
264+ lg: @mut Logger,
266265 cfg: @json::Object) -> Context {
267266 Context {
268267 db: db,
@@ -277,19 +276,19 @@ pub impl Context {
277276 Decodable<json::Decoder>>( // FIXME(#5121)
278277 @self,
279278 fn_name:&str,
280- blk: &fn(@Mut< Prep> )->Work<T>) -> Work<T> {
281- let p = @Mut( Prep {
279+ blk: &fn(@mut Prep)->Work<T>) -> Work<T> {
280+ let p = @mut Prep {
282281 ctxt: self,
283282 fn_name: fn_name.to_owned(),
284283 declared_inputs: WorkMap::new()
285- }) ;
284+ };
286285 blk(p)
287286 }
288287}
289288
290289
291290trait TPrep {
292- fn declare_input(&self, kind:&str, name:&str, val:&str);
291+ fn declare_input(&mut self, kind:&str, name:&str, val:&str);
293292 fn is_fresh(&self, cat:&str, kind:&str, name:&str, val:&str) -> bool;
294293 fn all_fresh(&self, cat:&str, map:&WorkMap) -> bool;
295294 fn exec<T:Owned +
@@ -298,30 +297,25 @@ trait TPrep {
298297 &self, blk: ~fn(&Exec) -> T) -> Work<T>;
299298}
300299
301- impl TPrep for @Mut<Prep> {
302- fn declare_input(&self, kind:&str, name:&str, val:&str) {
303- do self.borrow_mut |p| {
304- p.declared_inputs.insert(WorkKey::new(kind, name),
305- val.to_owned());
306- }
300+ impl TPrep for Prep {
301+ fn declare_input(&mut self, kind:&str, name:&str, val:&str) {
302+ self.declared_inputs.insert(WorkKey::new(kind, name),
303+ val.to_owned());
307304 }
308305
309306 fn is_fresh(&self, cat: &str, kind: &str,
310307 name: &str, val: &str) -> bool {
311- do self.borrow_imm |p| {
312- let k = kind.to_owned();
313- let f = (*p.ctxt.freshness.get(&k))(name, val);
314- do p.ctxt.logger.borrow_imm |lg| {
315- if f {
316- lg.info(fmt!(" %s %s: %s is fresh",
317- cat, kind, name) ) ;
318- } else {
319- lg. info( fmt ! ( "%s %s:%s is not fresh" ,
320- cat, kind, name) )
321- }
308+ let k = kind.to_owned();
309+ let f = (*self.ctxt.freshness.get(&k))(name, val);
310+ let lg = self.ctxt.logger;
311+ if f {
312+ lg.info(fmt!(" %s %s: %s is fresh",
313+ cat, kind, name) ) ;
314+ } else {
315+ lg. info( fmt ! ( "%s %s:%s is not fresh" ,
316+ cat, kind, name) )
322317 }
323- f
324- }
318+ f
325319 }
326320
327321 fn all_fresh ( & self , cat : & str , map : & WorkMap ) -> bool {
@@ -339,38 +333,34 @@ impl TPrep for @Mut<Prep> {
339333 & self , blk : ~fn ( & Exec ) -> T ) -> Work < T > {
340334 let mut bo = Some ( blk) ;
341335
342- do self. borrow_imm |p| {
343- let cached = do p. ctxt . db . borrow_mut |db| {
344- db. prepare ( p. fn_name , & p. declared_inputs )
345- } ;
336+ let cached = self . ctxt . db . prepare ( self . fn_name , & self . declared_inputs ) ;
346337
347- match cached {
348- Some ( ( ref disc_in, ref disc_out, ref res) )
349- if self . all_fresh ( "declared input" ,
350- & p . declared_inputs ) &&
351- self . all_fresh ( "discovered input" , disc_in) &&
352- self . all_fresh ( "discovered output" , disc_out) => {
353- Work :: new ( * self , Left ( json_decode ( * res) ) )
354- }
338+ match cached {
339+ Some ( ( ref disc_in, ref disc_out, ref res) )
340+ if self . all_fresh ( "declared input" ,
341+ & self . declared_inputs ) &&
342+ self . all_fresh ( "discovered input" , disc_in) &&
343+ self . all_fresh ( "discovered output" , disc_out) => {
344+ Work :: new ( @ mut * self , Left ( json_decode ( * res) ) )
345+ }
355346
356- _ => {
357- let ( chan, port) = oneshot:: init ( ) ;
358- let mut blk = None ;
359- blk <-> bo;
360- let blk = blk. unwrap ( ) ;
361- let chan = Cell ( chan) ;
362- do task:: spawn || {
363- let exe = Exec {
364- discovered_inputs : WorkMap :: new ( ) ,
365- discovered_outputs : WorkMap :: new ( ) ,
366- } ;
367- let chan = chan. take ( ) ;
368- let v = blk ( & exe) ;
369- send_one ( chan, ( exe, v) ) ;
370- }
371-
372- Work :: new ( * self , Right ( port) )
347+ _ => {
348+ let ( chan, port) = oneshot:: init ( ) ;
349+ let mut blk = None ;
350+ blk <-> bo;
351+ let blk = blk. unwrap ( ) ;
352+ let chan = Cell ( chan) ;
353+
354+ do task:: spawn || {
355+ let exe = Exec {
356+ discovered_inputs : WorkMap :: new ( ) ,
357+ discovered_outputs : WorkMap :: new ( ) ,
358+ } ;
359+ let chan = chan. take ( ) ;
360+ let v = blk ( & exe) ;
361+ send_one ( chan, ( exe, v) ) ;
373362 }
363+ Work :: new ( @mut * self , Right ( port) )
374364 }
375365 }
376366 }
@@ -379,7 +369,7 @@ impl TPrep for @Mut<Prep> {
379369pub impl < T : Owned +
380370 Encodable < json:: Encoder > +
381371 Decodable < json:: Decoder > > Work < T > { // FIXME(#5121)
382- fn new ( p : @Mut < Prep > , e : Either < T , PortOne < ( Exec , T ) > > ) -> Work < T > {
372+ fn new ( p : @mut Prep , e : Either < T , PortOne < ( Exec , T ) > > ) -> Work < T > {
383373 Work { prep : p, res : Some ( e) }
384374 }
385375}
@@ -404,15 +394,13 @@ fn unwrap<T:Owned +
404394
405395 let s = json_encode ( & v) ;
406396
407- do ww. prep . borrow_imm |p| {
408- do p. ctxt . db . borrow_mut |db| {
409- db. cache ( p. fn_name ,
410- & p. declared_inputs ,
411- & exe. discovered_inputs ,
412- & exe. discovered_outputs ,
413- s) ;
414- }
415- }
397+ let p = & * ww. prep ;
398+ let db = p. ctxt . db ;
399+ db. cache ( p. fn_name ,
400+ & p. declared_inputs ,
401+ & exe. discovered_inputs ,
402+ & exe. discovered_outputs ,
403+ s) ;
416404 v
417405 }
418406 }
@@ -422,10 +410,10 @@ fn unwrap<T:Owned +
422410fn test ( ) {
423411 use core:: io:: WriterUtil ;
424412
425- let db = @Mut ( Database { db_filename : Path ( "db.json" ) ,
413+ let db = @mut Database { db_filename : Path ( "db.json" ) ,
426414 db_cache : LinearMap :: new ( ) ,
427- db_dirty : false } ) ;
428- let lg = @Mut ( Logger { a : ( ) } ) ;
415+ db_dirty : false } ;
416+ let lg = @mut Logger { a : ( ) } ;
429417 let cfg = @LinearMap :: new ( ) ;
430418 let cx = @Context :: new ( db, lg, cfg) ;
431419 let w: Work < ~str > = do cx. prep ( "test1" ) |prep| {
0 commit comments