From 7bc2c258a6c52276a93eb7461484683fc9a10e12 Mon Sep 17 00:00:00 2001 From: ngundotra Date: Wed, 3 May 2023 12:02:57 -0400 Subject: [PATCH] optimize emit macro to reduce cloning --- lang/attribute/event/src/lib.rs | 14 +++++++------- tests/events/programs/events/src/lib.rs | 2 +- 2 files changed, 8 insertions(+), 8 deletions(-) diff --git a/lang/attribute/event/src/lib.rs b/lang/attribute/event/src/lib.rs index 1cae4d1678..68f7e8c46c 100644 --- a/lang/attribute/event/src/lib.rs +++ b/lang/attribute/event/src/lib.rs @@ -94,19 +94,19 @@ pub fn emit_cpi(input: proc_macro::TokenStream) -> proc_macro::TokenStream { let second = &elems[1]; proc_macro::TokenStream::from(quote! { - let program_info: &anchor_lang::solana_program::account_info::AccountInfo = &#first; + let program_info: anchor_lang::solana_program::account_info::AccountInfo = #first; let __disc = crate::event::EVENT_IX_TAG_LE; let __inner_data: Vec = anchor_lang::Event::data(&#second); - let ix_data: Vec = __disc.into_iter().chain(__inner_data.into_iter()).collect(); + let __ix_data: Vec = __disc.into_iter().chain(__inner_data.into_iter()).collect(); - let ix = anchor_lang::solana_program::instruction::Instruction::new_with_bytes( - program_info.key.clone(), - ix_data.as_ref(), + let __ix = anchor_lang::solana_program::instruction::Instruction::new_with_bytes( + *program_info.key, + __ix_data.as_ref(), vec![anchor_lang::solana_program::instruction::AccountMeta::new_readonly(*program_info.key, false)], ); - anchor_lang::solana_program::program::invoke(&ix, &[program_info.clone()]) - .map_err(|e: anchor_lang::solana_program::program_error::ProgramError| crate::Error::from(e))?; + anchor_lang::solana_program::program::invoke(&__ix, &[program_info]) + .map_err(anchor_lang::error::Error::from)?; }) } diff --git a/tests/events/programs/events/src/lib.rs b/tests/events/programs/events/src/lib.rs index 083e4d6840..1dac02b881 100644 --- a/tests/events/programs/events/src/lib.rs +++ b/tests/events/programs/events/src/lib.rs @@ -26,7 +26,7 @@ pub mod events { pub fn test_event_cpi(ctx: Context) -> Result<()> { emit_cpi!(( - &ctx.accounts.program.to_account_info(), + ctx.accounts.program.to_account_info(), MyOtherEvent { data: 7, label: "cpi".to_string(),