diff options
| author | Daniel Micay <danielmicay@gmail.com> | 2014-01-14 16:20:09 -0500 |
|---|---|---|
| committer | Daniel Micay <danielmicay@gmail.com> | 2014-01-14 22:01:44 -0500 |
| commit | 6809b172e0dee6f197e4ae30af0d8162e92d5225 (patch) | |
| tree | 1f21f0a0d612ed8baec2ea886eb3c2eda53f0ca8 /src/librustc/middle/trans | |
| parent | 0e885e42b1292fe2592488a52c35d54b9fe50fb8 (diff) | |
| download | rust-6809b172e0dee6f197e4ae30af0d8162e92d5225.tar.gz rust-6809b172e0dee6f197e4ae30af0d8162e92d5225.zip | |
remove `borrow_offset` as ~ is now free of headers
Diffstat (limited to 'src/librustc/middle/trans')
| -rw-r--r-- | src/librustc/middle/trans/common.rs | 1 | ||||
| -rw-r--r-- | src/librustc/middle/trans/expr.rs | 24 | ||||
| -rw-r--r-- | src/librustc/middle/trans/glue.rs | 15 | ||||
| -rw-r--r-- | src/librustc/middle/trans/type_.rs | 1 |
4 files changed, 1 insertions, 40 deletions
diff --git a/src/librustc/middle/trans/common.rs b/src/librustc/middle/trans/common.rs index fb0b241b5fc..f98fec7cbef 100644 --- a/src/librustc/middle/trans/common.rs +++ b/src/librustc/middle/trans/common.rs @@ -90,7 +90,6 @@ pub struct tydesc_info { tydesc: ValueRef, size: ValueRef, align: ValueRef, - borrow_offset: ValueRef, name: ValueRef, take_glue: Cell<Option<ValueRef>>, drop_glue: Cell<Option<ValueRef>>, diff --git a/src/librustc/middle/trans/expr.rs b/src/librustc/middle/trans/expr.rs index 7fb66c521b1..72fc3e80228 100644 --- a/src/librustc/middle/trans/expr.rs +++ b/src/librustc/middle/trans/expr.rs @@ -398,29 +398,7 @@ pub fn trans_to_datum<'a>(bcx: &'a Block<'a>, expr: &ast::Expr) autoderefs)); derefd_datum.to_rptr(bcx).to_value_llval(bcx) } - ty::UniqTraitStore(..) => { - // For a ~T box, there may or may not be a header, - // depending on whether the type T references managed - // boxes. However, since we do not *know* the type T - // for objects, this presents a hurdle. Our solution is - // to load the "borrow offset" from the type descriptor; - // this value will either be 0 or sizeof(BoxHeader), depending - // on the type T. - let llopaque = - PointerCast(bcx, source_data, Type::opaque().ptr_to()); - let lltydesc_ptr_ptr = - PointerCast(bcx, vtable, - bcx.ccx().tydesc_type.ptr_to().ptr_to()); - let lltydesc_ptr = - Load(bcx, lltydesc_ptr_ptr); - let borrow_offset_ptr = - GEPi(bcx, lltydesc_ptr, - [0, abi::tydesc_field_borrow_offset]); - let borrow_offset = - Load(bcx, borrow_offset_ptr); - InBoundsGEP(bcx, llopaque, [borrow_offset]) - } - ty::RegionTraitStore(..) => { + ty::UniqTraitStore(..) | ty::RegionTraitStore(..) => { source_data } }; diff --git a/src/librustc/middle/trans/glue.rs b/src/librustc/middle/trans/glue.rs index 457cac09fc5..01e33b88dda 100644 --- a/src/librustc/middle/trans/glue.rs +++ b/src/librustc/middle/trans/glue.rs @@ -546,17 +546,6 @@ pub fn declare_tydesc(ccx: &CrateContext, t: ty::t) -> @tydesc_info { ppaux::ty_to_str(ccx.tcx, t)); } - let has_header = match ty::get(t).sty { - ty::ty_box(..) => true, - _ => false - }; - - let borrow_offset = if has_header { - ccx.offsetof_gep(llty, [0u, abi::box_field_body]) - } else { - C_uint(ccx, 0) - }; - let llsize = llsize_of(ccx, llty); let llalign = llalign_of(ccx, llty); let name = mangle_internal_name_by_type_and_seq(ccx, t, "tydesc").to_managed(); @@ -575,7 +564,6 @@ pub fn declare_tydesc(ccx: &CrateContext, t: ty::t) -> @tydesc_info { tydesc: gvar, size: llsize, align: llalign, - borrow_offset: borrow_offset, name: ty_name, take_glue: Cell::new(None), drop_glue: Cell::new(None), @@ -685,15 +673,12 @@ pub fn emit_tydescs(ccx: &CrateContext) { } }; - debug!("ti.borrow_offset: {}", ccx.tn.val_to_str(ti.borrow_offset)); - let tydesc = C_named_struct(ccx.tydesc_type, [ti.size, // size ti.align, // align take_glue, // take_glue drop_glue, // drop_glue visit_glue, // visit_glue - ti.borrow_offset, // borrow_offset ti.name]); // name unsafe { diff --git a/src/librustc/middle/trans/type_.rs b/src/librustc/middle/trans/type_.rs index b5349ca323b..833a7848ad3 100644 --- a/src/librustc/middle/trans/type_.rs +++ b/src/librustc/middle/trans/type_.rs @@ -220,7 +220,6 @@ impl Type { glue_fn_ty, // take glue_fn_ty, // drop glue_fn_ty, // visit - int_ty, // borrow_offset Type::struct_([Type::i8p(), Type::int(arch)], false)]; // name tydesc.set_struct_body(elems, false); |
