Optimize cartridge Bus reads
The `if let Some(gpio) = &self.gpio` causes a memory read of `self.gpio` for every Bus::read/write_16. It is better to reverse the order since `is_gpio_access` does not generate and memory reads and thus less costly. Former-commit-id: bcce7d9c3a2b159a7f6b291d7b08ccf9c4d0db14 Former-commit-id: 69c12db503c9e612faa7cd8a57f6d862694c8370
This commit is contained in:
parent
8dee829e26
commit
bf601404fa
|
@ -85,8 +85,8 @@ impl Bus for Cartridge {
|
||||||
}
|
}
|
||||||
|
|
||||||
fn read_16(&self, addr: u32) -> u16 {
|
fn read_16(&self, addr: u32) -> u16 {
|
||||||
if let Some(gpio) = &self.gpio {
|
if is_gpio_access(addr) {
|
||||||
if is_gpio_access(addr) {
|
if let Some(gpio) = &self.gpio {
|
||||||
if !(gpio.is_readable()) {
|
if !(gpio.is_readable()) {
|
||||||
warn!("trying to read GPIO when reads are not allowed");
|
warn!("trying to read GPIO when reads are not allowed");
|
||||||
}
|
}
|
||||||
|
@ -116,8 +116,8 @@ impl Bus for Cartridge {
|
||||||
}
|
}
|
||||||
|
|
||||||
fn write_16(&mut self, addr: u32, value: u16) {
|
fn write_16(&mut self, addr: u32, value: u16) {
|
||||||
if let Some(gpio) = &mut self.gpio {
|
if is_gpio_access(addr) {
|
||||||
if is_gpio_access(addr) {
|
if let Some(gpio) = &mut self.gpio {
|
||||||
gpio.write(addr & 0x1ff_ffff, value);
|
gpio.write(addr & 0x1ff_ffff, value);
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
Reference in a new issue