summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorAlan Wu <XrXr@users.noreply.github.com>2025-10-14 14:21:59 -0400
committerAlan Wu <XrXr@users.noreply.github.com>2025-10-14 15:01:38 -0400
commit8baf170e936525bbda4838db5bbfb138cf724229 (patch)
tree99b9f4b3510a76efdc273bdd9eecafdf13d11ec2
parentd1442727dd8dc6ae62d0addac2aba3bd8602430f (diff)
ZJIT: `mem::take` instead of `drain` then `collect`
Gets rid of one transient vec copy/allocation.
-rw-r--r--zjit/src/hir.rs4
1 files changed, 2 insertions, 2 deletions
diff --git a/zjit/src/hir.rs b/zjit/src/hir.rs
index a032d9ec8a..e32c15702e 100644
--- a/zjit/src/hir.rs
+++ b/zjit/src/hir.rs
@@ -2398,7 +2398,7 @@ impl Function {
if let Some(replacement) = (props.inline)(fun, tmp_block, recv, &args, state) {
// Copy contents of tmp_block to block
assert_ne!(block, tmp_block);
- let insns = fun.blocks[tmp_block.0].insns.drain(..).collect::<Vec<_>>();
+ let insns = std::mem::take(&mut fun.blocks[tmp_block.0].insns);
fun.blocks[block.0].insns.extend(insns);
fun.make_equal_to(send_insn_id, replacement);
fun.remove_block(tmp_block);
@@ -2453,7 +2453,7 @@ impl Function {
if let Some(replacement) = (props.inline)(fun, tmp_block, recv, &args, state) {
// Copy contents of tmp_block to block
assert_ne!(block, tmp_block);
- let insns = fun.blocks[tmp_block.0].insns.drain(..).collect::<Vec<_>>();
+ let insns = std::mem::take(&mut fun.blocks[tmp_block.0].insns);
fun.blocks[block.0].insns.extend(insns);
fun.make_equal_to(send_insn_id, replacement);
fun.remove_block(tmp_block);