rustc: Fix a level-of-indirection problem by using size_of() to compute dynamically sized interior vector element sizes instead of field_of_tydesc()

This commit is contained in:
Patrick Walton 2011-07-08 16:31:28 -07:00
parent f5d604f0c3
commit 8450ab9a2b

View File

@ -1407,11 +1407,9 @@ fn dynamic_size_of(&@block_ctxt cx, ty::t t) -> result {
ret rslt(bcx, total_size);
}
case (ty::ty_ivec(?mt)) {
auto rs = field_of_tydesc(cx, mt.ty, false,
abi::tydesc_field_size);
auto rs = size_of(cx, mt.ty);
auto bcx = rs.bcx;
auto llunitszptr = rs.val;
auto llunitsz = bcx.build.Load(llunitszptr);
auto llunitsz = rs.val;
auto llsz = bcx.build.Add(llsize_of(T_opaque_ivec()),
bcx.build.Mul(llunitsz, C_uint(abi::ivec_default_length)));
ret rslt(bcx, llsz);