about summary refs log tree commit diff
path: root/src/rustc
diff options
context:
space:
mode:
authorGraydon Hoare <graydon@mozilla.com>2012-08-02 17:17:31 -0700
committerGraydon Hoare <graydon@mozilla.com>2012-08-02 18:06:33 -0700
commit4779d2b392bf1d721eccbcac00d1ab1708a8faa1 (patch)
tree4a0ce2e208ab2f7d6e18575cb6d129c250e4f451 /src/rustc
parent009352101d129fe782d2abc18a61d064ebc245a1 (diff)
downloadrust-4779d2b392bf1d721eccbcac00d1ab1708a8faa1.tar.gz
rust-4779d2b392bf1d721eccbcac00d1ab1708a8faa1.zip
De-duplicate core::hash some, refactor the traits.
Diffstat (limited to 'src/rustc')
-rw-r--r--src/rustc/back/link.rs27
-rw-r--r--src/rustc/middle/trans/base.rs2
-rw-r--r--src/rustc/middle/trans/common.rs2
3 files changed, 16 insertions, 15 deletions
diff --git a/src/rustc/back/link.rs b/src/rustc/back/link.rs
index 7e6c9567b4b..c92653c8ba6 100644
--- a/src/rustc/back/link.rs
+++ b/src/rustc/back/link.rs
@@ -15,6 +15,7 @@ import lib::llvm::{ModuleRef, mk_pass_manager, mk_target_data, True, False,
         FileType};
 import metadata::filesearch;
 import syntax::ast_map::{path, path_mod, path_name};
+import io::{writer, writer_util};
 
 enum output_type {
     output_type_none,
@@ -307,7 +308,7 @@ mod write {
  */
 
 fn build_link_meta(sess: session, c: ast::crate, output: ~str,
-                   symbol_hasher: hash::streaming) -> link_meta {
+                   symbol_hasher: &hash::State) -> link_meta {
 
     type provided_metas =
         {name: option<@~str>,
@@ -338,7 +339,7 @@ fn build_link_meta(sess: session, c: ast::crate, output: ~str,
     }
 
     // This calculates CMH as defined above
-    fn crate_meta_extras_hash(symbol_hasher: hash::streaming,
+    fn crate_meta_extras_hash(symbol_hasher: &hash::State,
                               _crate: ast::crate,
                               metas: provided_metas,
                               dep_hashes: ~[@~str]) -> ~str {
@@ -357,11 +358,11 @@ fn build_link_meta(sess: session, c: ast::crate, output: ~str,
             let m = m_;
             alt m.node {
               ast::meta_name_value(key, value) {
-                symbol_hasher.input_str(len_and_str(*key));
-                symbol_hasher.input_str(len_and_str_lit(value));
+                symbol_hasher.write_str(len_and_str(*key));
+                symbol_hasher.write_str(len_and_str_lit(value));
               }
               ast::meta_word(name) {
-                symbol_hasher.input_str(len_and_str(*name));
+                symbol_hasher.write_str(len_and_str(*name));
               }
               ast::meta_list(_, _) {
                 // FIXME (#607): Implement this
@@ -371,7 +372,7 @@ fn build_link_meta(sess: session, c: ast::crate, output: ~str,
         }
 
         for dep_hashes.each |dh| {
-            symbol_hasher.input_str(len_and_str(*dh));
+            symbol_hasher.write_str(len_and_str(*dh));
         }
 
         return truncated_hash_result(symbol_hasher);
@@ -427,23 +428,23 @@ fn build_link_meta(sess: session, c: ast::crate, output: ~str,
     return {name: name, vers: vers, extras_hash: extras_hash};
 }
 
-fn truncated_hash_result(symbol_hasher: hash::streaming) -> ~str unsafe {
+fn truncated_hash_result(symbol_hasher: &hash::State) -> ~str unsafe {
     symbol_hasher.result_str()
 }
 
 
 // This calculates STH for a symbol, as defined above
-fn symbol_hash(tcx: ty::ctxt, symbol_hasher: hash::streaming, t: ty::t,
+fn symbol_hash(tcx: ty::ctxt, symbol_hasher: &hash::State, t: ty::t,
                link_meta: link_meta) -> ~str {
     // NB: do *not* use abbrevs here as we want the symbol names
     // to be independent of one another in the crate.
 
     symbol_hasher.reset();
-    symbol_hasher.input_str(*link_meta.name);
-    symbol_hasher.input_str(~"-");
-    symbol_hasher.input_str(link_meta.extras_hash);
-    symbol_hasher.input_str(~"-");
-    symbol_hasher.input_str(encoder::encoded_ty(tcx, t));
+    symbol_hasher.write_str(*link_meta.name);
+    symbol_hasher.write_str(~"-");
+    symbol_hasher.write_str(link_meta.extras_hash);
+    symbol_hasher.write_str(~"-");
+    symbol_hasher.write_str(encoder::encoded_ty(tcx, t));
     let hash = truncated_hash_result(symbol_hasher);
     // Prefix with _ so that it never blends into adjacent digits
 
diff --git a/src/rustc/middle/trans/base.rs b/src/rustc/middle/trans/base.rs
index 6d1645ae766..ea0661f3510 100644
--- a/src/rustc/middle/trans/base.rs
+++ b/src/rustc/middle/trans/base.rs
@@ -5493,7 +5493,7 @@ fn trans_crate(sess: session::session, crate: @ast::crate, tcx: ty::ctxt,
                output: ~str, emap: resolve3::ExportMap,
                maps: astencode::maps)
     -> (ModuleRef, link_meta) {
-    let symbol_hasher = hash::siphash(0,0);
+    let symbol_hasher = @hash::default_state();
     let link_meta =
         link::build_link_meta(sess, *crate, output, symbol_hasher);
     let reachable = reachable::find_reachable(crate.node.module, emap, tcx,
diff --git a/src/rustc/middle/trans/common.rs b/src/rustc/middle/trans/common.rs
index 3addc0a7502..df585bb757b 100644
--- a/src/rustc/middle/trans/common.rs
+++ b/src/rustc/middle/trans/common.rs
@@ -110,7 +110,7 @@ type crate_ctxt = {
      module_data: hashmap<~str, ValueRef>,
      lltypes: hashmap<ty::t, TypeRef>,
      names: namegen,
-     symbol_hasher: hash::streaming,
+     symbol_hasher: @hash::State,
      type_hashcodes: hashmap<ty::t, ~str>,
      type_short_names: hashmap<ty::t, ~str>,
      all_llvm_symbols: set<~str>,