Skip to content

Commit d3ca9ba

Browse files
Vigorously refactor _session::code_stats (nfc)
1 parent de66e08 commit d3ca9ba

File tree

1 file changed

+11
-19
lines changed

1 file changed

+11
-19
lines changed

compiler/rustc_session/src/code_stats.rs

+11-19
Original file line numberDiff line numberDiff line change
@@ -91,10 +91,10 @@ impl CodeStats {
9191
}
9292
});
9393

94-
for info in &sorted {
94+
for info in sorted {
95+
let TypeSizeInfo { type_description, overall_size, align, kind, variants, .. } = info;
9596
println!(
96-
"print-type-size type: `{}`: {} bytes, alignment: {} bytes",
97-
info.type_description, info.overall_size, info.align
97+
"print-type-size type: `{type_description}`: {overall_size} bytes, alignment: {align} bytes"
9898
);
9999
let indent = " ";
100100

@@ -111,11 +111,11 @@ impl CodeStats {
111111
// to reflect the presence of the discriminant.
112112
let mut max_variant_size = discr_size;
113113

114-
let struct_like = match info.kind {
114+
let struct_like = match kind {
115115
DataTypeKind::Struct | DataTypeKind::Closure => true,
116116
DataTypeKind::Enum | DataTypeKind::Union => false,
117117
};
118-
for (i, variant_info) in info.variants.iter().enumerate() {
118+
for (i, variant_info) in variants.into_iter().enumerate() {
119119
let VariantInfo { ref name, kind: _, align: _, size, ref fields } = *variant_info;
120120
let indent = if !struct_like {
121121
let name = match name.as_ref() {
@@ -142,8 +142,8 @@ impl CodeStats {
142142
let mut fields = fields.clone();
143143
fields.sort_by_key(|f| (f.offset, f.size));
144144

145-
for field in fields.iter() {
146-
let FieldInfo { ref name, offset, size, align } = *field;
145+
for field in fields {
146+
let FieldInfo { ref name, offset, size, align } = field;
147147

148148
if offset > min_offset {
149149
let pad = offset - min_offset;
@@ -171,18 +171,10 @@ impl CodeStats {
171171
}
172172
}
173173

174-
assert!(
175-
max_variant_size <= info.overall_size,
176-
"max_variant_size {} !<= {} overall_size",
177-
max_variant_size,
178-
info.overall_size
179-
);
180-
if max_variant_size < info.overall_size {
181-
println!(
182-
"print-type-size {}end padding: {} bytes",
183-
indent,
184-
info.overall_size - max_variant_size
185-
);
174+
match overall_size.checked_sub(max_variant_size) {
175+
None => panic!("max_variant_size {max_variant_size} > {overall_size} overall_size"),
176+
Some(diff @ 1..) => println!("print-type-size {indent}end padding: {diff} bytes"),
177+
Some(0) => {}
186178
}
187179
}
188180
}

0 commit comments

Comments
 (0)