add invariant checks

This commit is contained in:
Yury Delendik
2019-09-12 16:16:32 -05:00
committed by Dan Gohman
parent 805fbb4d2a
commit 042c87763e
5 changed files with 27 additions and 11 deletions

View File

@@ -29,6 +29,12 @@ impl SignatureRegistry {
match self.signature_hash.entry(sig.clone()) {
hash_map::Entry::Occupied(entry) => *entry.get(),
hash_map::Entry::Vacant(entry) => {
// Keep `signature_hash` len under 2**32 -- VMSharedSignatureIndex::new(std::u32::MAX)
// is reserved for VMSharedSignatureIndex::default().
debug_assert!(
len < std::u32::MAX as usize,
"Invariant check: signature_hash.len() < std::u32::MAX"
);
let sig_id = VMSharedSignatureIndex::new(u32::try_from(len).unwrap());
entry.insert(sig_id);
sig_id