@@ -27,7 +27,6 @@ use core::run;
27
27
use core:: hashmap:: linear:: LinearMap ;
28
28
use core:: task;
29
29
use core:: to_bytes;
30
- use core:: mutable:: Mut ;
31
30
32
31
/**
33
32
*
@@ -168,7 +167,7 @@ impl<D:Decoder> Decodable<D> for WorkMap {
168
167
struct Database {
169
168
db_filename : Path ,
170
169
db_cache : LinearMap < ~str , ~str > ,
171
- mut db_dirty : bool
170
+ db_dirty : bool
172
171
}
173
172
174
173
pub impl Database {
@@ -210,8 +209,8 @@ pub impl Logger {
210
209
}
211
210
212
211
struct Context {
213
- db: @Mut< Database> ,
214
- logger: @Mut< Logger> ,
212
+ db: @mut Database,
213
+ logger: @mut Logger,
215
214
cfg: @json::Object,
216
215
freshness: LinearMap<~str,@fn(&str,&str)->bool>
217
216
}
@@ -228,7 +227,7 @@ struct Exec {
228
227
}
229
228
230
229
struct Work<T> {
231
- prep: @Mut< Prep> ,
230
+ prep: @mut Prep,
232
231
res: Option<Either<T,PortOne<(Exec,T)>>>
233
232
}
234
233
@@ -261,8 +260,8 @@ fn digest_file(path: &Path) -> ~str {
261
260
262
261
pub impl Context {
263
262
264
- fn new(db: @Mut< Database> ,
265
- lg: @Mut< Logger> ,
263
+ fn new(db: @mut Database,
264
+ lg: @mut Logger,
266
265
cfg: @json::Object) -> Context {
267
266
Context {
268
267
db: db,
@@ -277,19 +276,19 @@ pub impl Context {
277
276
Decodable<json::Decoder>>( // FIXME(#5121)
278
277
@self,
279
278
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 {
282
281
ctxt: self,
283
282
fn_name: fn_name.to_owned(),
284
283
declared_inputs: WorkMap::new()
285
- }) ;
284
+ };
286
285
blk(p)
287
286
}
288
287
}
289
288
290
289
291
290
trait TPrep {
292
- fn declare_input(&self, kind:&str, name:&str, val:&str);
291
+ fn declare_input(&mut self, kind:&str, name:&str, val:&str);
293
292
fn is_fresh(&self, cat:&str, kind:&str, name:&str, val:&str) -> bool;
294
293
fn all_fresh(&self, cat:&str, map:&WorkMap) -> bool;
295
294
fn exec<T:Owned +
@@ -298,30 +297,25 @@ trait TPrep {
298
297
&self, blk: ~fn(&Exec) -> T) -> Work<T>;
299
298
}
300
299
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());
307
304
}
308
305
309
306
fn is_fresh(&self, cat: &str, kind: &str,
310
307
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) )
322
317
}
323
- f
324
- }
318
+ f
325
319
}
326
320
327
321
fn all_fresh ( & self , cat : & str , map : & WorkMap ) -> bool {
@@ -339,38 +333,34 @@ impl TPrep for @Mut<Prep> {
339
333
& self , blk : ~fn ( & Exec ) -> T ) -> Work < T > {
340
334
let mut bo = Some ( blk) ;
341
335
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 ) ;
346
337
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
+ }
355
346
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) ) ;
373
362
}
363
+ Work :: new ( @mut * self , Right ( port) )
374
364
}
375
365
}
376
366
}
@@ -379,7 +369,7 @@ impl TPrep for @Mut<Prep> {
379
369
pub impl < T : Owned +
380
370
Encodable < json:: Encoder > +
381
371
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 > {
383
373
Work { prep : p, res : Some ( e) }
384
374
}
385
375
}
@@ -404,15 +394,13 @@ fn unwrap<T:Owned +
404
394
405
395
let s = json_encode ( & v) ;
406
396
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) ;
416
404
v
417
405
}
418
406
}
@@ -422,10 +410,10 @@ fn unwrap<T:Owned +
422
410
fn test ( ) {
423
411
use core:: io:: WriterUtil ;
424
412
425
- let db = @Mut ( Database { db_filename : Path ( "db.json" ) ,
413
+ let db = @mut Database { db_filename : Path ( "db.json" ) ,
426
414
db_cache : LinearMap :: new ( ) ,
427
- db_dirty : false } ) ;
428
- let lg = @Mut ( Logger { a : ( ) } ) ;
415
+ db_dirty : false } ;
416
+ let lg = @mut Logger { a : ( ) } ;
429
417
let cfg = @LinearMap :: new ( ) ;
430
418
let cx = @Context :: new ( db, lg, cfg) ;
431
419
let w: Work < ~str > = do cx. prep ( "test1" ) |prep| {
0 commit comments