diff options
| author | Brian Anderson <banderson@mozilla.com> | 2012-05-13 17:01:52 -0700 |
|---|---|---|
| committer | Brian Anderson <banderson@mozilla.com> | 2012-05-13 17:08:35 -0700 |
| commit | a2572fe77efe58a7c202824deeb0b78fca89cf7e (patch) | |
| tree | 1b591568facb5d29d5655d29010df5582d2eac32 /src/rustc/middle/trans | |
| parent | ecf290d448e1b46e073bd8727c04156a06948bf5 (diff) | |
| download | rust-a2572fe77efe58a7c202824deeb0b78fca89cf7e.tar.gz rust-a2572fe77efe58a7c202824deeb0b78fca89cf7e.zip | |
rustc: Eliminate metadata's dependency on trans
Diffstat (limited to 'src/rustc/middle/trans')
| -rw-r--r-- | src/rustc/middle/trans/base.rs | 24 | ||||
| -rw-r--r-- | src/rustc/middle/trans/common.rs | 15 |
2 files changed, 23 insertions, 16 deletions
diff --git a/src/rustc/middle/trans/base.rs b/src/rustc/middle/trans/base.rs index 1df25c9e93e..6bad2249cac 100644 --- a/src/rustc/middle/trans/base.rs +++ b/src/rustc/middle/trans/base.rs @@ -38,7 +38,7 @@ import link::{mangle_internal_name_by_type_only, mangle_internal_name_by_path, mangle_internal_name_by_path_and_seq, mangle_exported_name}; -import metadata::{csearch, cstore}; +import metadata::{csearch, cstore, encoder}; import util::ppaux::{ty_to_str, ty_to_short_str}; import common::*; @@ -4932,9 +4932,26 @@ fn fill_crate_map(ccx: @crate_ctxt, map: ValueRef) { C_array(ccx.int_type, subcrates)])); } +fn crate_ctxt_to_encode_parms(cx: @crate_ctxt) + -> encoder::encode_parms { + + { + tcx: cx.tcx, + reachable: cx.reachable, + exp_map: cx.exp_map, + item_symbols: cx.item_symbols, + discrim_symbols: cx.discrim_symbols, + link_meta: cx.link_meta, + cstore: cx.sess.cstore, + maps: cx.maps, + } + +} + fn write_metadata(cx: @crate_ctxt, crate: @ast::crate) { if !cx.sess.building_library { ret; } - let llmeta = C_bytes(metadata::encoder::encode_metadata(cx, crate)); + let encode_parms = crate_ctxt_to_encode_parms(cx); + let llmeta = C_bytes(encoder::encode_metadata(encode_parms, crate)); let llconst = C_struct([llmeta]); let mut llglobal = str::as_c_str("rust_metadata", {|buf| llvm::LLVMAddGlobal(cx.llmod, val_ty(llconst), buf) @@ -4961,7 +4978,8 @@ fn write_abi_version(ccx: @crate_ctxt) { } fn trans_crate(sess: session::session, crate: @ast::crate, tcx: ty::ctxt, - output: str, emap: resolve::exp_map, maps: maps) + output: str, emap: resolve::exp_map, + maps: metadata::maps) -> (ModuleRef, link::link_meta) { let sha = std::sha1::sha1(); let link_meta = link::build_link_meta(sess, *crate, output, sha); diff --git a/src/rustc/middle/trans/common.rs b/src/rustc/middle/trans/common.rs index c2e9d8ed5fb..72e982ba445 100644 --- a/src/rustc/middle/trans/common.rs +++ b/src/rustc/middle/trans/common.rs @@ -17,7 +17,7 @@ import lib::llvm::{llvm, target_data, type_names, associate_type, name_has_type}; import lib::llvm::{ModuleRef, ValueRef, TypeRef, BasicBlockRef, BuilderRef}; import lib::llvm::{True, False, Bool}; -import metadata::csearch; +import metadata::{csearch, encoder}; import ast_map::path; type namegen = fn@(str) -> str; @@ -62,17 +62,6 @@ type stats = resource BuilderRef_res(B: BuilderRef) { llvm::LLVMDisposeBuilder(B); } -// Misc. auxiliary maps used in the crate_ctxt -type maps = { - mutbl_map: middle::borrowck::mutbl_map, - copy_map: middle::alias::copy_map, - last_uses: middle::last_use::last_uses, - impl_map: middle::resolve::impl_map, - method_map: middle::typeck::method_map, - vtable_map: middle::typeck::vtable_map, - spill_map: last_use::spill_map -}; - // Crate context. Every crate we compile has one of these. type crate_ctxt = { sess: session::session, @@ -110,7 +99,7 @@ type crate_ctxt = { type_short_names: hashmap<ty::t, str>, all_llvm_symbols: set<str>, tcx: ty::ctxt, - maps: maps, + maps: metadata::maps, stats: stats, upcalls: @upcall::upcalls, tydesc_type: TypeRef, |
