From d607316b2f116372814a1e7b379b970071e21e00 Mon Sep 17 00:00:00 2001 From: Patrick Walton Date: Tue, 20 Sep 2011 13:48:22 -0700 Subject: [PATCH] rustc: Pass actual tydescs to upcall_malloc --- src/comp/middle/trans.rs | 12 ++++++++---- 1 file changed, 8 insertions(+), 4 deletions(-) diff --git a/src/comp/middle/trans.rs b/src/comp/middle/trans.rs index c30a70fd256..271b77585b6 100644 --- a/src/comp/middle/trans.rs +++ b/src/comp/middle/trans.rs @@ -837,13 +837,17 @@ fn trans_malloc_boxed_raw(cx: @block_ctxt, t: ty::t) -> result { // wants. // FIXME: Could avoid this check with a postcondition on mk_imm_box? // (requires Issue #586) - let ccx = bcx_ccx(cx); - let sp = cx.sp; + let ccx = bcx_ccx(bcx); + let sp = bcx.sp; check (type_has_static_size(ccx, box_ptr)); let llty = type_of(ccx, sp, box_ptr); - let tydesc = C_null(T_ptr(ccx.tydesc_type)); - let rval = Call(cx, ccx.upcalls.malloc, [cx.fcx.lltaskptr, llsz, tydesc]); + let ti = none; + let tydesc_result = get_tydesc(bcx, t, true, tps_normal, ti); + let lltydesc = tydesc_result.result.val; bcx = tydesc_result.result.bcx; + + let rval = Call(cx, ccx.upcalls.malloc, + [cx.fcx.lltaskptr, llsz, lltydesc]); ret rslt(cx, PointerCast(cx, rval, llty)); }