Implementation of the UM-32 "Universal Machine" as described by the Cult of the Bound Variable

use `assert!` instead of `debug_assert!`

This seems to have no impact on the sandmark speed.

tjh 890c4632 dcf39087

+12 -8
+12 -8
src/main.rs
··· 361 362 /// Loads the value from the specified register. 363 fn load_register(&self, index: Register) -> Platter { 364 - debug_assert!(index < 8, "register index out of bounds"); 365 self.registers[index as usize] 366 } 367 368 /// Saves a value to the specified register. 369 fn save_register(&mut self, index: Register, value: Platter) { 370 - debug_assert!(index < 8, "register index out of bounds"); 371 self.registers[index as usize] = value; 372 } 373 374 fn load_memory(&self, block: Platter, offset: Platter) -> Platter { 375 - debug_assert!((block as usize) < self.memory.len()); 376 - debug_assert!((offset as usize) < self.memory[block as usize].len()); 377 self.memory[block as usize][offset as usize] 378 } 379 380 fn store_memory(&mut self, block: Platter, offset: Platter, value: Platter) { 381 - debug_assert!((block as usize) < self.memory.len()); 382 - debug_assert!((offset as usize) < self.memory[block as usize].len()); 383 self.memory[block as usize][offset as usize] = value; 384 } 385 386 fn duplicate_memory(&mut self, block: Platter) -> &[Platter] { 387 - debug_assert!((block as usize) < self.memory.len()); 388 self.memory[0] = self.memory[block as usize].clone(); 389 &self.memory[0] 390 } ··· 407 } 408 409 fn free_memory(&mut self, block: Platter) { 410 - debug_assert!((block as usize) < self.memory.len()); 411 #[cfg(feature = "reclaim-memory")] 412 { 413 self.free_blocks.push(block);
··· 361 362 /// Loads the value from the specified register. 363 fn load_register(&self, index: Register) -> Platter { 364 + assert!(index < 8, "register index out of bounds"); 365 self.registers[index as usize] 366 } 367 368 /// Saves a value to the specified register. 369 fn save_register(&mut self, index: Register, value: Platter) { 370 + assert!(index < 8, "register index out of bounds"); 371 self.registers[index as usize] = value; 372 } 373 374 fn load_memory(&self, block: Platter, offset: Platter) -> Platter { 375 + assert!( 376 + (block as usize) < self.memory.len() 377 + && (offset as usize) < self.memory[block as usize].len() 378 + ); 379 self.memory[block as usize][offset as usize] 380 } 381 382 fn store_memory(&mut self, block: Platter, offset: Platter, value: Platter) { 383 + assert!( 384 + (block as usize) < self.memory.len() 385 + && (offset as usize) < self.memory[block as usize].len() 386 + ); 387 self.memory[block as usize][offset as usize] = value; 388 } 389 390 fn duplicate_memory(&mut self, block: Platter) -> &[Platter] { 391 + assert!((block as usize) < self.memory.len()); 392 self.memory[0] = self.memory[block as usize].clone(); 393 &self.memory[0] 394 } ··· 411 } 412 413 fn free_memory(&mut self, block: Platter) { 414 + assert!((block as usize) < self.memory.len()); 415 #[cfg(feature = "reclaim-memory")] 416 { 417 self.free_blocks.push(block);