Skip to content

Commit 34b89f2

Browse files
manchangfengxuPlucky923
authored andcommitted
refactor(core)!: return register usage by reference to avoid clones
Change InstructionDetail::registers_read and registers_written return type from Vec to &[u32]. Update implementations: BasicInstructionDetail now returns &self.regs_read / &self.regs_write. RiscVInstructionDetail now returns &self.regs_read / &self.regs_write. Signed-off-by: manchangfengxu <manchangfengxu@openatom.club>
1 parent 61fb16a commit 34b89f2

File tree

2 files changed

+10
-10
lines changed

2 files changed

+10
-10
lines changed

robustone-core/src/instruction.rs

Lines changed: 6 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -261,10 +261,10 @@ pub trait InstructionDetail: std::fmt::Debug + Send + Sync {
261261
fn architecture_name(&self) -> &'static str;
262262

263263
/// Returns a list of register identifiers that are read by this instruction.
264-
fn registers_read(&self) -> Vec<u32>;
264+
fn registers_read(&self) -> &[u32];
265265

266266
/// Returns a list of register identifiers that are written by this instruction.
267-
fn registers_written(&self) -> Vec<u32>;
267+
fn registers_written(&self) -> &[u32];
268268
}
269269

270270
/// A generic implementation of `InstructionDetail` for simple use cases.
@@ -335,12 +335,12 @@ impl InstructionDetail for BasicInstructionDetail {
335335
self.architecture
336336
}
337337

338-
fn registers_read(&self) -> Vec<u32> {
339-
self.regs_read.clone()
338+
fn registers_read(&self) -> &[u32] {
339+
&self.regs_read
340340
}
341341

342-
fn registers_written(&self) -> Vec<u32> {
343-
self.regs_write.clone()
342+
fn registers_written(&self) -> &[u32] {
343+
&self.regs_write
344344
}
345345
}
346346

robustone-core/src/riscv/arch.rs

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -157,12 +157,12 @@ impl crate::instruction::InstructionDetail for RiscVInstructionDetail {
157157
"riscv"
158158
}
159159

160-
fn registers_read(&self) -> Vec<u32> {
161-
self.regs_read.clone()
160+
fn registers_read(&self) -> &[u32] {
161+
&self.regs_read
162162
}
163163

164-
fn registers_written(&self) -> Vec<u32> {
165-
self.regs_write.clone()
164+
fn registers_written(&self) -> &[u32] {
165+
&self.regs_write
166166
}
167167
}
168168

0 commit comments

Comments
 (0)