Skip to content

Commit b6ffafe

Browse files
committed
Revert "perf: avoid monomorphizing <[BNode]>::reverse in non-hydration path"
This reverts commit 6b23703.
1 parent 6b23703 commit b6ffafe

File tree

1 file changed

+9
-10
lines changed

1 file changed

+9
-10
lines changed

packages/yew/src/dom_bundle/blist.rs

Lines changed: 9 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -176,17 +176,18 @@ impl BList {
176176
let mut lefts_rev = lefts.into_iter().rev();
177177

178178
// Add excess new nodes at the tail of render order (rightmost first
179-
// for the NodeWriter, then extended in render order).
180-
let mut excess: Vec<BNode> = Vec::new();
179+
// for the NodeWriter).
180+
let excess_start = rights.len();
181181
for l in lefts_rev
182182
.by_ref()
183183
.take(left_len.saturating_sub(paired_count))
184184
{
185185
let (next_writer, el) = writer.add(l);
186-
excess.push(el);
186+
rights.push(el);
187187
writer = next_writer;
188188
}
189-
rights.extend(excess.into_iter().rev());
189+
// Items were pushed right-to-left; flip to render order.
190+
rights[excess_start..].reverse();
190191

191192
// Patch paired nodes right-to-left.
192193
for (l, r) in lefts_rev.zip(rights[..paired_count].iter_mut().rev()) {
@@ -409,13 +410,11 @@ impl BList {
409410
};
410411
replacements.push(bundle);
411412
}
412-
// drop the splice iterator and immediately replace the range with the reordered elements.
413-
// replacements was built right-to-left; iterate in reverse for render order.
413+
// drop the splice iterator and immediately replace the range with the reordered elements
414414
drop(spliced_middle);
415-
bundles.splice(
416-
matching_len_start..matching_len_start,
417-
replacements.into_iter().rev(),
418-
);
415+
// replacements was built right-to-left; reverse to render order
416+
replacements.reverse();
417+
bundles.splice(matching_len_start..matching_len_start, replacements);
419418

420419
// Step 2.3. Remove any extra rights
421420
for KeyedEntry(_, r) in spare_bundles.drain() {

0 commit comments

Comments
 (0)