WIP: Try removing the hashmap

This commit is contained in:
Gwilym Kuiper 2022-02-24 20:13:03 +00:00
parent aa7823232b
commit 7b43debd3e
5 changed files with 11 additions and 131 deletions

40
agb/Cargo.lock generated
View file

@ -24,8 +24,6 @@ dependencies = [
"agb_sound_converter", "agb_sound_converter",
"bare-metal", "bare-metal",
"bitflags", "bitflags",
"hashbrown",
"rustc-hash",
] ]
[[package]] [[package]]
@ -67,17 +65,6 @@ dependencies = [
"syn", "syn",
] ]
[[package]]
name = "ahash"
version = "0.7.6"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "fcb51a0695d8f838b1ee009b3fbf66bda078cd64590202a864a8f3e8c4315c47"
dependencies = [
"getrandom",
"once_cell",
"version_check",
]
[[package]] [[package]]
name = "autocfg" name = "autocfg"
version = "1.1.0" version = "1.1.0"
@ -149,15 +136,6 @@ dependencies = [
"wasi", "wasi",
] ]
[[package]]
name = "hashbrown"
version = "0.12.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "8c21d40587b92fa6a6c6e3c1bdbf87d75511db5672f9c93175574b3a00df1758"
dependencies = [
"ahash",
]
[[package]] [[package]]
name = "hound" name = "hound"
version = "3.4.0" version = "3.4.0"
@ -235,12 +213,6 @@ dependencies = [
"autocfg", "autocfg",
] ]
[[package]]
name = "once_cell"
version = "1.10.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "87f3e037eac156d1775da914196f0f37741a274155e34a0b7e427c35d2a2ecb9"
[[package]] [[package]]
name = "png" name = "png"
version = "0.17.5" version = "0.17.5"
@ -307,12 +279,6 @@ dependencies = [
"getrandom", "getrandom",
] ]
[[package]]
name = "rustc-hash"
version = "1.1.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "08d43f7aa6b08d49f382cde6a7982047c3426db949b1424bc4b7ec9ae12c6ce2"
[[package]] [[package]]
name = "serde" name = "serde"
version = "1.0.136" version = "1.0.136"
@ -359,12 +325,6 @@ version = "0.2.2"
source = "registry+https://github.com/rust-lang/crates.io-index" source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "8ccb82d61f80a663efe1f787a51b16b5a51e3314d6ac365b08639f52387b33f3" checksum = "8ccb82d61f80a663efe1f787a51b16b5a51e3314d6ac365b08639f52387b33f3"
[[package]]
name = "version_check"
version = "0.9.4"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "49874b5167b65d7193b8aba1567f5c7d93d001cafc34600cee003eda787e483f"
[[package]] [[package]]
name = "wasi" name = "wasi"
version = "0.10.2+wasi-snapshot-preview1" version = "0.10.2+wasi-snapshot-preview1"

View file

@ -21,13 +21,11 @@ freq18157 = ["agb_sound_converter/freq18157"]
[dependencies] [dependencies]
bitflags = "1.3" bitflags = "1.3"
hashbrown = "0.12.0"
agb_image_converter = { version = "0.6.0", path = "../agb-image-converter" } agb_image_converter = { version = "0.6.0", path = "../agb-image-converter" }
agb_sound_converter = { version = "0.1.0", path = "../agb-sound-converter" } agb_sound_converter = { version = "0.1.0", path = "../agb-sound-converter" }
agb_macros = { version = "0.1.0", path = "../agb-macros" } agb_macros = { version = "0.1.0", path = "../agb-macros" }
agb_fixnum = { version = "0.1.0", path = "../agb-fixnum" } agb_fixnum = { version = "0.1.0", path = "../agb-fixnum" }
bare-metal = "1.0" bare-metal = "1.0"
rustc-hash = { version = "1.0", default-features = false }
[package.metadata.docs.rs] [package.metadata.docs.rs]
default-target = "thumbv6m-none-eabi" default-target = "thumbv6m-none-eabi"

View file

@ -10,12 +10,12 @@ const PALETTE_BACKGROUND: MemoryMapped1DArray<u16, 256> =
unsafe { MemoryMapped1DArray::new(0x0500_0000) }; unsafe { MemoryMapped1DArray::new(0x0500_0000) };
#[cfg(debug_assertions)] #[cfg(debug_assertions)]
const unsafe fn debug_unreachable_unchecked() -> ! { unsafe fn debug_unreachable_unchecked(message: &'static str) -> ! {
unreachable!(); unreachable!(message);
} }
#[cfg(not(debug_assertions))] #[cfg(not(debug_assertions))]
const unsafe fn debug_unreachable_unchecked() -> ! { const unsafe fn debug_unreachable_unchecked(message: &'static str) -> ! {
use core::hint::unreachable_unchecked; use core::hint::unreachable_unchecked;
unreachable_unchecked(); unreachable_unchecked();
@ -88,7 +88,7 @@ impl VRamState {
if let VRamState::ReferenceCounted(count, _) = self { if let VRamState::ReferenceCounted(count, _) = self {
*count += 1; *count += 1;
} else { } else {
unsafe { debug_unreachable_unchecked() }; unsafe { debug_unreachable_unchecked("Cannot increase reference count of free item") };
} }
} }
@ -97,7 +97,7 @@ impl VRamState {
*count -= 1; *count -= 1;
(*count, *tile_ref) (*count, *tile_ref)
} else { } else {
unsafe { debug_unreachable_unchecked() }; unsafe { debug_unreachable_unchecked("Cannot decrease reference count of free item") };
} }
} }
} }
@ -151,7 +151,7 @@ impl<'a> VRamManager<'a> {
self.tilesets[ptr] = tileset; self.tilesets[ptr] = tileset;
ptr ptr
} }
_ => unsafe { debug_unreachable_unchecked() }, _ => unsafe { debug_unreachable_unchecked("Free pointer cannot point to data") },
} }
} else { } else {
self.tilesets.push(tileset); self.tilesets.push(tileset);
@ -183,7 +183,7 @@ impl<'a> VRamManager<'a> {
self.free_pointer = Some(tile_set_ref.id as usize); self.free_pointer = Some(tile_set_ref.id as usize);
} }
_ => unsafe { debug_unreachable_unchecked() }, _ => panic!("Must remove valid tileset"),
} }
} }
@ -206,7 +206,9 @@ impl<'a> VRamManager<'a> {
self.vram_free_pointer = Some(next_free as usize); self.vram_free_pointer = Some(next_free as usize);
} }
} }
VRamState::ReferenceCounted(_, _) => unsafe { debug_unreachable_unchecked() }, VRamState::ReferenceCounted(_, _) => unsafe {
debug_unreachable_unchecked("Free pointer must point to free item")
},
} }
self.references[ptr] = VRamState::ReferenceCounted(1, tile_ref); self.references[ptr] = VRamState::ReferenceCounted(1, tile_ref);
@ -228,7 +230,7 @@ impl<'a> VRamManager<'a> {
let tile_offset = (tile as usize) * data.format.tile_size() / 4; let tile_offset = (tile as usize) * data.format.tile_size() / 4;
&data.tiles[tile_offset..(tile_offset + data.format.tile_size() / 4)] &data.tiles[tile_offset..(tile_offset + data.format.tile_size() / 4)]
} else { } else {
unsafe { debug_unreachable_unchecked() }; panic!("Tile set ref must point to existing tile set");
}; };
let tile_size_in_half_words = TileFormat::FourBpp.tile_size() / 2; let tile_size_in_half_words = TileFormat::FourBpp.tile_size() / 2;

View file

@ -24,8 +24,6 @@ dependencies = [
"agb_sound_converter", "agb_sound_converter",
"bare-metal", "bare-metal",
"bitflags", "bitflags",
"hashbrown",
"rustc-hash",
] ]
[[package]] [[package]]
@ -67,17 +65,6 @@ dependencies = [
"syn", "syn",
] ]
[[package]]
name = "ahash"
version = "0.7.6"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "fcb51a0695d8f838b1ee009b3fbf66bda078cd64590202a864a8f3e8c4315c47"
dependencies = [
"getrandom",
"once_cell",
"version_check",
]
[[package]] [[package]]
name = "autocfg" name = "autocfg"
version = "1.1.0" version = "1.1.0"
@ -149,15 +136,6 @@ dependencies = [
"wasi", "wasi",
] ]
[[package]]
name = "hashbrown"
version = "0.12.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "8c21d40587b92fa6a6c6e3c1bdbf87d75511db5672f9c93175574b3a00df1758"
dependencies = [
"ahash",
]
[[package]] [[package]]
name = "hound" name = "hound"
version = "3.4.0" version = "3.4.0"
@ -241,12 +219,6 @@ dependencies = [
"autocfg", "autocfg",
] ]
[[package]]
name = "once_cell"
version = "1.10.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "87f3e037eac156d1775da914196f0f37741a274155e34a0b7e427c35d2a2ecb9"
[[package]] [[package]]
name = "png" name = "png"
version = "0.17.5" version = "0.17.5"
@ -313,12 +285,6 @@ dependencies = [
"getrandom", "getrandom",
] ]
[[package]]
name = "rustc-hash"
version = "1.1.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "08d43f7aa6b08d49f382cde6a7982047c3426db949b1424bc4b7ec9ae12c6ce2"
[[package]] [[package]]
name = "ryu" name = "ryu"
version = "1.0.9" version = "1.0.9"
@ -391,12 +357,6 @@ version = "0.2.2"
source = "registry+https://github.com/rust-lang/crates.io-index" source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "8ccb82d61f80a663efe1f787a51b16b5a51e3314d6ac365b08639f52387b33f3" checksum = "8ccb82d61f80a663efe1f787a51b16b5a51e3314d6ac365b08639f52387b33f3"
[[package]]
name = "version_check"
version = "0.9.4"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "49874b5167b65d7193b8aba1567f5c7d93d001cafc34600cee003eda787e483f"
[[package]] [[package]]
name = "wasi" name = "wasi"
version = "0.10.2+wasi-snapshot-preview1" version = "0.10.2+wasi-snapshot-preview1"

View file

@ -24,8 +24,6 @@ dependencies = [
"agb_sound_converter", "agb_sound_converter",
"bare-metal", "bare-metal",
"bitflags", "bitflags",
"hashbrown",
"rustc-hash",
] ]
[[package]] [[package]]
@ -67,17 +65,6 @@ dependencies = [
"syn", "syn",
] ]
[[package]]
name = "ahash"
version = "0.7.6"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "fcb51a0695d8f838b1ee009b3fbf66bda078cd64590202a864a8f3e8c4315c47"
dependencies = [
"getrandom",
"once_cell",
"version_check",
]
[[package]] [[package]]
name = "autocfg" name = "autocfg"
version = "1.1.0" version = "1.1.0"
@ -173,15 +160,6 @@ dependencies = [
"wasi", "wasi",
] ]
[[package]]
name = "hashbrown"
version = "0.12.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "8c21d40587b92fa6a6c6e3c1bdbf87d75511db5672f9c93175574b3a00df1758"
dependencies = [
"ahash",
]
[[package]] [[package]]
name = "hound" name = "hound"
version = "3.4.0" version = "3.4.0"
@ -271,12 +249,6 @@ dependencies = [
"autocfg", "autocfg",
] ]
[[package]]
name = "once_cell"
version = "1.10.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "87f3e037eac156d1775da914196f0f37741a274155e34a0b7e427c35d2a2ecb9"
[[package]] [[package]]
name = "png" name = "png"
version = "0.17.5" version = "0.17.5"
@ -349,12 +321,6 @@ version = "1.0.3"
source = "registry+https://github.com/rust-lang/crates.io-index" source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "3582f63211428f83597b51b2ddb88e2a91a9d52d12831f9d08f5e624e8977422" checksum = "3582f63211428f83597b51b2ddb88e2a91a9d52d12831f9d08f5e624e8977422"
[[package]]
name = "rustc-hash"
version = "1.1.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "08d43f7aa6b08d49f382cde6a7982047c3426db949b1424bc4b7ec9ae12c6ce2"
[[package]] [[package]]
name = "serde" name = "serde"
version = "1.0.136" version = "1.0.136"
@ -428,12 +394,6 @@ version = "0.2.2"
source = "registry+https://github.com/rust-lang/crates.io-index" source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "8ccb82d61f80a663efe1f787a51b16b5a51e3314d6ac365b08639f52387b33f3" checksum = "8ccb82d61f80a663efe1f787a51b16b5a51e3314d6ac365b08639f52387b33f3"
[[package]]
name = "version_check"
version = "0.9.4"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "49874b5167b65d7193b8aba1567f5c7d93d001cafc34600cee003eda787e483f"
[[package]] [[package]]
name = "wasi" name = "wasi"
version = "0.10.2+wasi-snapshot-preview1" version = "0.10.2+wasi-snapshot-preview1"