rustc: Box tag variants to avoid copies

This commit is contained in:
Brian Anderson 2011-12-15 17:25:58 -08:00
parent 26db74c811
commit 1f8f6054d2
2 changed files with 5 additions and 5 deletions

View File

@ -244,7 +244,7 @@ fn get_tag_variants(_data: @[u8], def: ast::def_id, tcx: ty::ctxt,
}
}
infos += [{args: arg_tys, ctor_ty: ctor_ty, id: did}];
infos += [@{args: arg_tys, ctor_ty: ctor_ty, id: did}];
}
ret infos;
}

View File

@ -2721,7 +2721,7 @@ fn def_has_ty_params(def: ast::def) -> bool {
// Tag information
type variant_info = {args: [ty::t], ctor_ty: ty::t, id: ast::def_id};
type variant_info = @{args: [ty::t], ctor_ty: ty::t, id: ast::def_id};
fn tag_variants(cx: ctxt, id: ast::def_id) -> @mutable [variant_info] {
if ast::local_crate != id.crate {
@ -2752,9 +2752,9 @@ fn tag_variants(cx: ctxt, id: ast::def_id) -> @mutable [variant_info] {
}
let did = variant.node.id;
*result +=
[{args: arg_tys,
ctor_ty: ctor_ty,
id: ast_util::local_def(did)}];
[@{args: arg_tys,
ctor_ty: ctor_ty,
id: ast_util::local_def(did)}];
}
smallintmap::insert(*cx.tag_var_cache, id.node as uint, result);
ret result;