From 8bd019bdc868e9d563aa72acbb0307deaeca919f Mon Sep 17 00:00:00 2001 From: Patrick Walton Date: Thu, 25 Aug 2011 14:20:21 -0700 Subject: rt: Remember the number of captured type descriptors for objects in the type descriptor crate cache --- src/comp/middle/trans.rs | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) (limited to 'src/comp') diff --git a/src/comp/middle/trans.rs b/src/comp/middle/trans.rs index e4a35a8d6b6..bae944659d9 100644 --- a/src/comp/middle/trans.rs +++ b/src/comp/middle/trans.rs @@ -958,10 +958,13 @@ fn get_derived_tydesc(cx: &@block_ctxt, t: ty::t, escapes: bool, // If the tydesc escapes in this context, the cached derived // tydesc also has to be one that was marked as escaping. - if !(escapes && !info.escapes) { ret rslt(cx, info.lltydesc); } + if !(escapes && !info.escapes) && storage == tps_normal { + ret rslt(cx, info.lltydesc); + } } none. {/* fall through */ } } + bcx_ccx(cx).stats.n_derived_tydescs += 1u; let bcx = new_raw_block_ctxt(cx.fcx, cx.fcx.llderivedtydescs); let tys = linearize_ty_params(bcx, t); -- cgit 1.4.1-3-g733a5