Skip to content

Commit 6af0525

Browse files
committed
---
yaml --- r: 152187 b: refs/heads/try2 c: 0777ce8 h: refs/heads/master i: 152185: 66d2b86 152183: 175f298 v: v3
1 parent 892d265 commit 6af0525

File tree

2 files changed

+10
-7
lines changed

2 files changed

+10
-7
lines changed

[refs]

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -5,7 +5,7 @@ refs/heads/snap-stage3: 78a7676898d9f80ab540c6df5d4c9ce35bb50463
55
refs/heads/try: 519addf6277dbafccbb4159db4b710c37eaa2ec5
66
refs/tags/release-0.1: 1f5c5126e96c79d22cb7862f75304136e204f105
77
refs/heads/ndm: f3868061cd7988080c30d6d5bf352a5a5fe2460b
8-
refs/heads/try2: 356423d8f1c308f0dc77f803f8ed00c7e80305f3
8+
refs/heads/try2: 0777ce86e1adc55362e1190db7b74e8f29559b3d
99
refs/heads/dist-snap: ba4081a5a8573875fed17545846f6f6902c8ba8d
1010
refs/tags/release-0.2: c870d2dffb391e14efb05aa27898f1f6333a9596
1111
refs/tags/release-0.3: b5f0d0f648d9a6153664837026ba1be43d3e2503

branches/try2/src/librustdoc/html/render.rs

Lines changed: 9 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -307,11 +307,17 @@ pub fn run(mut krate: clean::Crate, dst: Path) -> io::IoResult<()> {
307307
}
308308

309309
let index = try!(build_index(&krate, &mut cache));
310-
try!(write_shared(&cx, &krate, &cache, index));
310+
311+
// Freeze the cache now that the index has been built. Put an Arc into TLS
312+
// for future parallelization opportunities
313+
let cache = Arc::new(cache);
314+
cache_key.replace(Some(cache.clone()));
315+
316+
try!(write_shared(&cx, &krate, &*cache, index));
311317
let krate = try!(render_sources(&mut cx, krate));
312318

313319
// And finally render the whole crate's documentation
314-
cx.krate(krate, cache)
320+
cx.krate(krate)
315321
}
316322

317323
fn build_index(krate: &clean::Crate, cache: &mut Cache) -> io::IoResult<String> {
@@ -954,16 +960,13 @@ impl Context {
954960
///
955961
/// This currently isn't parallelized, but it'd be pretty easy to add
956962
/// parallelization to this function.
957-
fn krate(self, mut krate: clean::Crate, cache: Cache) -> io::IoResult<()> {
963+
fn krate(self, mut krate: clean::Crate) -> io::IoResult<()> {
958964
let mut item = match krate.module.take() {
959965
Some(i) => i,
960966
None => return Ok(())
961967
};
962968
item.name = Some(krate.name);
963969

964-
// using a rwarc makes this parallelizable in the future
965-
cache_key.replace(Some(Arc::new(cache)));
966-
967970
let mut work = vec!((self, item));
968971
loop {
969972
match work.pop() {

0 commit comments

Comments
 (0)