diff options
| author | Graydon Hoare <graydon@mozilla.com> | 2012-08-02 17:17:31 -0700 |
|---|---|---|
| committer | Graydon Hoare <graydon@mozilla.com> | 2012-08-02 18:06:33 -0700 |
| commit | 4779d2b392bf1d721eccbcac00d1ab1708a8faa1 (patch) | |
| tree | 4a0ce2e208ab2f7d6e18575cb6d129c250e4f451 /src/rustc | |
| parent | 009352101d129fe782d2abc18a61d064ebc245a1 (diff) | |
| download | rust-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.rs | 27 | ||||
| -rw-r--r-- | src/rustc/middle/trans/base.rs | 2 | ||||
| -rw-r--r-- | src/rustc/middle/trans/common.rs | 2 |
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>, |
