From 8baf170e936525bbda4838db5bbfb138cf724229 Mon Sep 17 00:00:00 2001 From: Alan Wu Date: Tue, 14 Oct 2025 14:21:59 -0400 Subject: [PATCH] ZJIT: `mem::take` instead of `drain` then `collect` Gets rid of one transient vec copy/allocation. --- zjit/src/hir.rs | 4 ++-- 1 file 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::>(); + 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::>(); + 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);