Skip to content

Commit 5f13e9c

Browse files
committed
auto merge of #5678 : Thiez/rust/no-Mut, r=thestinger
This pull request completely removes Mut<T> and the associated file (libcore/mutable.rs). Some minor changes were made to workcache (libstd/workcache.rs) as it was using Mut. r?
2 parents 00dbbd0 + f43e6af commit 5f13e9c

File tree

3 files changed

+60
-231
lines changed

3 files changed

+60
-231
lines changed

src/libcore/core.rc

-1
Original file line numberDiff line numberDiff line change
@@ -212,7 +212,6 @@ pub mod rand;
212212
pub mod run;
213213
pub mod sys;
214214
pub mod cast;
215-
pub mod mutable;
216215
pub mod flate;
217216
pub mod repr;
218217
pub mod cleanup;

src/libcore/mutable.rs

-158
This file was deleted.

src/libstd/workcache.rs

+60-72
Original file line numberDiff line numberDiff line change
@@ -27,7 +27,6 @@ use core::run;
2727
use core::hashmap::linear::LinearMap;
2828
use core::task;
2929
use core::to_bytes;
30-
use core::mutable::Mut;
3130

3231
/**
3332
*
@@ -168,7 +167,7 @@ impl<D:Decoder> Decodable<D> for WorkMap {
168167
struct Database {
169168
db_filename: Path,
170169
db_cache: LinearMap<~str, ~str>,
171-
mut db_dirty: bool
170+
db_dirty: bool
172171
}
173172

174173
pub impl Database {
@@ -210,8 +209,8 @@ pub impl Logger {
210209
}
211210
212211
struct 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
230229
struct 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
262261
pub 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
291290
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);
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> {
379369
pub 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 +
422410
fn 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

Comments
 (0)