From 35b6ea61791dfa31895c645646fa191737f2b889 Mon Sep 17 00:00:00 2001 From: Matthias Endler Date: Sun, 8 Oct 2017 17:26:45 +0200 Subject: [PATCH] Switch back memory from vector to raw byte slice --- src/memory.rs | 13 +++++++++---- 1 file changed, 9 insertions(+), 4 deletions(-) diff --git a/src/memory.rs b/src/memory.rs index 5a0b45d..21d3402 100644 --- a/src/memory.rs +++ b/src/memory.rs @@ -25,7 +25,6 @@ // ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE // POSSIBILITY OF SUCH DAMAGE. -use std::iter::repeat; use address::{Address, AddressDiff}; // JAM: We can probably come up with a better way to represent address ranges. @@ -50,14 +49,20 @@ pub const IRQ_INTERRUPT_VECTOR_HI: Address = Address(0xFFFF); const MEMORY_SIZE: usize = (ADDR_HI_BARE - ADDR_LO_BARE) as usize + 1usize; // FIXME: Should this use indirection for `bytes`? -#[derive(Clone)] +#[derive(Copy)] pub struct Memory { - bytes: Vec, + bytes: [u8; MEMORY_SIZE], +} + +impl Clone for Memory { + fn clone(&self) -> Self { + *self + } } impl Memory { pub fn new() -> Memory { - Memory { bytes: repeat(0).take(MEMORY_SIZE).collect() } + Memory { bytes: [0; MEMORY_SIZE] } } pub fn get_byte(&self, address: Address) -> u8 {