about summary refs log tree commit diff
path: root/src/libstd
diff options
context:
space:
mode:
authorBrian Anderson <banderson@mozilla.com>2013-01-28 14:28:59 -0800
committerBrian Anderson <banderson@mozilla.com>2013-01-28 14:28:59 -0800
commit2a48aef0a88c22339710ef19b6b45e7b0ca94d01 (patch)
tree20abe5b6432d29b03d21241d0683263dd85c07ae /src/libstd
parentc75cc0aa1073ca91825d6513b9b23068a2a69f5a (diff)
parent8eaf0737b75d7984a72bfd4393b4c1a9ab0a88e6 (diff)
downloadrust-2a48aef0a88c22339710ef19b6b45e7b0ca94d01.tar.gz
rust-2a48aef0a88c22339710ef19b6b45e7b0ca94d01.zip
Merge remote-tracking branch 'thestinger/hashmap' into deriving
Diffstat (limited to 'src/libstd')
-rw-r--r--src/libstd/workcache.rs24
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))
         }
     }