diff options
Diffstat (limited to 'src/libstd/workcache.rs')
| -rw-r--r-- | src/libstd/workcache.rs | 24 |
1 files changed, 18 insertions, 6 deletions
diff --git a/src/libstd/workcache.rs b/src/libstd/workcache.rs index fbd695aee76..9f46ebef440 100644 --- a/src/libstd/workcache.rs +++ b/src/libstd/workcache.rs @@ -167,15 +167,27 @@ struct Database { } impl Database { + #[cfg(stage0)] + #[cfg(stage1)] + fn prepare(&mut self, fn_name: &str, + declared_inputs: &WorkMap) -> Option<(WorkMap, WorkMap, ~str)> + { + let k = json_encode(&(fn_name, declared_inputs)); + let db_cache = copy self.db_cache; + match db_cache.find(&k) { + None => None, + Some(&v) => Some(json_decode(copy v)) + } + } - fn prepare(&mut self, - fn_name: &str, - declared_inputs: &WorkMap) -> - Option<(WorkMap, WorkMap, ~str)> { + #[cfg(stage2)] + fn prepare(&mut self, fn_name: &str, + declared_inputs: &WorkMap) -> Option<(WorkMap, WorkMap, ~str)> + { let k = json_encode(&(fn_name, declared_inputs)); - match self.db_cache.find_copy(&k) { + match self.db_cache.find(&k) { None => None, - Some(v) => Some(json_decode(v)) + Some(&v) => Some(json_decode(copy v)) } } |
