Rename middle::metadata to metadata::cwriter. Move creader to metadata

Preparation for a lot more metadata refactoring
This commit is contained in:
Brian Anderson 2011-06-27 14:18:32 -07:00
parent d4a5487e1c
commit ba5c7a570d
10 changed files with 54 additions and 50 deletions

View File

@ -2,8 +2,8 @@
import driver::session;
import lib::llvm::llvm;
import middle::trans;
import middle::metadata;
import middle::ty;
import metadata::cwriter;
import std::str;
import std::fs;
import std::vec;
@ -398,15 +398,15 @@ fn symbol_hash(ty::ctxt tcx, sha1 sha, &ty::t t, str crate_meta_name,
// to be independent of one another in the crate.
auto cx =
@rec(ds=metadata::def_to_str,
@rec(ds=metadata::cwriter::def_to_str,
tcx=tcx,
abbrevs=metadata::ac_no_abbrevs);
abbrevs=metadata::cwriter::ac_no_abbrevs);
sha.reset();
sha.input_str(crate_meta_name);
sha.input_str("-");
sha.input_str(crate_meta_name);
sha.input_str("-");
sha.input_str(metadata::encode::ty_str(cx, t));
sha.input_str(metadata::cwriter::encode::ty_str(cx, t));
auto hash = truncated_sha1_result(sha);
// Prefix with _ so that it never blends into adjacent digits
@ -452,8 +452,8 @@ fn mangle_exported_name(&@crate_ctxt ccx, &vec[str] path, &ty::t t) -> str {
fn mangle_internal_name_by_type_only(&@crate_ctxt ccx, &ty::t t, &str name) ->
str {
auto f = metadata::def_to_str;
auto cx = @rec(ds=f, tcx=ccx.tcx, abbrevs=metadata::ac_no_abbrevs);
auto f = metadata::cwriter::def_to_str;
auto cx = @rec(ds=f, tcx=ccx.tcx, abbrevs=metadata::cwriter::ac_no_abbrevs);
auto s = pretty::ppaux::ty_to_short_str(ccx.tcx, t);
auto hash = get_symbol_hash(ccx, t);
ret mangle([name, s, hash]);

View File

@ -1,7 +1,7 @@
// -*- rust -*-
import front::creader;
import metadata::creader;
import front::parser;
import front::token;
import front::eval;
@ -349,7 +349,7 @@ fn main(vec[str] args) {
case (none[pp_mode]) {/* continue */ }
}
if (ls) {
front::creader::list_file_metadata(ifile, std::io::stdout());
metadata::creader::list_file_metadata(ifile, std::io::stdout());
ret;
}
alt (output_file) {

View File

@ -9,7 +9,7 @@ import lib::llvm::mk_object_file;
import lib::llvm::mk_section_iter;
import middle::resolve;
import middle::walk;
import middle::metadata;
import cwriter;
import middle::trans;
import middle::ty;
import back::x86;
@ -404,15 +404,15 @@ fn parse_def_id(vec[u8] buf) -> ast::def_id {
fn lookup_hash(&ebml::doc d, fn(vec[u8]) -> bool eq_fn, uint hash) ->
vec[ebml::doc] {
auto index = ebml::get_doc(d, metadata::tag_index);
auto table = ebml::get_doc(index, metadata::tag_index_table);
auto index = ebml::get_doc(d, cwriter::tag_index);
auto table = ebml::get_doc(index, cwriter::tag_index_table);
auto hash_pos = table.start + hash % 256u * 4u;
auto pos = ebml::be_uint_from_bytes(d.data, hash_pos, 4u);
auto bucket = ebml::doc_at(d.data, pos);
// Awkward logic because we can't ret from foreach yet
let vec[ebml::doc] result = [];
auto belt = metadata::tag_index_buckets_bucket_elt;
auto belt = cwriter::tag_index_buckets_bucket_elt;
for each (ebml::doc elt in ebml::tagged_docs(bucket, belt)) {
auto pos = ebml::be_uint_from_bytes(elt.data, elt.start, 4u);
if (eq_fn(vec::slice[u8](elt.data, elt.start + 4u, elt.end))) {
@ -431,11 +431,11 @@ fn resolve_path(vec[ast::ident] path, vec[u8] data) -> vec[ast::def_id] {
}
auto s = str::connect(path, "::");
auto md = ebml::new_doc(data);
auto paths = ebml::get_doc(md, metadata::tag_paths);
auto paths = ebml::get_doc(md, cwriter::tag_paths);
auto eqer = bind eq_item(_, s);
let vec[ast::def_id] result = [];
for (ebml::doc doc in lookup_hash(paths, eqer, metadata::hash_path(s))) {
auto did_doc = ebml::get_doc(doc, metadata::tag_def_id);
for (ebml::doc doc in lookup_hash(paths, eqer, cwriter::hash_path(s))) {
auto did_doc = ebml::get_doc(doc, cwriter::tag_def_id);
vec::push(result, parse_def_id(ebml::doc_data(did_doc)));
}
ret result;
@ -446,7 +446,7 @@ fn maybe_find_item(int item_id, &ebml::doc items) -> option::t[ebml::doc] {
ret ebml::be_uint_from_bytes(bytes, 0u, 4u) as int == item_id;
}
auto eqer = bind eq_item(_, item_id);
auto found = lookup_hash(items, eqer, metadata::hash_def_id(item_id));
auto found = lookup_hash(items, eqer, cwriter::hash_def_id(item_id));
if (vec::len(found) == 0u) {
ret option::none[ebml::doc];
} else { ret option::some[ebml::doc](found.(0)); }
@ -460,22 +460,22 @@ fn find_item(int item_id, &ebml::doc items) -> ebml::doc {
// Looks up an item in the given metadata and returns an ebml doc pointing
// to the item data.
fn lookup_item(int item_id, vec[u8] data) -> ebml::doc {
auto items = ebml::get_doc(ebml::new_doc(data), metadata::tag_items);
auto items = ebml::get_doc(ebml::new_doc(data), cwriter::tag_items);
ret find_item(item_id, items);
}
fn item_kind(&ebml::doc item) -> u8 {
auto kind = ebml::get_doc(item, metadata::tag_items_data_item_kind);
auto kind = ebml::get_doc(item, cwriter::tag_items_data_item_kind);
ret ebml::doc_as_uint(kind) as u8;
}
fn item_symbol(&ebml::doc item) -> str {
auto sym = ebml::get_doc(item, metadata::tag_items_data_item_symbol);
auto sym = ebml::get_doc(item, cwriter::tag_items_data_item_symbol);
ret str::unsafe_from_bytes(ebml::doc_data(sym));
}
fn variant_tag_id(&ebml::doc d) -> ast::def_id {
auto tagdoc = ebml::get_doc(d, metadata::tag_items_data_item_tag_id);
auto tagdoc = ebml::get_doc(d, cwriter::tag_items_data_item_tag_id);
ret parse_def_id(ebml::doc_data(tagdoc));
}
@ -490,7 +490,7 @@ fn item_type(&ebml::doc item, int this_cnum, ty::ctxt tcx) -> ty::t {
auto external_def_id = parse_def_id(buf);
ret tup(this_cnum, external_def_id._1);
}
auto tp = ebml::get_doc(item, metadata::tag_items_data_item_type);
auto tp = ebml::get_doc(item, cwriter::tag_items_data_item_type);
auto s = str::unsafe_from_bytes(ebml::doc_data(tp));
ret parse_ty_data(item.data, this_cnum, tp.start, tp.end - tp.start,
bind parse_external_def_id(this_cnum, _), tcx);
@ -498,7 +498,7 @@ fn item_type(&ebml::doc item, int this_cnum, ty::ctxt tcx) -> ty::t {
fn item_ty_param_count(&ebml::doc item, int this_cnum) -> uint {
let uint ty_param_count = 0u;
auto tp = metadata::tag_items_data_item_ty_param_count;
auto tp = cwriter::tag_items_data_item_ty_param_count;
for each (ebml::doc p in ebml::tagged_docs(item, tp)) {
ty_param_count = ebml::vint_at(ebml::doc_data(p), 0u)._0;
}
@ -507,7 +507,7 @@ fn item_ty_param_count(&ebml::doc item, int this_cnum) -> uint {
fn tag_variant_ids(&ebml::doc item, int this_cnum) -> vec[ast::def_id] {
let vec[ast::def_id] ids = [];
auto v = metadata::tag_items_data_item_variant;
auto v = cwriter::tag_items_data_item_variant;
for each (ebml::doc p in ebml::tagged_docs(item, v)) {
auto ext = parse_def_id(ebml::doc_data(p));
vec::push[ast::def_id](ids, tup(this_cnum, ext._1));
@ -538,12 +538,12 @@ fn get_metadata_section(str filename) -> option::t[vec[u8]] {
fn get_exported_metadata(&session::session sess, &str path, &vec[u8] data) ->
hashmap[str, str] {
auto meta_items =
ebml::get_doc(ebml::new_doc(data), metadata::tag_meta_export);
ebml::get_doc(ebml::new_doc(data), cwriter::tag_meta_export);
auto mm = common::new_str_hash[str]();
for each (ebml::doc m in
ebml::tagged_docs(meta_items, metadata::tag_meta_item)) {
auto kd = ebml::get_doc(m, metadata::tag_meta_item_key);
auto vd = ebml::get_doc(m, metadata::tag_meta_item_value);
ebml::tagged_docs(meta_items, cwriter::tag_meta_item)) {
auto kd = ebml::get_doc(m, cwriter::tag_meta_item_key);
auto vd = ebml::get_doc(m, cwriter::tag_meta_item_value);
auto k = str::unsafe_from_bytes(ebml::doc_data(kd));
auto v = str::unsafe_from_bytes(ebml::doc_data(vd));
log #fmt("metadata in %s: %s = %s", path, k, v);
@ -807,7 +807,7 @@ fn get_symbol(session::session sess, ast::def_id def) -> str {
fn get_tag_variants(ty::ctxt tcx, ast::def_id def) -> vec[ty::variant_info] {
auto external_crate_id = def._0;
auto data = tcx.sess.get_external_crate(external_crate_id).data;
auto items = ebml::get_doc(ebml::new_doc(data), metadata::tag_items);
auto items = ebml::get_doc(ebml::new_doc(data), cwriter::tag_items);
auto item = find_item(def._1, items);
let vec[ty::variant_info] infos = [];
auto variant_ids = tag_variant_ids(item, external_crate_id);
@ -848,17 +848,17 @@ fn read_path(&ebml::doc d) -> tup(str, uint) {
fn list_crate_metadata(vec[u8] bytes, io::writer out) {
auto md = ebml::new_doc(bytes);
auto paths = ebml::get_doc(md, metadata::tag_paths);
auto items = ebml::get_doc(md, metadata::tag_items);
auto index = ebml::get_doc(paths, metadata::tag_index);
auto bs = ebml::get_doc(index, metadata::tag_index_buckets);
auto paths = ebml::get_doc(md, cwriter::tag_paths);
auto items = ebml::get_doc(md, cwriter::tag_items);
auto index = ebml::get_doc(paths, cwriter::tag_index);
auto bs = ebml::get_doc(index, cwriter::tag_index_buckets);
for each (ebml::doc bucket in
ebml::tagged_docs(bs, metadata::tag_index_buckets_bucket)) {
auto et = metadata::tag_index_buckets_bucket_elt;
ebml::tagged_docs(bs, cwriter::tag_index_buckets_bucket)) {
auto et = cwriter::tag_index_buckets_bucket_elt;
for each (ebml::doc elt in ebml::tagged_docs(bucket, et)) {
auto data = read_path(elt);
auto def = ebml::doc_at(bytes, data._1);
auto did_doc = ebml::get_doc(def, metadata::tag_def_id);
auto did_doc = ebml::get_doc(def, cwriter::tag_def_id);
auto did = parse_def_id(ebml::doc_data(did_doc));
out.write_str(#fmt("%s (%s)\n", data._0,
describe_def(items, did)));

View File

@ -662,13 +662,13 @@ fn encode_info_for_items(&@trans::crate_ctxt cx, &ebml::writer ebml_w) ->
vec[tup(int, uint)] {
let vec[tup(int, uint)] index = [];
ebml::start_tag(ebml_w, tag_items_data);
for each (@tup(node_id, ast_map::ast_node) kvp in cx.ast_map.items()) {
for each (@tup(node_id, middle::ast_map::ast_node) kvp in cx.ast_map.items()) {
alt (kvp._1) {
case (ast_map::node_item(?i)) {
case (middle::ast_map::node_item(?i)) {
index += [tup(kvp._0, ebml_w.writer.tell())];
encode_info_for_item(cx, ebml_w, i, index);
}
case (ast_map::node_native_item(?i)) {
case (middle::ast_map::node_native_item(?i)) {
index += [tup(kvp._0, ebml_w.writer.tell())];
encode_info_for_native_item(cx, ebml_w, i);
}

View File

@ -6,7 +6,7 @@ import front::ast::def_id;
import front::ast::node_id;
import front::ast::local_def;
import front::creader;
import metadata::creader;
import driver::session::session;
import util::common::new_def_hash;
import util::common::new_int_hash;

View File

@ -25,7 +25,8 @@ import std::option::some;
import std::option::none;
import std::fs;
import front::ast;
import front::creader;
import metadata::creader;
import metadata::cwriter;
import driver::session;
import middle::ty;
import back::link;
@ -148,7 +149,7 @@ type crate_ctxt =
namegen names,
std::sha1::sha1 sha,
hashmap[ty::t, str] type_sha1s,
hashmap[ty::t, metadata::ty_abbrev] type_abbrevs,
hashmap[ty::t, cwriter::ty_abbrev] type_abbrevs,
hashmap[ty::t, str] type_short_names,
ty::ctxt tcx,
stats stats,
@ -8400,7 +8401,7 @@ fn trans_crate(&session::session sess, &@ast::crate crate, &ty::ctxt tcx,
auto tydescs = map::mk_hashmap[ty::t, @tydesc_info](hasher, eqer);
auto lltypes = map::mk_hashmap[ty::t, TypeRef](hasher, eqer);
auto sha1s = map::mk_hashmap[ty::t, str](hasher, eqer);
auto abbrevs = map::mk_hashmap[ty::t, metadata::ty_abbrev](hasher, eqer);
auto abbrevs = map::mk_hashmap[ty::t, cwriter::ty_abbrev](hasher, eqer);
auto short_names = map::mk_hashmap[ty::t, str](hasher, eqer);
auto sha = std::sha1::mk_sha1();
auto ccx =
@ -8449,7 +8450,7 @@ fn trans_crate(&session::session sess, &@ast::crate crate, &ty::ctxt tcx,
emit_tydescs(ccx);
// Translate the metadata:
middle::metadata::write_metadata(cx.ccx, crate);
cwriter::write_metadata(cx.ccx, crate);
if (ccx.sess.get_opts().stats) {
log_err "--- trans stats ---";
log_err #fmt("n_static_tydescs: %u", ccx.stats.n_static_tydescs);

View File

@ -17,8 +17,8 @@ import front::ast::def_id;
import front::ast::constr_arg_general;
import front::ast::mutability;
import front::ast::controlflow;
import front::creader;
import middle::metadata;
import metadata::creader;
import metadata::cwriter;
import util::common::*;
import util::data::interner;
import pretty::ppaux::ty_to_str;

View File

@ -2,7 +2,7 @@
import front::ast;
import front::ast::mutability;
import front::ast::local_def;
import front::creader;
import metadata::creader;
import driver::session;
import util::common;
import util::common::span;

View File

@ -150,8 +150,8 @@ fn ty_to_str(&ctxt cx, &t typ) -> str {
fn ty_to_short_str(&ctxt cx, t typ) -> str {
auto f = def_to_str;
auto ecx = @rec(ds=f, tcx=cx, abbrevs=middle::metadata::ac_no_abbrevs);
auto s = middle::metadata::encode::ty_str(ecx, typ);
auto ecx = @rec(ds=f, tcx=cx, abbrevs=metadata::cwriter::ac_no_abbrevs);
auto s = metadata::cwriter::encode::ty_str(ecx, typ);
if (str::byte_len(s) >= 32u) { s = str::substr(s, 0u, 32u); }
ret s;
}

View File

@ -18,7 +18,6 @@ mod middle {
mod ty;
mod walk;
mod visit;
mod metadata;
mod ast_map;
mod resolve;
mod typeck;
@ -46,7 +45,6 @@ mod pretty {
mod front {
mod ast;
mod creader;
mod ext;
mod extfmt;
mod extenv;
@ -64,6 +62,11 @@ mod back {
mod x86;
}
mod metadata {
mod creader;
mod cwriter;
}
mod driver {
mod rustc;
mod session;